Beispiel
Beispiel
Beispiel
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 1. . .<br />
V H D L<br />
Tim Köhler<br />
April 2005
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 2. . .<br />
Übersicht<br />
1. Einleitung<br />
2. Syntax<br />
3. Spezielle Probleme<br />
4. <strong>Beispiel</strong><br />
5. Ausblick
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 3. . .<br />
VHDL<br />
– VHDL : VHSI Hardware Description Language<br />
Very High Speed IC Hardware Description Language<br />
– 1983 vom amerikanischen DoD initiiert<br />
– 1987 als IEEE 1076 normiert<br />
– 1993, 2000 Überarbeitungen<br />
– Erweiterungen, z.B. 1999 AMS (Analog and Mixed Signal)<br />
Zweck:<br />
– Beschreibung/Design von (digitalen) Systemen<br />
– Simulation von (digitalen) Systemen
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 4. . .<br />
Entwurfsparadigmen<br />
– Hierarchie (Unterteilung in Komponenten)<br />
– Modelle (unterschiedliche Beschreibungsebenen): Verhalten, Struktur,. . .<br />
– Datenhaltung (Wiederverwendung, Herstellerbibliotheken)<br />
– Design-Alternativen (u.a. Trennung von Schnittstelle und Implementation)<br />
. . . (mehr im Vortrag Übersicht/Entwurfsablauf)
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 5. . .<br />
Syntax: Hello World!<br />
01<br />
02 -- ‘‘Hello World!’’ in VHDL<br />
03<br />
04 library IEEE;<br />
05 use ieee.std logic 1164.all; -- gross/klein egal!<br />
06<br />
07 entity HelloWorld is<br />
08 port(<br />
09 A, B: in bit;<br />
10 C : out bit<br />
11 );<br />
12 end; -- end HelloWorld; / end entity HelloWorld;<br />
13<br />
14 architecture Version1 of HelloWorld is<br />
15 begin<br />
16 C
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 6. . .<br />
Einheiten der Sprache VHDL<br />
– entity = Schnittstelle<br />
– architecture = Implementierung<br />
– configuration = Auswahl von Design-Alternativen<br />
– package = “Kopf” einer Bibliothek<br />
– package body = Implementierung einer Bibliothek<br />
Verteilung der Einheiten auf Dateien von CAD-Software abhängig!
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 7. . .<br />
entity<br />
01<br />
02 . . .<br />
03<br />
07 entity Demo is<br />
08 port(<br />
09 A, B : in bit;<br />
10 C : out bit;<br />
11 reset : in std logic;<br />
12 ack : out std logic;<br />
13 Daten : inout std logic;<br />
14 Adresse: in bit vector(9 downto 0)<br />
15 );<br />
16 end; -- end Demo; / end entity Demo;<br />
17<br />
18<br />
1. Bezeichner<br />
2. Richtung<br />
3. Typen
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 8. . .<br />
Typen<br />
01<br />
02 -- Typen in VHDL<br />
03<br />
04 TYP WERTE BEISPIEL<br />
05<br />
06 bit ’0’,’1’ on
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 9. . .<br />
Eigene Typen definieren<br />
01<br />
02 -- Typ definieren:<br />
03<br />
04 type ZUSTAENDE is (RESET, INITIERUNG, RUNNING, HALT);<br />
05<br />
06<br />
07 -- Typ verwenden:<br />
08<br />
09 signal AktuellerZustand : ZUSTAENDE;<br />
10 signal NaechsterZustand : ZUSTAENDE;<br />
11<br />
12 AktuellerZustand
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 10. . .<br />
architecture (1/2)<br />
01 architecture Variante1 of Demo is<br />
02 signal temp: std logic;<br />
03 signal Ack2: std logic;<br />
04 begin<br />
05 Ack
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 11. . .<br />
architecture (2/2)<br />
01 architecture Version1 of Demo2 is<br />
02 signal zaehler: Integer;<br />
03 begin<br />
04 . . .<br />
05 C
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 12. . .<br />
Komponenten wiederverwenden (1/3)<br />
01<br />
02 entity VollAdd is<br />
03 port(<br />
04 A, B : in std logic;<br />
05 C in : in std logic;<br />
06 Sum : out std logic;<br />
07 C out: out std logic<br />
08 );<br />
09 end VollAdd;<br />
10<br />
11 architecture Version1 of VollAdd is<br />
12 signal AxorB : std logic;<br />
13 begin<br />
14 AxorB
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 13. . .<br />
Komponenten wiederverwenden (2/3)<br />
01 entity TwoAdd is<br />
02 port(<br />
03 ZahlA, ZahlB : in std logic vector(1 downto 0);<br />
04 Summe: out std logic vector(2 downto 0)<br />
05 );<br />
06 end TwoAdd;<br />
07<br />
08 architecture Version1 of TwoAdd is<br />
09 component VollAdd is<br />
10 port(<br />
11 A, B : in std logic;<br />
12 C in : in std logic;<br />
13 Sum : out std logic;<br />
14 C out: out std logic<br />
15 );<br />
16 end component VollAdd;<br />
17 . . .<br />
18
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 14. . .<br />
Komponenten wiederverwenden (2/3)<br />
07 . . .<br />
08 architecture Version1 of TwoAdd is<br />
09 component VollAdd is<br />
10 port(<br />
11 A, B : in std logic;<br />
12 C in : in std logic;<br />
13 Sum : out std logic;<br />
14 C out: out std logic<br />
15 );<br />
16 end component VollAdd;<br />
17 signal Carry : std logic;<br />
18 begin<br />
19 LSB ADD: VollAdd port map(ZahlA(0), ZahlB(0),<br />
20 ’0’, Summe(0), Carry);<br />
21 MSB ADD: VollAdd port map(ZahlA(1), ZahlB(1),<br />
22 Carry, Summe(1), Summe(2));<br />
23 end architecture Version1;<br />
24
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 15. . .<br />
Komponenten wiederverwenden (2/3)<br />
08 architecture Version1 of TwoAdd is<br />
09 component VollAdd is<br />
10 port(<br />
11 A, B : in std logic;<br />
12 C in : in std logic;<br />
13 Sum : out std logic;<br />
14 C out: out std logic<br />
15 );<br />
16 end component VollAdd;<br />
17 signal Carry : std logic;<br />
18 begin<br />
19 LSB ADD: VollAdd port map(<br />
20 A => ZahlA(0),<br />
21 B => ZahlB(0),<br />
22 C in => ’0’,<br />
23 C out => Carry,<br />
24 Sum => Summe(0)<br />
25 );
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 16. . .<br />
Komponenten wiederverwenden (3/3)<br />
01 entity MultiAdd is<br />
02 port(<br />
03 ZahlA, ZahlB : in std logic vector(31 downto 0);<br />
04 Summe: out std logic vector(32 downto 0)<br />
05 );<br />
06 end TwoAdd;<br />
07<br />
08 architecture Version1 of MultiAdd is<br />
09 component VollAdd is<br />
10 port(<br />
11 A, B : in std logic;<br />
12 C in : in std logic;<br />
13 Sum : out std logic;<br />
14 C out: out std logic<br />
15 );<br />
16 end component VollAdd;<br />
17 . . .<br />
18
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 17. . .<br />
Komponenten wiederverwenden (3/3)<br />
08 architecture Version1 of MultiAdd is<br />
09 component VollAdd is<br />
10 port(<br />
11 A, B : in std logic;<br />
12 C in : in std logic;<br />
13 Sum : out std logic;<br />
14 C out: out std logic<br />
15 );<br />
16 end component VollAdd;<br />
17 signal Carry in : std logic vector(32 downto 0);<br />
18 begin<br />
19 Addierer: for I in 0 to 31 generate<br />
20 ADD I: VollAdd port map(<br />
21 ZahlA(I), ZahlB(I),<br />
22 Carry in(I), Summe(I), Carry in(I+1));<br />
23 end generate Addierer;<br />
24 Carry in(0)
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 18. . .<br />
Arithmetik in VHDL<br />
01<br />
02 -- Variante 1 : Wie in anderen Sprachen<br />
03<br />
04 . . .<br />
05 signal int1, int2, int3: Integer range 0 to 131071;<br />
06 signal databus: std logic vector(15 downto 0);<br />
07 . . .<br />
08 int3
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 19. . .<br />
Arithmetik in VHDL<br />
01<br />
02 -- Variante 2 : Optimierte Implementierung<br />
03<br />
04 . . .<br />
05 signal int1bus, int2bus, int3bus: std logic vector(16 downto 0);<br />
06 signal databus: std logic vector(15 downto 0);<br />
07 . . .<br />
08 Addierer: LPM ADD port map(<br />
09 A => int1bus,<br />
10 B => int2bus,<br />
11 Sum => int3bus,<br />
12 );<br />
13 . . .<br />
14 databus
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 20. . .<br />
Speicher<br />
01<br />
02 -- Variante 1: RS-FF Strukturbeschreibung<br />
03<br />
04 entity RSFF is<br />
05 nR, nS : in bit;<br />
06 Q, nQ : out bit;<br />
07 end entity RSFF;<br />
08<br />
09 architecture V1 of RSFF is<br />
10 signal nand1, nand2: bit;<br />
11 begin<br />
12 nand1
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 21. . .<br />
Speicher<br />
01 -- Variante 2: RS-FF Verhaltensbeschreibung<br />
02<br />
03 entity RSFF is<br />
04 nR, nS : in bit;<br />
05 Q, nQ : out bit;<br />
06 end entity RSFF;<br />
07<br />
08 architecture V2 of RSFF is<br />
09 begin<br />
10 Q nQ: process(nS, nR)<br />
11 begin<br />
12 if nS = ’0’ then<br />
13 Q
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 22. . .<br />
Speicher<br />
01 -- Variante 3: D-FF Verhaltensbeschreibung<br />
02<br />
03 entity DFF is<br />
04 D, CLK, nRESET : in bit;<br />
05 Q, nQ : out bit;<br />
06 end entity DFF;<br />
07<br />
08 architecture V1 of DFF is<br />
09 begin<br />
10 Q nQ: process(nRESET, CLK, D)<br />
11 begin<br />
12 if nRESET = ’0’ then<br />
13 Q
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 23. . .<br />
Speicher<br />
01 -- Variante 4: D-FF Verhaltensbeschreibung II<br />
02<br />
03 entity DFF is<br />
04 D, CLK, nRESET : in bit;<br />
05 Q, nQ : out bit;<br />
06 end entity DFF;<br />
07<br />
08 architecture V2 of DFF is<br />
09 begin<br />
10 Q nQ: process(nRESET, CLK, D)<br />
11 begin<br />
12 if nRESET = ’0’ then<br />
13 Q
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 24. . .<br />
<strong>Beispiel</strong><br />
– Cola-Automat<br />
– Akzeptiert werden sollen: 1 DM-, 2 DM- und 5 DM-Stücke<br />
– Bei Erreichen von 5 DM soll eine Flasche Cola (0.2l) ausgegeben werden
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 25. . .<br />
<strong>Beispiel</strong><br />
01 -- Cola-Automat in VHDL<br />
02<br />
03 entity ColaAutomat is<br />
04 port(<br />
05 nRESET : in std logic;<br />
06 CLK : in std logic;<br />
07 Muenze : in std logic;<br />
08 Wert : in std logic vector(1 downto 0);<br />
09 Ausgabe: out std logic;<br />
10 );<br />
11 end entity ColaAutomat;<br />
12<br />
13 architecture TolleFassung1 of ColaAutomat is<br />
14 type ZUSTAENDE is (WARTE, DM1, DM2, DM3, DM4, AUSWURF);<br />
15 constant MUENZE1DM : std logic vector(1 downto 0) := ‘‘00’’;<br />
16 constant MUENZE2DM : std logic vector(1 downto 0) := ‘‘01’’;<br />
17 constant MUENZE5DM : std logic vector(1 downto 0) := ‘‘10’’;<br />
18 . . .
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 26. . .<br />
<strong>Beispiel</strong><br />
13 architecture TolleFassung1 of ColaAutomat is<br />
14 type ZUSTAENDE is (WARTE, DM1, DM2, DM3, DM4, AUSWURF);<br />
15 constant MUENZE1DM : std logic vector(1 downto 0) := ‘‘00’’;<br />
16 constant MUENZE2DM : std logic vector(1 downto 0) := ‘‘01’’;<br />
17 constant MUENZE5DM : std logic vector(1 downto 0) := ‘‘10’’;<br />
18 signal ZustandAktuell : ZUSTAENDE;<br />
19 signal NeuerZustand : ZUSTAENDE;<br />
20 begin<br />
21<br />
22 -- Globale, zentrale Zuweisungen (hier nicht)<br />
23<br />
24 -- Zustandsspeicher<br />
25 . . .<br />
34 -- Zustandsuebergangsfunktion<br />
35 -- (hier kombiniert mit Ausgabefunktion)<br />
36 . . .<br />
127 end architecture TolleFassung1;<br />
128
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 27. . .<br />
<strong>Beispiel</strong><br />
24 -- Zustandsspeicher<br />
25 Zustandsspeicher: process(nRESET, CLK, NeuerZustand)<br />
26 begin<br />
27 if nRESET=’0’ then<br />
28 ZustandAktuell
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 28. . .<br />
<strong>Beispiel</strong><br />
34 -- Zustandsuebergangsfunktion<br />
35 -- (hier kombiniert mit Ausgabefunktion)<br />
36 Funktion: process(ZustandAktuell, Muenze, Wert)<br />
37 begin<br />
38 case ZustandAktuell is<br />
39 when WARTE =><br />
40 . . .<br />
53 when DM1 =><br />
54 . . .<br />
104 when DM4=><br />
105 . . .<br />
121 when AUSWURF=><br />
122 . . .<br />
124 end case;<br />
125 end process Funktion;<br />
126<br />
127 end architecture TolleFassung1;<br />
128
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 29. . .<br />
<strong>Beispiel</strong><br />
38 case ZustandAktuell is<br />
39 when WARTE =><br />
40 if Muenze=’1’ then<br />
41 case Wert is<br />
42 when MUENZE1DM =><br />
43 NeuerZustand <br />
45 NeuerZustand <br />
47 NeuerZustand
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 30. . .<br />
<strong>Beispiel</strong><br />
53 when DM1 =><br />
54 if Muenze=’1’ then<br />
55 case Wert is<br />
56 when MUENZE1DM =><br />
57 NeuerZustand
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 31. . .<br />
<strong>Beispiel</strong><br />
70 when DM2 =><br />
71 if Muenze=’1’ then<br />
72 case Wert is<br />
73 when MUENZE1DM =><br />
74 NeuerZustand
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 32. . .<br />
<strong>Beispiel</strong><br />
87 when DM3 =><br />
88 if Muenze=’1’ then<br />
89 case Wert is<br />
90 when MUENZE1DM =><br />
91 NeuerZustand
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 33. . .<br />
<strong>Beispiel</strong><br />
104 when DM4 =><br />
105 if Muenze=’1’ then<br />
106 case Wert is<br />
107 when MUENZE1DM =><br />
108 NeuerZustand
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 34. . .<br />
121 when AUSWURF =><br />
122 NeuerZustand
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 35. . .<br />
Ausblick<br />
Zum <strong>Beispiel</strong>: VHDL zum Test in Simulationen<br />
“Testbench” ist eine entity, die die zu testende Baugruppe (entity) umgibt<br />
An den Ausgängen der Testbench werden Stimuli angelegt<br />
(verbunden mit den Eingängen des Prüflings)<br />
An den Eingängen der Testbench (Ausgänge Prüfling) können Signalverläufe<br />
• analysiert<br />
• mitgeschrieben<br />
und<br />
werden
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 36. . .<br />
Ausblick<br />
01<br />
02 -- Ausschnitt VHDL-Testbench<br />
03 . . .<br />
04 Takt: process<br />
05 begin<br />
06 Clk DataBus DataBus
I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK . . . 37. . .<br />
Literatur<br />
– Andreas Mäder: VHDL Kompakt<br />
http://tams-www.informatik.uni-hamburg.de<br />
– Lee: Digital system design using VHDL<br />
– Chang: Digital design and modeling with VHDL and synthesis