Grundlagen der Technischen Informatik Kapitel 10, VHDL, Teil 3 Prof. Dr.-Ing. Jürgen Teich Lehrstuhl für Hardware-Software-Co-Design Grundlagen der Technischen Informatik VHDL • Entwurf einer Verkehrsampelsteuerung • Syntax und Semantik von VHDL • Simulation von Hardwarebeschreibungen – Funktionsweise einer Simulation – Einige Fallen – Testbenches Grundlagen der Technischen Informatik 2 Funktionale Simulation • Funktionale Simulation der Spezifikation = Überprüfung der logischen Korrektheit der Spezifikation • Grobe Vorgehensweise: • Anlegen ausgewählter Eingabemuster, den Stimuli • Ist / Soll-Vergleich • wird üblicherweise durch Testbench gesteuert Grundlagen der Technischen Informatik 3 Testbenches • VHDL-Beschreibungen zur Steuerung der Simulationsläufe – Eingabe der Testvektoren – Vergleich der Ist- und Soll-Werte Referenz Simulation DUT Eingabe Design Under Test (DUT) Erzeuge bzw. lese Eingabeund Soll-Werte compare Soll-Werte DUT Ausgabe pass / fail Grundlagen der Technischen Informatik 4 Ereignisgesteuerte Simulation • Ereignis ist im Wesentlichen eine Zuweisung eines Wertes an ein Signal zu festgelegtem Zeitpunkt (in der Zukunft) Zeitpunkt, Signal, Wert • Ereignisse werden zeitlich geordnet in Ereignistabelle eingetragen • Wenn die Simulation die Zeit weiterschaltet: – in Tabelle nachsehen, welche Ereignisse für den erreichten Zeitpunkt enthalten sind. Grundlagen der Technischen Informatik 5 Simulation von VHDL-Beschreibungen • Zwei-Phasen-Modell: Simulationsstart Aktualisierungsphase Abarbeitungsphase Simulationsende Grundlagen der Technischen Informatik 6 Simulation von VHDL-Beschreibungen • Zwei-Phasen-Modell: Simulationsstart Werte der Signale auf Initialwerte setzen Simulationszeit auf den Zeitpunkt setzen, für den nächstes Ereignis vorliegt aktive Prozesse abarbeiten und neue Ereignisse in Liste einsortieren Aktualisierungsphase Werte der Signale für aktuellen Zeitpunkt aktualisieren Abarbeitungsphase Bestimmung der Prozesse, die aktiv werden Grundlagen der Technischen Informatik 7 Simulationsende Simulation von VHDL-Beschreibungen • Zwei-Phasen-Modell: Simulationsstart Aktualisierungsphase Abarbeitungsphase Stopregeln: • Leere Ereignistabelle • Überschreiten des zu simulierenden Zeitintervalls Grundlagen der Technischen Informatik 8 Simulationsende Prozessübergangsgraph Änderung eines Signals der Sensitivitätsliste aktiv Simulator holt Prozess aus Queue gestoppt gestoppt running … läuft, bis eine waitAnweisung kommt. Grundlagen der Technischen Informatik 9 Aktivierung eines Prozesses • Jeder Prozess P sollte eine Sensitivitätsliste S(P) besitzen = Liste der Signale, von denen der Prozess abhängt architecture RTL1 of NANDXOR is begin process (A, B, C) begin if (C='0') then D <= A nand B after 5 ns; else D <= A and B after 10 ns; end if; end process; end RTL1; architecture RTL2 of NANDXOR is begin process begin if (C='0') then D <= A nand B after 5 ns; else D <= A and B after 10 ns; end if; wait on A, B, C; end process; end RTL2; • Beide Darstellungen sind äquivalent! Grundlagen der Technischen Informatik 10 Problem bei Prozessen ohne Zeitverzögerung architecture RTL of NOT_A is signal a : bit := ‘0‘; begin process begin a <= not a; wait on a; end process; end RTL2; Bei Ausführung zum Zeitpunkt t0: • L(t0)=L(t0)+(D,new_value), d.h. es werden Daten in die Ereignistabelle für Zeitpunkt t0 geschrieben, obwohl der zu t0 gehörige Simulationszyklus schon läuft. Vorgehen von VHDL-Simulatoren: • Neu eingetragene Daten in L(t0) werden erst im nächsten Simulationszyklus den Signalen zugewiesen (Delta-Schritte). • Erst wenn alle Delta-Schritte abgearbeitet sind, wird der nächste „echte“ Zeitschritt veranlasst. Grundlagen der Technischen Informatik 11 Problem bei Prozessen ohne Zeitverzögerung Bei Ausführung zum Zeitpunkt t0: • L(t0)=L(t0)+(D,new_value), d.h. es werden Daten in die Ereignistabelle für Zeitpunkt t0 geschrieben, obwohl der zu t0 gehörige Simulationszyklus schon läuft. architecture RTL of NOT_A is signal a : bit := ‘0‘; begin process begin a <= not a; Vorgehen von VHDL-Simulatoren: wait on a; end process; • Neu eingetragene Daten in L(t0) Delta-Delay end RTL2; werden erst im nächsten Simulationszyklus den Signalen zugewiesen (Delta-Schritte). t0 t0+1∙t t0+2∙t t0+3∙t t0+4∙t … • Erst wenn alle Delta-Schritte a 0 1 0abgearbeitet 1 sind, 0 wird der nächste „echte“ Zeitschritt veranlasst. Es können mehrere (unendlich viele) Simulationszyklen für einen Zeitpunkt t0 ausgeführt werden! Grundlagen der Technischen Informatik 12 Beispiel „Normale Anwendung“ des Delta-Delays Event: c <= ‘1‘ after 1ns; architecture RTL2 of ABC is signal a : bit := ‘0‘; signal b : bit := ‘0‘; Initialisierung signal c : bit := ‘0‘; begin process begin b <= ‘1‘; c <= ‘1‘ after 1 ns; wait for 1 ns; a <= b; b <= a; wait for 1ns; end process; end RTL2; Events: a <= b; b <= a; Event: b <= ‘1‘; t0 t0+1∙t t1 t1+1∙t (= 0ns) (= 1ns) a 0 0 0 1 b 0 1 1 0 c 0 0 1 1 Grundlagen der Technischen Informatik 13 Beispiele zur Erklärung der Funktionsweise entity test is end test; architecture verhalten of test is signal clock: bit := '0'; begin process begin clock <= not clock after 10 ns; end process; -- Ausgabe auf dem Monitor assert clock='0' report "clock auf 1" severity NOTE; assert clock='1' report "clock auf 0" severity NOTE; end verhalten; Keine Ausgabe auf dem Monitor ! Simulator gerät zur Simulationszeit 0 in unendliche Schleife ! Grund: Keine WAIT-Anweisung im Prozess! process (clock) wait on clock; Grundlagen der Technischen Informatik 14 funktioniert nur mit Senistivitätsliste bzw. wait. Andere Modellierungsmöglichkeit entity test is end test; ... funktioniert auch! architecture verhalten of test is Grund: impliziter Prozess implizite Prozesse haben alle Signale der rechten Seite in ihrer Sensitivitätsliste Signal muss jedoch initialisiert werden signal clock: bit := '0'; begin clock <= not clock after 10 ns; -- Ausgabe auf dem Monitor assert clock='0' report "clock auf 1" severity NOTE; assert clock='1' report "clock auf 0" severity NOTE; end verhalten; Grundlagen der Technischen Informatik 15 Zusammenfassung • VHDL-Beschreibungen können simuliert werden. • Dazu muss auch eine Testbench (in VHDL) geschrieben werden, die alle Eingangssignale und Clocks über die Simulationszeit beschreibt. • Für Validierung und Verifikation können die Ist-Werte mit Soll-Werten verglichen werden. • Ereignisgesteuerten Simulation von VHDL: – In der Abarbeitungsphase werden Ereignisse (=Zeitpunkt + Signal + Wert) aller aktiven Prozesse in einer Ereignistabelle chronologisch einsortiert. – In der Aktualisierungsphase werden alle Ereignisse des nächsten Zeitpunkts abgearbeitet. Grundlagen der Technischen Informatik 16 Selbst VHDL schreiben und simulieren… • Viel kommerzielle Software, aber auch Gratis- und Studenten-Versionen, z.B. Xilinx Vivado HL WebPACK http://www.xilinx.com/support/download.html (1,14 GB !) • Auch Cloud-basierte Simulatoren verfügbar, z.B. EDA playground http://www.edaplayground.com/ Grundlagen der Technischen Informatik
© Copyright 2024 ExpyDoc