Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
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
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
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
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.
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.
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.
7
Volkan Ona (753218) Vorlesung: Technische Informatik - VHDL
Abbildung 2: VHDL-basierter Entwurfsprozess
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.
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;
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:
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;
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
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.
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:
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;
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;
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
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;
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};
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;
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