VHDL Einführung 1

Transcription

VHDL Einführung 1
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
VHDL Einführung 1
Marc Reichenbach und Michael Schmidt
Informatik 3 / Rechnerarchitektur
Universität Erlangen Nürnberg
05/12
1 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Gliederung
Überblick zu VHDL
Vergleich VHDL/Verilog
Designflow
Aufbau einer VHDL-Beschreibung
Architektur-Beschreibungen
Signale vs. Variablen
2 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Überblick zu VHDL
• grafische Schaltplaneingabe auf Logikelementebene kritisch
• starker Anstieg der Entwurfskomplexität
• "Time to market"
• deswegen Hardwarebeschreibung durch Hochsprachen
• Vorteil: einheitliche Beschreibung für Simulation und Synthese
• etablierte Modellierungssprachen:
• Verilog (amerik. Markt)
• VHDL (europ. Markt)
• mittlerweile steigender Anteil von SystemC, SystemVerilog (für
Systemmodellierung und Systemverifikation)
3 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Überblick zu VHDL
• VHDL unter IEEE-Norm 1076 in 1987, 1993, 2000, 2002 und
2008 standardisiert
• synthesefähiger Anteil unter 1076.6 standardisiert !!
• VHDL ist eine Modellierungssprache, keine
Programmiersprache
• Kleinschreibung üblich (aber Unterschiede in der Literatur!)
4 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Überblick zu VHDL
• Kommentare werden in VHDL mit “ − −“ erstellt (seit 2008
Blockkommentar möglich)
• vollständige VHDL-Anweisungen mit “; “ abgeschlossen
• Signalzuweisungen erfolgen mit “ <= “ Operator
• Variablenzuweisungen erfolgen mit “ := “ Operator
• einzelne Signalwerte mit einzelnen Anführungeszeichen (0 00 )
• Vektoren mit doppelten Anführungszeichen (”0001”)
5 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Vergleich VHDL/Verilog [1]
• gleichwertige Modellierung von Hardware-Komponenten
• allerdings leicht versetzte Abdeckung über den
Verhaltensebenen
6 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Vergleich VHDL/Verilog [1]
• VHDL: Vielzahl von Datentypen (sprach- und
benutzerdefiniert)
• Verilog: nur sehr einfache sprachdefinierte Datentypen
• Verilog: kein Konzept für Packages (für wiederverwendete
Datentypen, Funktionen) oder Bibliotheken → interpretierende
Sprache
• Verilog ist für Beginner einfacher zu erlernen
7 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Vergleich VHDL/Verilog [1]
• VHDL erscheint zunächst komplizierter (stark typisiert,
mehrere Modellierungswege) → jedoch mächtig für
fortgeschrittene Benutzer
• VHDL: mehr Konstrukte für High-Level Modellierungen
• Verilog: Möglichkeit auch Basiszellen (ASIC, FPGA) zu
modellieren (in VHDL über VITAL Standard)
• Verilog: Explizite Unterscheidung zwischen Registern und
Verbindungen
• VHDL ist an ADA angelehnt, Verilog stärker an C
8 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Designflow
• Wie kommt man vom HDL Code zur tatsächlichen Hardware
(FPGA, ASIC)?
• Designflow beschreibt Abbildungsschritte
• oft Unterschiede in Abhängigkeit von der verwendeten
Tool-Chain
9 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Vereinfachter Allgemeiner Designflow
VHDL-Code
Constraints
Schaltplan
Testbench
Funktionale
Simulation
Synthese
Translation
Floorplanning,
Layout
Implementierung
Map
Place & Route
Timing Analyse,
DRC Checks
Konfigurationsdatei
Tapeout
FPGA
ASIC
Zeitbehaftete
Simulation
10 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Synthese
• auch Logik-Synthese genannt
• Übersetzung des HDL Codes in architektur-spezifische
Netzliste
• Netzliste auf Register-Transfer Ebene (RTL)
Kombinatorische
Logik
D
CLK
Q
Kombinatorische
Logik
D
Q
Kombinatorische
Logik
CLK
clk
11 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Implementierung
• Abbildung der Netzliste auf Zieltechnologie
• Bibliothekselemente einer ASIC-Bibliothek
• Bibliothekselemente eines FPGA-Devices
• Abschätzung von Zeitinformationen für zeitbehaftete
Simulation
• SDF (Standard Delay Format)
12 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Prinzipieller Aufbau einer VHDL-Beschreibung
−− B i b l i o t h e k e n e i n b i n d e n
l i b r a r y <Name>; −− z . B . B i b l i o t h e k s n a m e o d e r WORK−V e r z .
use <Name>.[<Name>. . . . ] ( < B e z e i c h n e r >| a l l ) ;
−− S c h n i t t s t e l l e d e r Komponente d e f i n i e r e n
e n t i t y <E n t i t y n a m e > i s
[ g e n e r i c (< D e k l a r a t i o n von P a r a m e t e r n > ) ; ]
p o r t (< D e k l a r a t i o n d e r Ein− und Ausgaenge >);
[< E n t i t y d e k l a r a t i o n e n > ; ]
end <E n t i t y n a m e >;
−− F u n k t i o n a l e s V e r h a l t e n d e r Komponente b e s c h r e i b e n
a r c h i t e c t u r e <A r c h i t e k t u r n a m e > o f <E n t i t y n a m e > i s
[< A r c h i t e k t u r d e k l a r a t i o n e n > ; ]
begin
{<VHDL−Anweisungen >;}
end <A r c h i t e k t u r n a m e >;
13 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Prinzipieller Aufbau einer VHDL-Beschreibung
−− o p t i o n a l d i e K o n f i g u r a t i o n f e s t l e g e n
−− w i c h t i g b e i m e h r e r e n A r c h i t e k t u r b e s c h r e i b u n g e n
−− zu e i n e r E n t i t y
c o n f i g u r a t i o n <K o n f i g u r a t i o n s n a m e > o f <E n t i t y n a m e > i s
f o r <A r c h i t e k t u r n a m e >
{ f o r <Komponente>
<B i n d u n g s a n w e i s u n g e n >;
end f o r ; }
end f o r ;
end [ c o n f i g u r a t i o n ] [< K o n f i g u r a t i o n s n a m e > ] ;
14 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Beispiel einer VHDL-Beschreibung
−− e i n f a c h e s B e i s p i e l : AND−G a t t e r m i t 2 E i n g a e n g e n
l i b r a r y ieee ;
use i e e e . std_logic_1164 . a l l ;
−− f u e r D a t e n t y p STD_LOGIC , s p a e t e r mehr . . .
−− S c h n i t t s t e l l e e i n e s AND2−G a t t e r s
e n t i t y AND2 i s
port ( a : in std_logic ;
b : in std_logic ;
o : out s t d _ l o g i c ) ;
end AND2 ;
−− F u n k t i o n a l e s V e r h a l t e n d e s G a t t e r s
a r c h i t e c t u r e b e h a v i o r o f AND2 i s
begin
o <= a and b ;
end b e h a v i o r ;
15 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
use
• für Einbinden von Bibliothekselementen oder eigene Paketen
• es kann jeder Name eines Paketes oder einer Bibliothek
sichtbar gemacht werden
• Wichtig: Bibliotheken vor JEDER entity einbinden!
• mit Hilfe von all, werden alle Sub-Elemente sichtbar
• Vorsicht mit all: auf Abhängigkeiten achten!!!
16 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
use
−− a l l e E l e m e n t e d e s P a k e t e s s t d _ l o g i c _ 1 1 6 4 a u s
−− d e r B i b l i o t h e k i e e e , z . B . D a t e n t y p s t d _ l o g i c
l i b r a r y ieee ;
use i e e e . std_logic_1164 . a l l ;
−− a l l e E l e m e n t e d e s P a k e t e s own_package
use work . own_package . a l l ;
17 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
entity
• Schnittstelle eines VHDL-Funktionsblockes nach außen
(vergleichbar mit PINs eines IC-Gehäuses)
−− S c h n i t t s t e l l e d e r Komponente d e f i n i e r e n
e n t i t y <E n t i t y n a m e > i s
[ g e n e r i c (< D e k l a r a t i o n von P a r a m e t e r n > ) ; ]
p o r t (< D e k l a r a t i o n d e r Ein− und Ausgaenge >);
[< E n t i t y d e k l a r a t i o n e n > ; ]
end <E n t i t y n a m e >;
• generic: zur Festlegung generischer Parameter für die
Komponente (z.B. einen Parameter für die Busbreite)
18 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
entity
• Deklaration der Anschlüsse erfolgt über port-Anweisung
• Datentyp und Richtung der Ports (in, out, inout, buffer,
linkage) muss festgelegt werden
• Anschlüsse werden mit Signalen verbunden, für
• Kommunikation nach außen (z.B. anderen Komponenten)
• Kommunikation innerhalb der Komponente
• WICHTIG: Variablen sind keine Signale! (später mehr)
19 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
architecture
• beschreibt das Verhalten eines VHDL-Moduls zu einer Entity
• verschiedene Möglichkeiten der Beschreibung (Unterschiede in
Literatur)
• Strukturbeschreibung
→ Istanziierung und Verbindung von Komponenten
• Verhaltensbeschreibung
• Prozessbeschreibung
→ Funktionalitätsbeschreibung mit Prozessen
• Datenflussbeschreibung
→ parallele Signalzuweisungen von booleschen Gleichungen
20 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Strukturbeschreibung
• Verwendung von bereits vorhandenen VHDL-Modulen oder
Bibliothekselementen
• zuerst Deklaration der Komponenten-Schnittstelle
• danach Instanziierung der Komponente im architecture-body
component <E n t i t y n a m e >
[ g e n e r i c (< P a r a m e t e r −D e k l a r a t i o n e n >); ]
p o r t ( I /O−D e k l a r a t i o n e n ) ;
end component ;
21 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Strukturbeschreibung
<I n s t a n z b e z e i c h n e r >: <E n t i t y n a m e >
[ g e n e r i c map (< P a r a m e t e r −Z u w e i s u n g e n >) ]
p o r t map (< P o r t z u w e i s u n g e n >);
• jede Instanz erhält eine Bezeichnung zur Referenzierung
• port map: Verknüpfung der Instanz mit der Schnittstelle der
Hauptkomponente und/oder internen Signalen
• generic map (optional): Übergabe von Parametern an die
Instanz (später mehr dazu, z.B. bei der Verwendung interner
FPGA-Komponenten)
22 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Strukturbeschreibung
−− AND−G a t t e r m i t 3 E i n g a e n g e n m i t H i l f e von 2 x AND2
l i b r a r y ieee ;
use i e e e . std_logic_1164 . a l l ;
−− S c h n i t t s t e l l e d e s AND3−G a t t e r s
e n t i t y and3 i s
port ( a : in std_logic ;
b : in std_logic ;
c : in std_logic ;
o : out s t d _ l o g i c ) ;
end and3 ;
a r c h i t e c t u r e b e h a v i o r o f and3 i s
component AND2 i s
port ( a : in std_logic ;
b : in std_logic ;
o : out s t d _ l o g i c ) ;
end component ;
23 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Strukturbeschreibung
s i g n a l out_zw : s t d _ l o g i c ;
begin
−− 1 . I n s t a n z u1 d e s AND2−G a t t e r s und P o r t Mapping
u1 : AND2
p o r t map(
a,
b,
out_zw ) ;
−− 2 . I n s t a n z u1 d e s AND2−G a t t e r s und P o r t Mapping
u2 : AND2
p o r t map(
c,
out_zw ,
o);
end b e h a v i o r ;
24 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Strukturbeschreibung
• resultiernde Schaltung der AND3-Komponente
25 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Datenflussbeschreibung
• Spezialfall der Verhaltensbeschreibung, in der Literatur oft
nicht explizit definiert/unterschieden
• Modellierung des Datenflusses über kombinatorische logische
Funktionen ohne Prozesse
• alle Signalzuweisungen einer Datenflussbeschreibung verhalten
sich nebenläufig
26 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Datenflussbeschreibung
e n t i t y RSFF i s
port ( s , r : in std_logic ;
q , nq : out s t d _ l o g i c ) ;
end RSFF ;
a r c h i t e c t u r e d a t a f l o w o f RSFF i s
−− Z w i s c h e n s i g n a l e e i n f u e g e n ( A u s g a e n g e q , nq n i c h t l e s b a r )
s i g n a l nq_zw : s t d _ l o g i c ;
s i g n a l q_zw : s t d _ l o g i c ;
begin
q_zw <= r nor nq_zw ;
nq_zw <= s nor q_zw ;
q <= q_zw ;
nq <= nq_zw ;
end d a t a f l o w ;
27 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Datenflussbeschreibung
• Synthese-Ergebnis der Datenflussbeschreibung
• Problem dieser Schaltung?
28 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Prozessbeschreibung
• Beschreibung des Verhaltens mit Hilfe von Prozessen
• Prozesse ermöglichen die Modellierung sequentieller
Anweisungen (Verzweigungen, Schleifen, usw.)
• Allgemeine Prozess-Beschreibung:
[< P r o z e s s n a m e > : ] p r o c e s s [ ( S e n s i t i v i t a e t s l i s t e ) ]
<D e k l a r a t i o n e n >
begin
{< S e q u e n t i e l l e Anweisungen >}
end p r o c e s s [< P r o z e s s n a m e > ] ;
29 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Prozessbeschreibung
• Prozess muss Sensitivitätsliste enthalten oder
wait-Anweisungen
• Sensitivitätsliste
• Signale durch Kommata getrennt
• Signale der Liste
→ starten Prozessbearbeitung durch Simulator
→ aktivieren die durch Prozess abgebildete HW
• und zwar wenn eines der Signal sich ändert (”Event”)
• ohne Sensitivitätsliste (wait-Anweisungen)
• nicht synthesefähig (z.B. für Simulation)
w a i t f o r 20 n s ;
• synthesefähig
w a i t u n t i l c l k = ’1 ’ and c l k ’ e v e n t ;
30 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Prozessbeschreibung
• für synthesefähige Prozesse werden Prozesse mit
Sensitivitätsliste empfohlen (REICHARDT)
• ABER: wait-Anweisungen vorallem sinnvoll für einfache
Testbenches (keine Synthesefähigkeit benötigt)
• Verwendung eines Prozessnamens ist optional
• Deklarationsteil kann eigene Datentypen, Konstanten oder
Variablen enthalten
• funktionales Verhalten wird zwischen begin und end process;
definiert
31 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Prozessbeschreibung
• mehrere Prozesse innerhalb einer architecture verhalten sich
nebenläufig
• im Simulator werden sequentiellen Anweisungen nacheinander
abgearbeitet (wie in einer Programmiersprache)
• Abarbeitung im Simulator in “unendlich“ kleiner Zeit
• ein Synthesewerkzeug versucht diese seq. Anweisungen auf
Hardwarefunktionselemente abzubilden
32 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Prozessbeschreibung
• in Prozessen sind unbedingte Signalzuweisungen erlaubt,
selektive und bedingte Zuweisungen hingegen nicht (dort z.B.
mit if then else arbeiten!)
• wichtig: Aktualisierung der Signalzuweisungen immer erst am
Prozessende!!!
• Problem: während Prozessausführung nicht auf aktuelle
Werte zugreifbar → dafür gibt es Variablen
33 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Architektur-Beschreibungsformen in der Praxis
• Mischung der verschiedenen Beschreibungsformen
• Strukturbeschreibung für Modul- und Hierarchiebildung
• Funktionalität über Verhaltens- und Datenflussbeschreibung
• die Strukturbeschreibung ermöglicht u.a. auch das Einbinden
sogenannter Hard-Macros im FPGA (Multiplizierer, BRAM,...)
34 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Signale, Variablen und Konstanten
• Unterscheidung für VHDL-Beginner oft schwierig
• Signale kann man prinzipiell als Verbindungen ansehen
• für externe und interne Anbindung von Komponenten,
Funktionsblöcken
• Ports einer Entity werden auch wie Signale behandelt
• Signale müssen eindeutigen Namen und Typen innerhalb eines
VHDL-Moduls haben
35 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Signale, Variablen und Konstanten
• Definition von Signalen erfolgt im Architektur-Deklarationsteil
...
architecture
...
−− e i n f a c h e s S i g n a l
s i g n a l a : b i t ; −− 0 o d e r 1
s i g n a l b : s t d _ l o g i c ; −− N e u n w e r t i g e L o g i k ( e m p f o h l e n ! )
−− S i g n a l v e k t o r e n
s i g n a l c : s t d _ l o g i c _ v e c t o r ( 7 downto 0 ) ;
s i g n a l d : s t d _ l o g i c _ v e c t o r ( 0 to 1 5 ) ;
−− I n i t i a l i s i e r u n g ( n i c h t e m p f o h l e n ! )
−− n u r S i m u l a t i o n , NICHT SYNTHETISIERBAR !
s i g n a l e : s t d _ l o g i c := ’ 0 ’ ;
begin
...
36 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Signale, Variablen und Konstanten
• Signalzuweisung über “<=“ Operator
• Unbedingte Signalzuweisung:
...
s i g n a l a : std_logic ;
s i g n a l b : s t d _ l o g i c _ v e c t o r ( 1 5 downto 0 ) ;
...
begin
−− B e i s p i e l e u n b e d i n g t e S i g n a l z u w e i s u n g e n
a <= b ( 6 ) ;
a <= ’ 1 ’ ;
b <= " 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 " ;
37 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Signale, Variablen und Konstanten
• Bedingte Signalzuweisung:
[< B e z e i c h n e r > : ]
<S i g n a l n a m e > <=
<L o g i s c h e r _ A u s d r u c k _ 1 > when <Bedingung_1> e l s e
[ <L o g i s c h e r _ A u s d r u c k _ 2 > when <Bedingung_2> e l s e ]
−− . . .
<l o g i s c h e r _ A u s d r u c k _ n >;
−− B e i s p i e l :
o u t p u t <= a when c o n t r o l = ’ 0 ’ e l s e
b when c o n t r o l = ’ 1 ’ e l s e
’0 ’;
• führt zu Prioritäts-Encoder (Verschachtelung von Gattern)
• vergleichbar mit if then else - Konstrukt
38 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Signale, Variablen und Konstanten
• Selektive Signalzuweisung:
[ Bezeichner : ]
w i t h <S i g n a l k o m b i n a t i o n > s e l e c t
<S i g n a l n a m e > <=
<L o g i s c h e r _ A u s d r u c k _ 1 > when <S i g n a l w e r t _ 1 >,
[< L o g i s c h e r _ A u s d r u c k _ 2 > when <S i g n a l w e r t _ 2 >] ,
−− . . .
[< L o g i s c h e r _ A u s d r u c k _ n > when o t h e r s ] ;
−− B e i s p i e l : M u l t i p l e x e r , S i g n a l e x und y , e i n S t e u e r s i g n a l z
−− und d e r Ausgang o u t p u t vom Typ s t d _ l o g i c g e g e b e n
MUX2 : w i t h z s e l e c t
o u t p u t <= x when ’ 0 ’ ,
y when ’ 1 ’ ,
’ 0 ’ when o t h e r s ;
• Auswahl aus einer Reihe gleichberechtigter Möglichkeiten
(Multiplexerstruktur)
39 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Signale, Variablen und Konstanten
• Konstanten und Variablen bestehen aus Name, Type und
optional einem Initialwert
• Konstanten z.B. für generische Parameter in Packages
• Variablen werden normalerweise im Prozess-Deklarationsteil
definiert
• Ausnahme: shared variable (von mehreren Prozessen
benutzbar)
• Variablen-Zuweisung mit “:=“ Operator
c o n s t a n t r e g i s t e r w i d t h : i n t e g e r := 3 2 ;
c o n s t a n t P I : r e a l := 3 , 1 4 1 5 9 2 6 5 ;
v a r i a b l e n ,m: i n t e g e r := 3 2 ;
40 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Datentypen std_logic und std_ulogic
• für HW-Entwurf sind Elemente ’0’ und ’1’ des Datentyps BIT
nur unzureichend
• keine Möglichkeit Signale auf hochohmig zu legen (z.B.
wichtig für Busse, wie beispielsweise I 2 C )
• für ASIC-Entwurf ist auch eine Unterscheidung in schwache
und starke Signale notwendig
• aus diesem Grund gibt es den Datentyp std_logic (9-wertige
Logik)
• ursprünglich in VHDL nicht vorgesehen, deshalb die Bibliothek
ieee.std_logic_1164 einbinden
41 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Datentypen std_logic und std_ulogic
• Werte:
• ’U’: nicht initialisiert (im Simulator)
• ’X’: undefiniert (Simulator erkennt Buskonflikt)
• ’0’: starke logische ’0’
• ’1’: starke logische ’1’
• ’Z’: hochohmig (Tri-State Ausgang)
• ’W’: schwach unbekannt (Buskonflikt zw. ’L’ und ’H’)
• ’L’: schwache logische ’0’
• ’H’: schwache logische ’1’
• ’-’: Don’t Care (Zustand bedeutungslos, für Minimierung
verwendbar)
42 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Datentypen std_logic und std_ulogic
• bei std_logic können mehrere Treiber für ein Signal existieren
(z.B. wichtig für bidirektionale Busse mit mehreren Sendern)
• Auflösungsfunktion entscheidet, welches Signal sich durchsetzt
(ist in IEEE 1164 als Tabelle gespeichert)
• Datentyp std_ulogic (u für unresolved): Signale dürfen nur in
einem Prozess, bzw. einer nebenläufigen Anweisungen eine
Wertzuweisung erfahren
• std_ulogic ist weniger flexibel, dadurch aber Erkennung
versehentlicher Mehrfachzuweisungen (Fehlermeldung im
Simulator)
43 / 44
Outline
Überblick
VHDL/Verilog
Designflow
VHDL-Module
Architektur-Beschreibungen
Signale/Variablen
Literatur
Bücher
• VHDL-Synthese, Jürgen Reichardt, Bernd Schwarz, 5. Auflage,
Oldenbourg Wissenschaftsverlag GmbH, 2009, ISBN
978-3-486-58987-0
• The Designer’s Guide to VHDL, P.J. Ashenden, 3. Auflage,
Morgan Kaufmann Publisher, 2008, ISBN 978-0-12-088785-9
Paper
• [1] VHDL & Verilog Compared & Contrasted - Plus Modeled
Example Written in VHDL, Verilog and C, Douglas J. Smith,
33rd Design Automation Conference, Las Vegas, 1996
44 / 44