21
1 Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL Hochschule Düsseldorf Düsseldorf University of Applied Sciences Fachbereich Elektrotechnik und Informatik Ausarbeitung Thema: VHDL von Volkan Ona [753218] Vorlesung: Technische Informatik Bei Prof. Dr.-Ing. Ulrich Schaarschmidt Duisburg, 16.01.2019

Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

1

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

Hochschule Düsseldorf

Düsseldorf University of Applied Sciences Fachbereich Elektrotechnik und Informatik

Ausarbeitung Thema:

VHDL

von

Volkan Ona [753218]

Vorlesung: Technische Informatik

Bei Prof. Dr.-Ing. Ulrich Schaarschmidt

Duisburg, 16.01.2019

Page 2: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

2

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

Inhaltsverzeichnis

Abbildungsverzeichnis ................................................................................................. 3

Tabellenverzeichnis ..................................................................................................... 3

1 Einleitung ............................................................................................................... 4

2 Designmethodik im Überblick ................................................................................ 5

3 Grundstruktur eines VHDL-Moduls ........................................................................ 8

3.1 Bibliotheken ............................................................................................... 8

3.2 Entity und Architecture ............................................................................ 10

3.3 Bezeichner .............................................................................................. 12

4 Grundlegende Datentypen .................................................................................. 13

4.1 Integer ..................................................................................................... 13

4.2 Std_logic ................................................................................................. 13

4.3 Std_logic_vector ...................................................................................... 13

5 Operatoren .......................................................................................................... 13

6 Signale ................................................................................................................ 14

7 Prozesse ............................................................................................................. 15

7.1 Ausführung von Prozessen ..................................................................... 17

7.2 Variablen ................................................................................................. 17

7.3 Wichtige Sprachkonstrukte in VHDL-Prozessen ..................................... 18

7.3.1 If-Anweisung ..................................................................................... 18

7.3.2 Case-Anweisung ............................................................................... 19

7.3.3 For-Schleife ...................................................................................... 19

7.3.4 While-Schleife ................................................................................... 19

8 Quellen ................................................................................................................ 21

Page 3: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

3

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

Abbildungsverzeichnis

Abbildung 1: Waveform Viewer .............................................................................. 6

Abbildung 2: VHDL-basierter Entwurfsprozess ...................................................... 7

Tabellenverzeichnis

Tabelle 1: Übersicht über reservierte Wörter der VHDL ....................................... 12

Page 4: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

4

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

1 Einleitung

Das Kürzel VHDL steht für:

V VHSIC Very High Speed Integrated Circuit

H Hardware

D Description

L Language

VHDL ist eine Hardwarebeschreibungssprache und wurde in den Jahren 1970-

1980 im Rahmen von US-Verteidigungsprojekten in den USA entwickelt und als

IEEE Standard 1076 im Jahre 1987 veröffentlicht worden. Diese

Hardwarebeschreibungssprache gilt heute als internationaler Standard in allen

wichtigen Industrieländern zur Beschreibung, Synthese und Simulation digitaler

Schaltungen. VHDL wurde ursprünglich für die Beschreibung und Simulation

komplexer digitaler Schaltungen entwickelt, um eine einheitliche Dokumentation

für alle digitalen Schaltungen zu ermöglichen. Doch mittlerweile wird VHDL im

auch für die Synthese digitaler Systeme verwendet. Seit Anfang der 90er Jahre

wird VHDL weltweit eingesetzt und ist die meist benutzte

Hardwarebeschreibungssprache.

VHDL ermöglicht es, die Funktion einer digitalen Schaltung, ähnlich wie ein

Programm für einen Rechner, in textueller Form zu beschreiben. Im Gegensatz zu

den üblichen Software-Programmiersprachen wie C/C++ oder Java, beinhalten die

Hardwarebeschreibungssprachen spezielle Sprachelemente für die Beschreibung

digitaler Hardware. Heute finden in der Praxis zwei Beschreibungssprachen eine

Nutzung: Verilog und VHDL (Very High Speed Integrated Circuits Hardware

Description Language). VHDL besitzt jedoch gegenüber Verilog einen größeren

Funktionsumfang und wird deswegen öfters als bevorzugte Sprache zur

Beschreibung digitaler Systeme eingesetzt.

Page 5: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

5

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

2 Designmethodik im Überblick

Zu jeder HDL-basierten Beschreibung sind eine oder mehrere VHDL Dateien

nötig, welche die Funktion der späteren digitalen Hardware beschreiben. Wie bei

der Erstellung von Software handelt es sich um Textdateien, somit kann ein

Mensch diese Dateien lesen. Doch nicht jeder syntaktisch richtige VHDL-Code

kann auch in Hardware überführt werden. VHDL bietet zum Beispiel

Sprachkonstrukte um Dateien einzulesen oder Texte auszugeben. Es wäre

natürlich nicht möglich diese Sprachelemente in Hardwaremodule zu übersetzen.

An dieser Stelle würde der Compiler, welcher aus den VHDL-Beschreibungen

Hardware erzeugt, eingreifen und entsprechende Warn- bzw. Fehlermeldungen

ausgeben. Der Übersetzungsprozess wird als Synthese bezeichnet, deswegen

spricht man auch von „synthesefähigem“ oder „synthetisierbarem“ VHDL-Code.

Die nicht-synthetisierbaren Sprachelemente werden in sogenannten Testbenches

eingesetzt. Eine Testbench ist ein VHDL-Code, der zur Kontrolle der Funktion des

synthetisierten Codes geschrieben wurde. Die VHDL-Dateien werden mithilfe

eines sogenannten Simulators auf einem PC ausgeführt. Wobei mithilfe des

Simulators man den zeitlichen Verlauf aller Signale visualisieren kann oder in

Dateien auf dem PC ablegen kann. Zur Simulation werden die zu testenden

VHDL-Module in den Testbench-Code eingefügt. Der Testbench-Code legt

verschiedene Eingangssignale an die Eingänge der zu prüfende Komponente an.

Das Konzept einer VHDL-Testbench, in die eine zu prüfende VHDL-Komponente

eingesetzt wird, ist in Abbildung 1 dargestellt. Mithilfe des Waveform-Viewers kann

man den zeitlichen Verlauf von Eingangs- und Ausgangssignalen als auch von

internen Signalen einer VHDL-Beschreibung während der Simulation visualisieren.

Die grafische Darstellung der Signalverläufe gibt wichtige Hinweise um mögliche

Fehler zu erkennen und ist somit ein wichtiges Handwerkszeug bei der

Entwicklung. Als Beispiel für die Ausgabe eines Waveform Viewers dient die

Abbildung 1. In diesem Beispiel wird das Ergebnis der UND- Verknüpfung

von a und b dem Signal q zugewiesen.

Page 6: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

6

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

Abbildung 1: Waveform Viewer

Die Abbildung 2 zeigt den Ablauf eines VHDL-basierten Entwurfsprozesses: Ganz

oben sind VHDL-Dateien, welche die gewünschte Funktion der digitalen Hardware

beschreiben. Weiterhin sieht man die Testbench-Dateien. Durch die Simulation

der VHDL-Hardware-Module in Kombination mit den Testbench-Dateien wird die

korrekte Funktion der Hardware-Beschreibung kontrolliert und gegebenenfalls

entstehende Fehler beseitigt. Hiernach kann die Synthese, also die Überführung

der VHDL-Hardware-Beschreibungen in digitale Hardware, durchgeführt werden.

Falls erforderlich, ist es möglich nach diesem Schritt noch weitere Änderungen am

VHDL-Code vorzunehmen, um beispielsweise den benötigten

Realisierungsaufwand zu reduzieren oder das Verhalten des Systems zu

verbessern.

Page 7: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

7

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

Abbildung 2: VHDL-basierter Entwurfsprozess

Page 8: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

8

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

3 Grundstruktur eines VHDL-Moduls

Ein VHDL-Modul stellt meistens einen Teil eines größeren Systems dar und wird

wie bereits erklärt, in Form einer Textdatei beschrieben. Im Folgenden werden

einige grundlegende Konzepte und Sprachelemente vorgestellt, die bei einem

VHDL-basierten Hardwareentwurf zur Verwendung kommen.

3.1 Bibliotheken

Zunächst werden VHDL-Beschreibungen vor ihrer Verwendung (in einer

Simulation oder für die Synthese) kompiliert. Hiernach wird eine binäre Datei

erzeugt, diese Datei wird in einer sogenannten Bibliothek abgelegt und kann

anschließend mit anderen kompilierten VHDL-Beschreibungen zu einer

Simulationsdatei bzw. der zu realisierenden Hardware zusammengefügt werden.

Es gibt drei Bibliotheken, die besonders wichtig sind: work, std und ieee.

Der Bibliotheksname work ist ein Synonym für die jeweils aktuelle

Arbeitsbibliothek, wo die erzeigten Dateien aus dem Übersetzungsvorgang

abgelegt werden. Da work ein vordefinierter symbolischer Name für die aktuelle

Arbeitsbibliothek ist, sollte work nicht als Bibliotheksname verwendet werden.

Sonst können Zweideutigkeiten entstehen: Es kann sich um die aktuelle

Arbeitsbibliothek (welche einen beliebigen Namen besitzen kann) oder um die

Bibliothek mit dem Namen work handeln.

Die Bibliothek std enthält einige grundlegende Sprachkonstrukte und Datentypen.

Außerdem besitzt die Bibliothek std auch Funktionen zur Ein- und Ausgabe.

Die Bibliothek ieee enthält wichtige und oft verwendete Datentypen sowie viele

hilfreiche Funktionen. Einige Datentypen werden im Kapitel 4 angegeben.

Sollen Bibliotheken benutzt werden, die nicht bereits im VHDL-Standard

vordefiniert sind (dies ist für die Bibliotheken work und std der Fall), müssen sie

vor ihrer Verwendung mithilfe einer Library-Anweisung eingebunden werden.

Mithilfe einer Use-Anweisung wird ausgewählt, welche Teile der Bibliothek in dem

nachfolgenden VHDL Code verwendet werden sollen.

Page 9: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

9

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

Hinter dem Schlüsselwort use folgt zunächst die Angabe der gewünschten

Bibliothek und dann, durch Punkte abgetrennt, das zu verwendenden Paket der

Bibliothek sowie die Elemente aus dem jeweiligen Paket. Häufig ist eine explizite

Auswahl einzelner Elemente nicht erforderlich, sodass mit dem Schlüsselwort all

einfach alle vorhandenen Elemente ausgewählt werden. Hiernach stehen dann

alle Elemente des jeweiligen Bibliothekspakets zur Verfügung. Die folgenden

Beispiele verdeutlichen die Syntax zur Verwendung von Bibliotheken:

-- Die Bibliotheken std und work benòtigen keine Library-Anweisung

-- mithilfe einer Use-Anweisung werden die Teile der Bibliothek bekannt

-- gemacht, die in der nachfolgenden VHDL-Beschreibung verwendet

-- werden

-- Verwendung von Ein-/Ausgabe-Funktionen aus der Bibliothek std

use std.textio.all;

-- Verwendung von Funktionen eines eigenen Paketes, welches bereits

-- in der aktuellen Arbeitsbibliothek abgelegt (ùbersetzt) worden ist

use work.my_package.all;

-- Verwendung von Datentypen, Funktionen etc.

-- wie sie im IEEE-Standard 1164 festgelegt worden sind

library ieee;

use ieee.std_logic_1164.all;

Page 10: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

10

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

3.2 Entity und Architecture

Da VHDL-Beschreibungen einzelnen Hardware-Komponenten beschreiben,

müssen vor allem zwei Teile der Beschreibung erstellt werden:

1. Entity (Die äußeren Anschlüsse der Komponente): Hier werden die Eingangs-

und Ausgangssignale sowie die Wortbreite der Signale definiert.

2. Architecture (Die Funktion des Moduls): Hier wird die Funktion festgelegt, dh. es

wird beschrieben, wie die Ausgangssignale aus den Eingangssignalen berechnet

werden.

Somit wird die Beschreibung der „Sicht von außen“ als Entity und das

„Innenleben“ als Architecture bezeichnet. Diese beiden Teile eines VHDL-Moduls

werden in der Regel in einer gemeinsamen Textdatei abgelegt. Die Beschreibung

einer Entity beginnt mit dem VHDL-Schlüsselwort entity. Wobei der Name des

Moduls durch die Schlüsselwörter entity und is eingerahmt wird. Das Ende der

Entity-Beschreibung wird durch end gekennzeichnet. Zwischen dem Beginn und

dem Ende der Entity werden die von außen sichtbaren Eigenschaften des Moduls

definiert. Anschlüsse für Eingangs- und Ausgangssignale (Ports) werden in Form

einer Liste angegeben, welche mit dem Schlüsselwort port gekennzeichnet wird.

Der Inhalt der Portliste wird in Klammern angegeben, wobei die einzelnen

Listenelemente durch ein Semikolon voneinander getrennt werden. Für jeden Port

muss festgelegt werden, ob es sich um einen Eingang oder einen Ausgang

handelt, dies wird mit den Schlüsselwörtern in und out erreicht. Außerdem

bekommt jeder Port ein Name zugewiesen.

Weiterhin muss für die Anschlüsse ein Datentyp angegeben werden. Häufig wird

für die Beschreibungen einzelner Bits der Datentyp std_logic (gesprochen:

„standard logic“) benutzt, welcher durch die Norm IEEE 1164 definiert ist. Um

diesen Datentyp verwenden zu können, muss das Paket std_logic_1164 aus der

IEEE Bibliothek eingebunden werden. Als Beispiel dient ein UND-Gatter mit zwei

Eingängen. Die Entity kann in VHDL wie folgt realisiert werden:

Page 11: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

11

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

Groß- und Kleinschreibung wird in VHDL nicht unterschieden, dh. für alle

Sprachelemente kann sowohl Groß- und auch Kleinschrift benutzt werden. Die

Architecture-Beschreibung startet mit dem Schlüsselwort architecture, gefolgt von

einem Namen der Architecture. Welcher Entity zu welcher Architecture gehört,

wird direkt danach mit of festgelegt. Zwischen den Schlüsselwörtern begin und

end wird der VHDL-Code eingefügt. Als Beispiel dient ein UND-Gatter. Die

Architecture eines UND-Gatters ist recht übersichtlich. Die Zuweisung der UND-

Verknüpfung der beiden Eingänge an den Ausgangsport benötigt nur eine

Codezeile.

Der Name der Architecture ist behave. Zu der Architecture behave gehört (of) der

Entity end_2.

architecture behave of and_2 is

begin

q <= a and b;

end;

library ieee;

use ieee.std_logic_1164.all;

entity and_2 is

port (a : in std_logic;

b : in std_logic;

q : out std_logic);

end;

Page 12: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

12

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

3.3 Bezeichner

Namen von VHDL-Elementen wie zum Beispiel Entity-, Architecture-, oder

Signalnamen usw. beginnen immer mit einem Buchstaben. Anschließend sind

sowohl Buchstaben als auch Zahlen oder der Unterstrich „_“ erlaubt. Die

Verwendung von Schlüsselwörtern ist nicht erlaubt. Die Tabelle 1 gibt die VHDL-

Schlüsselwörter wieder.

Tabelle 1: Übersicht über reservierte Wörter der VHDL

Page 13: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

13

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

4 Grundlegende Datentypen

VHDL bietet verschiedene Datentypen an. Im Folgenden werden einige wichtige

Datentypen vorgestellt.

4.1 Integer

Der Datentyp integer umfasst ganze Zahlen im Bereich von −231 bis +231 −1, also

der Zahlenbereich, welcher mit einer 32 Bit breiten Zweierkomplementzahl

dargestellt werden kann.

4.2 Std_logic

Der Datentyp std_logic wird zur Beschreibung einzelner Bits eingesetzt. Dieser

Datentyp stellt ein einzelnes Bit dar, das die Werte 0 oder 1 annehmen kann.

Außerdem bietet der Datentyp std_logic darüber hinaus noch zusätzliche

Möglichkeiten. Zu erwähnen hierbei sind noch die Zustände Undefined (U),

Unbekannt (X) sowie „Don’t-Care“ (-).

4.3 Std_logic_vector

Viele digitale Systeme lassen sich übersichtlicher in VHDL beschreiben, wenn

man die Möglichkeit nutzt, einzelne Bits in Gruppen zusammen zu fassen. Hierzu

kann der Datentyp std_logic_vector (beziehungsweise std_ulogic_vector)

verwendet werden. Die Indexgrenzen des Vektors werden in Klammern

angegeben. Häufig wird hierbei eine absteigende Indizierung verwendet, zum

Beispiel (7 downto 0).

5 Operatoren

Es werden viele Operatoren von VHDL zur Verfügung gestellt, die man von

modernen Programmiersprachen kennt. Zu beachten ist, dass nicht alle

Operatoren sich mit allen Datentypen verwenden lassen.

Page 14: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

14

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

So ist es zum Beispiel nicht möglich zwei Werte vom Datentyp std_logic_vector zu

addieren. Im Folgenden sind einige oft verwendete Operatoren beispielhaft

genannt.

Logische VHDL-Operatoren: UND-Verknüpfung (and), ODER-Verknüpfung (or),

Nicht-UND-Verknüpfung (nand), Invertierung (not)

Arithmetische VHDL-Operatoren: Addition (+), Subtraktion (-), Multipliktion (*),

Division (/), Potenzierung (**)

VHDL-Operatoren für Vergleiche: Gleich (=), Ungleich (/=), Größer (>),

Kleiner (<)

6 Signale

Man kann die Ausgangswerte komplexerer Schaltungen normalerweise nicht

durch eine einfache Verknüpfung der Eingangssignale beschreiben. Oft müssen

zunächst Zwischenergebnisse berechnen werden und erst hiernach berechnet

man die Ausgangssignale. Diese Zwischenergebnisse sind letztlich nichts anderes

als digitale Signale, die nur innerhalb des Moduls verwendet werden und nicht von

außen sichtbar sind. Für die Definition solcher Signale steht in VHDL das

Schlüsselwort signal zur Verfügung. Hinter dem Schlüsselwort signal wird der

gewünschte Signalname und der Datentyp des Signals angegeben. Signale

werden im sogenannten Deklarationsteil der Architecture definiert, welcher sich

vor dem begin der Architecture befindet. Für Zuweisungen wird die

Zeichenkombination <= benutzt. Es folgt ein kurzes Beispiel:

Page 15: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

15

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

7 Prozesse

In VHDL wird Code innerhalb einer Architecture nicht sequenziell, Zeile für Zeile,

ausgeführt, sondern alle Zuweisungen sind zeitgleich aktiv. Der Fachbegriff hierfür

ist nebenläufige Zuweisung.

Doch man kann mit der Prozess-Anweisung (process-statement) sequentielles

Verhalten erzeugen. Der Prozess selbst ist nebenläufig, während die

Anweisungen innerhalb des Prozesses nacheinander (sequentiell) ausgeführt

werden. Mehrere Prozesse innerhalb einer Architektur können gleichzeitig aktiv

sein, sie sind zeitgleich aktiv. Über Signale werden Prozesse miteinander

verbunden. Der Prozess wird per Schlüsselwort process eingeleitet und mit end

process beendet. Anfang und Ende des Prozesses können mit einem Label

gekennzeichnet werden. Die Werte aller Signale innerhalb des Prozesses werden

erst am Ende des Prozesses aktualisiert.

architecture behave of and_or is

-- Hier ist der Deklarationsteil der Architecture

-- Signale werden hier definiert

-- und kònnen nach "begin" verwendet werden

signal z : std_logic;

begin

z <= a and b;

q <= z or c;

end;

Page 16: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

16

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

Prozesse besitzen unter anderem folgende Eigenschaften:

• Ein Prozess wird nebenläufig zu anderen Prozessen oder Signalzuweisungen

ausgeführt.

• VHDL-Code innerhalb eines Prozesses wird sequenziell ausgeführt.

• Innerhalb eines Prozesses können Konstrukte benutzt werden, wie sie aus

Software-Programmiersprachen bekannt sind, zum Beispiel If-Else-

Anweisungen oder Variablen, zur Beschreibung der Funktion des Prozesses

eingesetzt werden.

• Genauso wie nebenläufige Signalzuweisungen stellt ein Prozess ein Stück

Hardware dar, welches einen Teil der digitalen Gesamtfunktion des Systems

zur Verfügung stellt.

Im Folgenden wird die Struktur von Prozessen anhand eines Beispiels erläutert.

Es wird eine Schaltung beschrieben, welche die Signale bzw. Eingänge a, b und c

verknüpft und das Ergebnis q zuweist. Da q von a, b und c abhängt, muss eine

Neuberechnung von q immer dann erfolgen, wenn sich eines der Eingangssignale

ändert. Daher werden die drei Signale in die Sensitivitätsliste (s. Abschnitt 7.1)

aufgenommen. Zwischen begin und end wird die Prozessbeschreibung eingefügt,

die in diesem einfachen Beispiel nur eine einzelne Zuweisung umfasst.

Folgendes soll noch erwähnt werden:

architecture and_or_proc of and_or is

begin

my_process: process (a,b,c)

begin

q <= (a and b) or c;

end process;

end;

Page 17: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

17

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

Wird ein digitales Hardware-Modul ausschließlich mit Signalzuweisungen

beschrieben, benötigt man eine gute Vorstellung darüber, wie die Schaltung aus

digitalen Grundelementen (UND-, ODER-Gatter, usw.) aufgebaut sein soll. Doch

bei Verwendung von Prozessen steht eher die digitale Funktion im Vordergrund.

Wie diese Funktion später mithilfe der verfügbaren Grundelemente erzeugt wird,

ist von sekundärer Bedeutung. Deswegen lassen sich mithilfe von VHDL-

Prozessen auch komplexe digitale Funktionen elegant und übersichtlich

realisieren.

7.1 Ausführung von Prozessen

Prozesse besitzen eine Ähnlichkeit mit Funktionen höherer Programmiersprachen.

Doch es existiert zwischen den Funktionen einer Programmiersprache und den

VHDL-Prozessen ein wichtiger Unterschied. Eine Software-Funktion wird vom

Programmierer durch einen Funktionensaufruf im Code aktiviert und hiernach

einmalig ausgeführt. Dies gilt so für Prozesse nicht: Ein Prozess beschreibt eine

digitale Hardware-Komponente, die kontinuierlich aktiv ist. Ein Prozess beinhaltet

somit eine Endlosschleife, sodass der Code des Prozesses kontinuierlich

ausgeführt wird.

VHDL besitzt eine Sensitivitätsliste. In dieser Liste werden alle Signale

eingetragen, die innerhalb des jeweiligen Prozesses gelesen werden. Der Prozess

wird genau einmal durchlaufen, wenn sich eines der Signale der Sensitivitätsliste

ändert. Solange sich nicht wenigstens ein Signal ändert, ruht die Ausführung des

jeweiligen Prozesses. So wird in der Simulation einer VHDL-Beschreibung zu

einem beliebigen Zeitpunkt immer maximal ein Prozess aktiv sein. Die Aktivierung

eines Prozesses führt zu Signaländerungen, die dann wiederum die Ausführung

weiterer Prozesse aktiviert.

7.2 Variablen

Neben Signalen können in Prozessen auch Variablen eingesetzt werden. VHDL-

Variablen verhalten sich genauso, wie man sie zum Beispiel von der

Page 18: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

18

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

Programmiersprache C: Sie sind nur in dem Prozess sichtbar, indem sie definiert

wurden und behalten den zugewiesenen Wert auch dann, wenn der Prozess

unterbrochen wird.

Die Definition einer Variablen geschieht im Deklarationsteil des Prozesses (vor

begin) und werden mit dem Schlüsselwort variable eingeleitet. Für Zuweisungen

an Variablen wird die Zeichenkombination : = verwendet, während bei Signalen

die Zeichenkombination <= verwendet wird.

7.3 Wichtige Sprachkonstrukte in VHDL-Prozessen

Prozesse bieten wichtige Werkzeuge zur Beschreibung einer Hardware-

Komponente, die man aus den Programmiersprachen wie C/C++ oder Java kennt.

Im Folgenden werden einige oft verwendete Elemente zur Beschreibung von

Prozessen kurz vorgestellt.

7.3.1 If-Anweisung

Die If-Anweisung ermöglicht die bedingte Ausführung von Code innerhalb eines

VHDL-Prozesses. Zwischen den Schlüsselwörtern if und then wird eine

Bedingung, zum Beispiel ein Vergleich zweier Signale, eingefügt. Danach folgt der

Code, der ausgeführt werden soll, falls die Bedingung wahr ist. Beendet wird die

Anweisung mit end if;

proc_with_variable : process (a,b)

variable my_var : std_logic;

begin

my_var := a and b; -- Variablenzuweisung

q <= my_var; -- Signalzuweisung

end process;end process;

end;

Page 19: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

19

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

7.3.2 Case-Anweisung

Genau wie die If-Anweisung ermöglicht auch die Case-Anweisung die bedingte

Ausführung von Codeteilen. Nach dem Schlüsselwort case werden die

Bedingungen angegeben. Mit dem Schlüsselwort when wird angegeben, welcher

Code für ein konkretes Ergebnis ausgeführt werden soll. Mit der Verwendung von

„|“ können mehrere Werte angegeben werden, die zur Ausführung des

nachfolgenden Codes führen sollen. Ist keiner der angegebenen Werte identisch

mit dem Ergebnis des Ausdrucks, können Default-Anweisungen angegeben

werden, die in diesem Fall ausgeführt werden. Hierzu wird das Schlüsselwort

others angegeben.

7.3.3 For-Schleife

VHDL unterstützt auch Schleifen. Nach dem Schlüsselwort for wird ein Bezeichner

für die Schleifenvariable eingefügt. Nach dem Schlüsselwort in folgt der

Schleifenbereich. Der Bereich kann aufsteigend (zum Beispiel „1 to 9“) oder

absteigend (zum Beispiel „12 downto 0“) durchlaufen werden. Nach dem

Schleifenbereich folgt das Schlüsselwort loop, welches von den Anweisungen des

Schleifenkerns gefolgt wird. Die Schleife wird mit end loop beendet. Schleifen

können mit einem Namen (Label) bezeichnet werden.

7.3.4 While-Schleife

Neben For-Schleifen können in VHDL auch While-Schleifen eingesetzt werden.

Hierzu wird zunächst die nach dem Schlüsselwort while angegebene Bedingung

{loop_label:} for <Bezeichner> in <Bereich> loop

<Anweisungen>

end loop {loop_label};

Page 20: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

20

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

geprüft. Liefert die Bedingung den Wert true, wird der Schleifeninhalt ausgeführt

und hiernach die Bedingung erneut geprüft. Die While-Schleifen sind also

abweisende Schleifen. Die Struktur einer while-Schleife zeigt der folgende

Pseudocode.

{loop_label:} while <Bedingung> loop

<Anweisungen>

end loop {loop_label};end;

Page 21: Thema: VHDL - ei.hs-duesseldorf.de fileVolkan Ona (753218) Vorlesung: Technische Informatik - VHDL 2 Designmethodik im Überblick Zu jeder HDL-basierten Beschreibung sind eine oder

21

Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL

8 Quellen

[1] Marco Winzker, Digitaltechnik, 7.Auflage, 2016

[2] Urbanski, Digitaltechnik, 6.Auflage, 2011

[3] Christian Moerz, Einführung in die Technische Informatik, 5.Auflage, 2003

[4] Michael Schmidt, VHDL Einführung 1, 2012