Technische Grundlagen der Informatik – Kapitel 3 - Integrated ...

vlsi.informatik.tu.darmstadt.de

Technische Grundlagen der Informatik – Kapitel 3 - Integrated ...

Technische Grundlagender InformatikKapitel 3Prof. Dr. Sorin A. HussFachbereich InformatikTU Darmstadt


Kapitel 3: Themen• Hardware-Beschreibungssprachen• Syntax von VHDL• Simulation• Synthese• TestrahmenWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 2


Einleitung• Hardware-Beschreibungssprachen• Hardware Description Languages (HDL)• Textuelle Beschreibung von Schaltungen möglich• Auf verschiedenen Abstraktionsebenen• Struktur (z.B. Verbindungen zwischen Gattern)• Verhalten (z.B. Boolesche Gleichungen)• Entwurfswerkzeuge führen die Beschreibungen aus (Simulation) underzeugen Schaltungsstruktur mittels Verfahren zur Schaltungssynthese• Schaltungssynthese• Grob vergleichbar mit Übersetzung (Compilieren) von konventionellenProgrammiersprachen• Programme, die als Computer-Aided Design/Engineering (CAD/E) oderElectronic Design Automation (EDA) Werkzeuge bezeichnet werdenWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 3


Einleitung• Fast alle kommerziellen Hardware-Entwürfe wurden mit HDLsrealisiert, der praktische Einsatz von HDLs ist Stand der Technik• Zwei HDLs haben sich durchgesetzt• Verilog• VHDL• Sie werden im Endeffekt wohl beide lernen müssen!• Es gibt keinen klaren Gewinner, allerdings gibt es in Europa einePräferenz für VHDLWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 4


Verilog• 1984 von der Fa. Gateway Design Automation entwickelt• Seit 1995 ein IEEE Standard (1364)• Überarbeitet 2001 und 2005• Neuer Dialekt SystemVerilog (Obermenge von Verilog-2005)• Weit verbreitet in zivilen US-Firmen• In der Informatik der TU Darmstadt eingesetzt am FG• Eingebettete Systeme und ihre Anwendungen (ESA, Prof. Koch)WS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 5


VHDL• Very High-Speed Integrated Circuit Hardware Description Language• Entwickelt 1981 durch das US Verteidigungsministerium• Inspiriert durch die konventionelle Programmiersprache Ada• Standardisiert in 1987 durch IEEE (1076)• Überarbeitet in 1993, 2000, 2002, 2006, 2008• Erweitert zur Beschreibung von ereignisdiskreten und zeitkontinuierlichenSystemen (VHDL-AMS), s. Vorlesung Modellierung heterogener Systeme• Weit verbreitet in• US-Rüstungsfirmen• Vielen europäischen Firmen• In der Informatik der TU Darmstadt eingesetzt am FG• Integrierte Schaltungen und Systeme (ISS, Prof. Huss)WS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 6


In dieser Iteration der Vorlesung• In den Vorlesungen und Übungen VHDL• Hier gezeigte Grundkonzepte sind in beiden Sprachen identisch• Andere Syntax und auch Unterschiede im Detail• VHDL-Beschreibung ist in der Regel länger, aber gut lesbar• Im Begleitbuch werden beide Sprachen nebeneinander gezeigt• S. Kapitel 4• Moderne Entwurfswerkzeuge können in der Regel beide SprachenverarbeitenWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 7


Von einer HDL zu Logikgattern• Simulation• Eingangswerte werden in HDL-Beschreibung eingegeben• Beschriebene Schaltung wird stimuliert• Berechnete Ausgangswerte werden auf Korrektheit geprüft• Fehlersuche viel einfacher und billiger als in realer Hardware• Synthese• Übersetzt HDL-Beschreibungen in Netzlisten, d. h. Strukturbeschreibungen• Logikgatter (Schaltungselemente)• Verbindungen (Verbindungsknoten)WICHTIG:Beim Verfassen von HDL-Beschreibungen ist es essentiell wichtig,immer die vom Programm beschriebene Hardware im Auge zu behalten!WS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 8


VHDL-ModuleabcVHDLModulyZwei Arten von Beschreibungen in Modulen:• Verhalten: Was tut die Schaltung?• Struktur: Wie ist die Schaltung aus Untermodulen aufgebaut?WS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 9


Beispiel für VerhaltensbeschreibungVHDL:library IEEE;use IEEE.STD_LOGIC_1164.all;entity example isport(a, b, c: in STD_LOGIC;y: out STD_LOGIC);end;architecture synth of example isbeginy


Simulation von VerhaltensbeschreibungenSignalverlaufsdiagramm (waves)WS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 11


Synthese von VerhaltensbeschreibungenSyntheseergebnis:bcun5_yyyaun8_yWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 12


VHDL Syntax• Unterscheidet nicht Groß- und Kleinschreibung bei Identifiern• Beispiel: reset und Reset sind das gleiche Signal• Identifier müssen mit einem Buchstaben anfangen• Beispiel: 2mux ist ein ungültiger Name• Anzahl von Leerzeichen, Leerzeilen und Tabulatoren irrelevant• Kommentare:• -- bis zum Ende der ZeileWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 13


Strukturelle Beschreibung: Modulhierarchielibrary IEEE; use IEEE.STD_LOGIC_1164.all;entity and3gate isport(a, b, c: in STD_LOGIC;y: out STD_LOGIC);end;architecture synth of and3gate isbeginy


Strukturelle Beschreibung: Modulhierarchielibrary IEEE; use IEEE.STD_LOGIC_1164.all;entity nand3gate isport(a, b, c: in STD_LOGIC;y: out STD_LOGIC);end;architecture struct of nand3gate iscomponent and3gateport(a, b, c: in STD_LOGIC;y: out STD_LOGIC);end component;component invgateport(a: in STD_LOGIC;y: out STD_LOGIC);end component;signal n1: STD_LOGIC;beginand3inst: and3gate port map(a => a, b => b, c => c, y => n1);invinst: invgate port map(a => n1, y => y);end;WS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 15


Bitweise Verknüpfungsoperatorenlibrary IEEE; use IEEE.STD_LOGIC_1164.all;entity gates isport(a, b: in STD_LOGIC_VECTOR(3 downto 0);y1, y2, y3, y4,y5: out STD_LOGIC_VECTOR(3 downto 0));end;architecture synth of gates isbegin-- Fünf unterschiedliche Logikgatter-- mit zwei Eingängen,-- jeweils 4 Bit breite Bussey1


Reduktionsoperatorenlibrary IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_MISC.all; -- weitere Bibliothekentity and8 isport(a: in STD_LOGIC_VECTOR(7 downto 0);y: out STD_LOGIC);end;architecture synth of and8 isbeginy


Bedingte Zuweisunglibrary IEEE; use IEEE.STD_LOGIC_1164.all;entity mux2 isport(d0, d1: in STD_LOGIC_VECTOR(3 downto 0);s: in STD_LOGIC;y: out STD_LOGIC_VECTOR(3 downto 0));end;architecture synth of mux2 isbeginy


Interne Verbindungsknoten oder Signalelibrary IEEE;use IEEE.STD_LOGIC_1164.all;entity fulladder isport(a, b, cin: in STD_LOGIC;s, cout: out STD_LOGIC);end;architecture synth of fulladder issignal p, g: STD_LOGIC; -- interne Verbindungsknoten (“Drähte”)beginp


Bindung von Operatoren (Präzedenz)HöchsteBestimmt AusführungsreihenfolgenotNOT*, /, mod, rem Multiplikation, Division, Modulo, Remainder+, -, & Addition, Subtraktion, KonkatenationNiedrigsterol, ror, srl,sll, sra, sla=, /=, =and, or, nand,nor, xorRotieren, Schieben (logisch), Schieben(arithmetisch)VergleicheLogische OperatorenWICHTIG:Die logischen Operatoren haben gleiche Präzedenz.Es ist daher auf Klammerung zu achten!WS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 20


ZahlenSyntax: 'wert' für STD_LOGIC ('0' oder '1')B"wert" für STD_LOGIC_VECTORB = Basis (optional)Zahl Bitbreite Basis entspricht Dezimal Darstellung imSpeicher'1' 1 binär 1 1"101" 3 binär 5 101B"101" 3 binär 5 101X"AB" 8 hexadezimal 171 10101011WS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 21


Operationen auf Bit-Ebene: Beispiel 1y


Operationen auf Bit-Ebene: Beispiel 2VHDL:Synthese:library IEEE;use IEEE.STD_LOGIC_1164.all;ssmux2entity mux2_8 isport(d0, d1: in STD_LOGIC_VECTOR(7 downto 0);s: in STD_LOGIC;y: out STD_LOGIC_VECTOR(7 downto 0));end;d0[7:0]d1[7:0][7:0][7:0][3:0][3:0]d0[3:0] y[3:0]d1[3:0]lsbmux[3:0][7:0]y[7:0]architecture struct of mux2_8 isscomponent mux2 is[7:4]d0[3:0]port(d0, d1: in STD_LOGIC_VECTOR(3 downto 0);[7:4]s: in STD_LOGIC;d1[3:0]y[3:0][7:4]y: out STD_LOGIC_VECTOR(3 downto 0));msbmuxend component;beginmsbmux: mux2 port map(d0 => d0(7 downto 4), d1 => d1(7 downto 4), s => s, y => y(7 downto 4));lsbmux: mux2 port map(d0 => d0(3 downto 0), d1 => d1(3 downto 0), s => s, y => y(3 downto 0));end;mux2WS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 23


Hochohmiger Ausgang: ZVHDL:library IEEE; use IEEE.STD_LOGIC_1164.all;entity tristate isport(a: in STD_LOGIC_VECTOR(3 downto 0);en: in STD_LOGIC;y: out STD_LOGIC_VECTOR(3 downto 0));end;architecture synth of tristate isbeginy


Verzögerungenlibrary IEEE; use IEEE.STD_LOGIC_1164.all;entity example isport(a, b, c: in STD_LOGIC;y: out STD_LOGIC);end;Nur für die Simulation,after-Ausdrücke werden fürdie Synthese ignoriert!architecture synth of example issignal ab, bb, cb, n1, n2, n3: STD_LOGIC;beginab


VerzögerungenWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 26


Verzögerungenlibrary IEEE; use IEEE.STD_LOGIC_1164.all;entity example isport(a, b, c: in STD_LOGIC;y: out STD_LOGIC);end;architecture synth of example issignal ab, bb, cb, n1, n2, n3: STD_LOGIC;beginab


Testrahmen• HDL-Programm zum Testen eines anderen HDL-Moduls• Im Hardware-Entwurf schon lange üblich• … seit einigen Jahren auch im Software-Bereich (JUnit etc.)• Getestetes Modul• Device under test (DUT), Unit under test (UUT)• Testrahmen wird nicht synthetisiert• Nur für Simulation benutzt• Arten von Testrahmen• Einfach: Legt nur feste Testdaten an und zeigt Ausgaben an• Selbstprüfend: Prüft auch noch, ob Ausgaben den Erwartungenentsprechen• Selbstprüfend mit Testvektoren: Auch noch mit variablen TestdatenWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 28


BeispielVerfasse VHDL-Code, um die folgende Funktion in Hardware zu berechnen:y = bc + abDer Modulname sei sillyfunctionWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 29


BeispielVerfasse VHDL-Code, um die folgende Funktion in Hardware zu berechnen:y = bc + abDer Modulname sei sillyfunctionVHDLlibrary IEEE; use IEEE.STD_LOGIC_1164.all;entity sillyfunction isport(a, b, c: in STD_LOGIC;y: out STD_LOGIC);end;architecture synth of sillyfunction isbeginy


Einfacher Testrahmen für Beispiellibrary IEEE; use IEEE.STD_LOGIC_1164.all;entity testbench1 is -- kein Input/Outputend;architecture sim of testbench1 iscomponent sillyfunction isport(a, b, c: in STD_LOGIC;y: out STD_LOGIC);end component;signal a, b, c, y: STD_LOGIC;begin-- Instanz des zu testenden Moduls erzeugendut: sillyfunction port map(a => a, b => b, c => c, y => y);-- Eingangswerte anlegen und wartenprocessbegina


Selbstprüfender Testrahmenlibrary IEEE; use IEEE.STD_LOGIC_1164.all;entity testbench2 is -- kein Input/Outputend;architecture sim of testbench2 iscomponent sillyfunction isport(a, b, c: in STD_LOGIC;y: out STD_LOGIC);end component;signal a, b, c, y: STD_LOGIC;begin-- Instanz des zu testenden Moduls erzeugendut: sillyfunction port map(a => a,b => b,c => c,y => y);c


Selbstprüfender Testrahmen mit TestvektorenTrennen von HDL-Programm und Testdaten• Eingaben• Erwartete Ausgaben• Organisiere beides als Vektoren von zusammenhängenden Signalen/Werten• Eigene Datei für Vektoren• Dann HDL-Programm für universellen Testrahmen1. Erzeuge Takt zum Anlegen von Eingabedaten/Auswerten von Ausgabedaten2. Lese Vektordatei in VHDL Array3. Lege Eingangsdaten an4. Warte auf Ausgabedaten, werte Ausgabedaten aus5. Vergleiche aktuelle mit erwarteten Ausgabedaten, melde Fehler bei Differenz6. Noch weitere Testvektoren abzuarbeiten?WS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 33


Selbstprüfender Testrahmen mit Testvektoren• Im Testrahmen erzeugter Takt legt zeitlichen Ablauf fest• Steigende Flanke: Eingabewerte aus Testvektor an Eingänge anlegen• Fallende Flanke: Aktuelle Werte an Ausgängen lesenCLKEingangswerte Ausgangswerteanlegen lesen• Takt kann auch als Takt für sequentielle synchrone Schaltungen verwendetwerdenWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 34


Einfaches Textformat für TestvektordateienDatei: example.tv000_1001_0010_0011_0100_1101_1110_0111_0Aufbau:Eingangsdaten “_” erwartete AusgangsdatenWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 35


Testrahmen:1. Erzeuge Taktlibrary IEEE; use IEEE.STD_LOGIC_1164.all;use STD.TEXTIO.all;entity testbench3 is -- kein Input/Outputend;architecture sim of testbench3 iscomponent sillyfunction isport(a, b, c: in STD_LOGIC;y: out STD_LOGIC);end component;signal a, b, c, y: STD_LOGIC;signal clk, reset: STD_LOGIC;signal yexpected: STD_LOGIC;constant MEMSIZE: integer := 10000;type tvarray is array (MEMSIZE downto 0) ofSTD_LOGIC_VECTOR(3 downto 0);signal testvectors: tvarray; -- Array für Testvektorenshared variable vectornum, errors: integer; -- Verwaltungsdatenbegin-- Instanz des zu testenden Moduls erzeugendut: sillyfunction port map(a => a, b => b, c => c, y => y);-- Takterzeugungprocess beginclk


2. Lese Testvektordatei in Array ein…-- Zu Beginn der Simulation:-- Testdaten einlesen und einen Reset-Impuls erzeugenprocess is -- wird genau einmal ausgeführtfile tv: TEXT;variable i, j: integer;variable L: line;variable ch: character;begini := 0;FILE_OPEN(tv, "example.tv", READ_MODE);while not endfile(tv) loopreadline(tv, L);for j in 0 to 3 loopread(L, ch);if (ch = '_') thenread(L, ch);end if;if (ch = '0') thentestvectors(i)(j)


3. Lege Testdaten an Eingänge an……-- zur steigenden Taktflanke (genauer: kurz danach!)process (clk) beginif (clk'event and clk = '1') thena


4. Warte auf Ausgabedaten, lese Ausgabedaten5. Vergleiche aktuelle Ausgaben mit erwarteten Werten……-- warte auf fallende Flanke zum Lesen der Ausgabedaten der DUTprocess (clk) begin-- erst prüfen, nachdem Schaltung initialisiertif (clk'event and clk = '0' and reset = '0') thenassert y = yexpected -- vergleiche aktuelle Ausgabe mit erwartetem Wertreport "Fehler: y = " & STD_LOGIC'image(y); -- Fehlermeldungif (y /= yexpected) thenerrors := errors + 1; -- zähle Fehlerend if;WS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 39


6. Sind noch weitere Testvektoren abzuarbeiten?…-- Array-Index zum Zugriff auf nächsten Testvektor erhöhenvectornum := vectornum + 1;-- Ist der nächste schon ein ungültiger Testvektor?if (is_x(testvectors(vectornum))) thenreport integer'image(vectornum) & " Tests mit " & integer'image(errors) &" Fehler(n) bearbeitet." severity failure; -- Endmeldung ausgebenend if;end if;end process;end;Hinweis: Zum Vergleichen auf X muss die Funktionis_x()benutzt werdenWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 40


VHDL Sprachkonstrukte in TGDI• Vor Testrahmen alle für die Beschreibung von echter Hardwarerelevanten eingeführt• Schaltungssynthese• VHDL kann viel mehr• Angedeutet beim Testrahmen (Dateioperationen, Ein/Ausgabe, …)• Aber in der Regel nicht mehr in Hardware synthetisierbar• Nicht Schwerpunkt dieser Veranstaltung• Mehr Details zu HDLs in Kanonik Computer Microsystems• Im Sommersemester• In TGDI soll dieser Kurzüberblick reichen• Bei akutem Bedarf werden noch weitere Konstrukte eingeführtWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 41


Weitere Anweisungen zurVerhaltensbeschreibung• Dürfen nur innerhalb von Prozessen (process) benutzt werden• if / else• caseWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 42


Kombinatorische Logik als Prozesslibrary IEEE;use IEEE.STD_LOGIC_1164.all;entity fulladder_blk isport(a, b, cin: in STD_LOGIC;s, cout: out STD_LOGIC);end;architecture synth of fulladder_blk isbeginprocess (a, b, cin) -- Sensitivitätslistevariable p, g: STD_LOGIC; -- interne Variablenbeginp := a xor b; -- blockierendg := a and b; -- blockierends


Kombinatorische Logik mit with … selectlibrary IEEE; use IEEE.STD_LOGIC_1164.all;entity sevenseg isport(data: in STD_LOGIC_VECTOR(3 downto 0);seg: out STD_LOGIC_VECTOR(6 downto 0));end;architecture synth of sevenseg isbeginwith data select-- ABCDEFGseg


Kombinatorische Logik mit case• Um kombinatorische Logik zu beschreiben, muss ein case-Ausdruck alleMöglichkeiten abdecken• Entweder explizit angeben• Oder einen Default-Fall (others) angeben• Tritt in Kraft, wenn sonst keine andere Alternative passt• Im Beispiel verwendetWS 10/11 | Technische Grundlagen der Informatik - Kapitel 3 - Prof. Sorin A. Huss | 46

Weitere Magazine dieses Users
Ähnliche Magazine