28.02.2014 Aufrufe

Vorlesungsfolien Termin 12

Vorlesungsfolien Termin 12

Vorlesungsfolien Termin 12

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Digitaltechnik<br />

Prof. Dr. Sven-Hendrik Voß | Wintersemester 2013<br />

Technische Informatik (Bachelor), Semester 3 <strong>Termin</strong> <strong>12</strong>, 06.01.2014


Seite 2 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Inhaltsverzeichnis<br />

Themen und <strong>Termin</strong>e<br />

Simulation von VHDL-Beschreibungen<br />

Simulation vs. Synthese<br />

Testbenches<br />

Aufbau einer Testbench<br />

Simulation<br />

Modellierung von Zeit<br />

Simulationstechnik<br />

VHDL Simulation<br />

Zeitverhalten von Prozessen<br />

Synthese


Seite 3 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Themen und <strong>Termin</strong>e - Seminaristischer Unterricht<br />

Seminaristischer Unterricht (SU) im Raum B323, montags <strong>12</strong>:15 - 13:45 Uhr<br />

Nr. Datum Themen Kurztest<br />

1 07.10. Einführung und Begriff Digitaltechnik<br />

2 14.10. Flipflops und sequentielle Grundschaltungen<br />

3 21.10. Schaltungsanalyse und -synthese (1)<br />

4 28.10. Schaltungsanalyse und -synthese (2)<br />

5 04.11. Entwicklung komplexer digitaler Systeme (1)<br />

6 11.11. Entwicklung komplexer digitaler Systeme (2) 1<br />

7 18.11. Technische Realisierung von Logikbausteinen (1)<br />

8 25.11. Technische Realisierung von Logikbausteinen (2)<br />

9 02.<strong>12</strong>. Programmierbare Logikbausteine<br />

10 09.<strong>12</strong>. Hardwarebeschreibung in VHDL 2<br />

11 16.<strong>12</strong>. Syntax und Semantik von VHDL<br />

23.<strong>12</strong>. Weihnachtsferien<br />

30.<strong>12</strong>. Weihnachtsferien<br />

<strong>12</strong> 06.01. Simulation von Hardwarebeschreibungen (1)<br />

13 13.01. Simulation von Hardwarebeschreibungen (2)<br />

14 20.01. Entwurf von Zustandsautomaten mit VHDL 3<br />

15 27.01. Praxisbeispiele mit VHDL<br />

16 03.02. Klausur<br />

17 10.02. Klausurrückgabe und -besprechung


Seite 4 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Simulation von VHDL-Beschreibungen<br />

Schaltungssimulation<br />

◮<br />

◮<br />

◮<br />

Verifikation des Quellcodes<br />

Aufbau von Testbenches<br />

Verhaltensbeschreibungen<br />

für alle Komponenten<br />

müssen vorliegen<br />

Initialisierung<br />

Aktualisierung<br />

der Signale<br />

(Delay)<br />

Ausführung der<br />

aktiven Prozesse<br />

Simulationszyklus<br />

Simulationsende


Seite 5 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Simulation von VHDL-Beschreibungen<br />

Funktionale Simulation der Spezifikation<br />

→ Überprüfung der logischen Korrektheit der Spezifikation<br />

insbesondere auf<br />

◮<br />

◮<br />

◮<br />

Funktionalität (Debugging)<br />

Geschwindigkeit / Durchsatz (unter Einbeziehung der<br />

Zielplattformparameter)<br />

Energieverbrauch (unter Einbeziehung der Zielplattformparameter)<br />

Grobe Vorgehensweise:<br />

◮<br />

◮<br />

◮<br />

Anlegen ausgewählter Eingabemuster (Stimuli)<br />

Ist / Soll-Vergleich<br />

wird üblicherweise durch Testbench gesteuert<br />

... durch Simulation der Schaltung


Seite 6 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Simulation vs. Synthese<br />

Simulation<br />

◮<br />

◮<br />

Prozess wird nur dann aufgerufen, wenn Änderung eines Signalwertes<br />

in der Sensitivitätsliste erfolgt<br />

alle Signaländerungen, die bei Ausführung der sequentiellen<br />

Anweisungen durchzuführen sind, werden erst am Prozessende<br />

aktualisiert<br />

Synthese<br />

◮<br />

◮<br />

Sensitivitätsliste wird nicht berücksichtigt<br />

nur der im Prozess enthaltene VHDL-Code ist entscheidend<br />

Auswirkung<br />

◮<br />

◮<br />

Simulation einer anderen Verhaltensweise als das Ergebnis der<br />

Synthese ergibt<br />

Beispiel: Realisierung eines Multiplexers mit einem Prozess ohne<br />

Angabe der Steuersignale in der Sensitivitätsliste<br />

→ daher: bei rein kombin. Schaltungen alle Eingangssignale in Sens.-liste!


Seite 7 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Simulation vs. Synthese<br />

ARCHITECTURE VERHALTEN OF X IS<br />

SIGNAL Y: std_logic;<br />

BEGIN<br />

PROCESS(Y)<br />

BEGIN<br />

Y


Seite 8 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Simulation vs. Synthese<br />

ARCHITECTURE VERHALTEN OF X IS<br />

SIGNAL Y: std_logic;<br />

BEGIN<br />

PROCESS(CLK)<br />

VARIABLE TMP: std_logic;<br />

BEGIN<br />

TMP := ’1’; -- Zuweisung an Variable<br />

-- [ ... ]<br />

IF (TMP = ’1’) THEN<br />

TMP := ’0’;<br />

-- [ ... ]<br />

ELSE<br />

-- [ ... ]<br />

END IF;<br />

Y


Seite 9 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Testbenches<br />

VHDL Logik- und Timing-Simulation durch Testbench<br />

Testbench<br />

UUT<br />

unit under test<br />

Simulation erfordert Modellierung der Schaltung auf jeweiliger Entwurfsebene<br />

und Kontrolle der Funktion dieses Modells bei Eingabe von aussagefähigen<br />

Simulationsstimuli (Eingabewerten).<br />

Simulationsumgebung<br />

◮<br />

◮<br />

unabhängig vom Stadium des Entwurfs (Anteil von Verhaltens- und<br />

Strukturmodell)<br />

Benutzung eines Satzes von Simulationsstimuli, mit dem dieselbe<br />

Funktionalität in allen Ebenen des Entwurfs verifiziert werden kann


Seite 10 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Testbenches<br />

Warum benötigt man beim Beschreiben von Hardware eine Testbench?<br />

Vergleich mit Software-Entwicklung:<br />

◮<br />

◮<br />

◮<br />

◮<br />

Programm lässt sich meist schnell übersetzen und ausprobieren<br />

wenn etwas nicht läuft: Debugger starten<br />

Breakpoint setzen, Inhalt von Variablen, Speicher und<br />

Prozessorregistern prüfen<br />

Fehler finden<br />

Abgrenzung zu Hardware-Entwicklung<br />

◮<br />

◮<br />

◮<br />

◮<br />

Synthese für komplexes Design (auf großem FPGA) kostet meist<br />

mehrere Stunden<br />

kein Debugger verfügbar, stattdessen Logikanalysator (extern oder als<br />

FPGA Soft Core)<br />

iterative Eingrenzung der Problemursachen<br />

mühsame Fehlersuche


Seite 11 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Testbenches<br />

Testbench“ ist eine Entity, die die zu testende Baugruppe (Entity) umgibt<br />

”<br />

Schaltungsentwurf (Unit-Under-Test) wird simuliert durch<br />

◮<br />

◮<br />

◮<br />

Eingabe geeigneter Testmuster an die Schaltungseingänge über einen<br />

gewissen Zeitbereich (Testbench); Darstellung als Wave-Form oder<br />

direkt in VHDL<br />

Simulation des VHDL-Modells der UUT bezüglich dieser Eingabe<br />

Aufzeichnen der Ausgaben (ggf. auch internen Signale) über die<br />

gesamte Testzeit; Darstellung z.B. als Wave-Form<br />

Testbench<br />

UUT<br />

unit under test<br />

Simulator


Seite <strong>12</strong> Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Testbenches<br />

Blackbox Testing<br />

◮<br />

zu testender Schaltungsteil wird als Komponente in der Testbench<br />

instanziiert<br />

Greybox Testing<br />

◮<br />

zusätziche Information zum internen Zustand der zu testenden<br />

Komponente werden angegeben


Seite 13 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Aufbau einer Testbench<br />

Entwurf einer Testbench (normalerweise zu jedem VHDL-Modul)<br />

◮<br />

◮<br />

◮<br />

◮<br />

◮<br />

◮<br />

zusätzlicher VHDL Code zur Überprüfung von VHDL-Konstrukten<br />

Funktionalitätscheck vor der Synthese mittels Simulation<br />

Testbench generiert alle Eingangssignale (Testvektoren) für das zu<br />

testende Modul (UUT) und prüft ggf. Resultate<br />

an den Ausgängen der Testbench werden Stimuli angelegt (verbunden<br />

mit den Eingängen des Prüflings)<br />

an den Eingängen der Testbench (Ausgänge Prüfling) können<br />

Signalverläufe analysiert und mitgeschrieben werden<br />

besteht aus nicht synthetisierbarem VHDL, Merkmal:<br />

entity-Beschreibung leer<br />

Testbench<br />

UUT<br />

unit under test<br />

Testbench und UUT vom Simulator (ModelSim) compiliert und ausgeführt


Seite 14 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Aufbau einer Testbench<br />

Oft bestehen digitale Systeme aus mehreren Submodulen, die in einer<br />

übergeordneten Datei zusammengefügt werden<br />

→ hierzu verwendet man sog. Komponenten (Wiederholung)<br />

Testbench-Erstellung folgt gleichem Prinzip: Zu testendes Modul (Entity) wird<br />

in eine Top-Entity ”<br />

Testbench“ eingefügt!<br />

Besonderheit<br />

VHDL bietet hierzu einen entsprechenden Befehlssatz, der jedoch<br />

nicht synthetisierbar ist.


Seite 15 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Aufbau einer Testbench<br />

Nützliche VHDL-Anweisungen für Testbenches (nicht synthetisierbar)<br />

Zeitliche Steuerung mit ”<br />

wait“<br />

◮<br />

gezieltes Warten<br />

A


Seite 16 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Aufbau einer Testbench<br />

LIBRARY ieee;<br />

USE ieee.std_logic_1164.ALL;<br />

USE ieee.std_logic_unsigned.ALL;<br />

ENTITY XOR_GATE IS<br />

PORT(<br />

A,B : IN std_logic;<br />

Y : OUT std_logic<br />

);<br />

END XOR;<br />

Beispiel für den Test einer<br />

XOR-Schaltung, hier erstmal die<br />

XOR-Beschreibung!<br />

ARCHITECTURE VERHALTEN OF XOR_GATE IS<br />

SIGNAL S: std_logic;<br />

BEGIN<br />

S


Seite 17 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Aufbau einer Testbench<br />

ENTITY TESTBENCH IS -- Testbench-Entity ohne Ports!<br />

END TESTBENCH;<br />

ARCHITECTURE VERHALTEN OF TESTBENCH IS<br />

COMPONENT XOR IS<br />

PORT(<br />

A, B : IN std_logic;<br />

Y : OUT std_logic<br />

);<br />

END COMPONENT;<br />

SIGNAL A_L, B_L, Y_L; : std_logic;<br />

SIGNAL STIMULI; : std_logic_vector(1 DOWNTO 0);<br />

BEGIN<br />

DUT: XOR<br />

PORT MAP(<br />

A => A_L,<br />

B => B_L,<br />

Y => Y_L<br />

);<br />

-- Instanz der zu testenden VHDL-Datei<br />

(B_L, A_L)


Seite 18 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Aufbau einer Testbench<br />

Am Beispiel zu erkennen:<br />

◮<br />

◮<br />

◮<br />

◮<br />

Entity der Testbench enthält keine Schnittstellensignale (leer)<br />

Schnittstellensignale des zu testenden Entwurfs dagegen als lokale<br />

Signale in der Testbench-Architecture deklariert<br />

zu testender Entwurf wird als Komponente eingefügt und entsprechend<br />

instanziiert<br />

lokale Signale und Entity-Signale der instanziierten Komponente<br />

müssen nicht zwingend verschiedene Bezeichnungen haben (z.B. ist<br />

statt ”<br />

A L“ auch ”<br />

A“ möglich)<br />

Stimuli-Signale<br />

◮<br />

◮<br />

mittels Schlüsselwortes ”<br />

after“ und (absoluter) Zeitangabe (sinnvoll in<br />

Einheiten ps oder ns) kann Entwurf gezielt mit Stimuli-Signalen in<br />

zeitlicher Abfolge untersucht werden<br />

Stimuli-Signale sollten immer so gewählt werden, dass alle möglichen<br />

Verhaltensweisen abgeprüft werden können


Seite 19 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Aufbau einer Testbench<br />

Bekanntes Beispiel: UND-Gatter<br />

ENTITY AND_GATE IS<br />

PORT(<br />

In1, In2 : IN std_logic; -- die beiden Eingaenge<br />

Output : OUT std_logic -- der Ausgang<br />

);<br />

ARCHITECTURE CONCURRENT_ASSIGNMENT OF AND_GATE IS<br />

BEGIN<br />

Output


Seite 20 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Aufbau einer Testbench<br />

Beispiel: Testbench für das UND-Gatter<br />

LIBRARY IEEE;<br />

USE IEEE.STD_LOGIC_1164.ALL;<br />

ENTITY AND2TEST IS<br />

END;<br />

ARCHITECTURE SIMPLE OF AND2TEST IS<br />

COMPONENT AND_GATE<br />

PORT(<br />

In1, In2<br />

Output<br />

);<br />

END COMPONENT;<br />

SIGNAL A, B, O : STD_LOGIC;<br />

: IN STD_LOGIC;<br />

: OUT STD_LOGIC<br />

BEGIN<br />

AND_UNDER_TEST : AND_GATE<br />

PORT MAP(<br />

In1 => A, In2 => B,<br />

Output => O<br />

);<br />

PROCESS<br />

BEGIN<br />

A


Seite 21 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Aufbau eines Taktgenerators<br />

Für den Test von getakteten Systemen ist ein Taktsignal zu definieren.<br />

ARCHITECTURE VERHALTEN OF TEST<br />

-- [ ... ]<br />

CONSTANT T: time := 10 ns;<br />

SIGNAL CLK: std_logic := ’0’;<br />

-- [ ... ]<br />

BEGIN<br />

-- [ ... ]<br />

CLK


Seite 22 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Aufbau eines Taktgenerators<br />

Besonderheiten des Taktgenerators<br />

◮ Taktsignal CLK mit Periode T = 10ns<br />

◮ Periodendauer durch Konstante T mit speziellem Datentyp time“ für ”<br />

Zeitangaben bei Simulation festgelegt<br />

◮ Taktsignal mit Wert 0“ initialisiert<br />

”<br />

◮ Hardware-Reset (RST


Seite 23 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Simulation


Seite 24 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Simulation<br />

Simulation auf verschiedenen Abstraktionsebenen<br />

• Behavioral Model<br />

◮<br />

◮<br />

◮<br />

enthält keine Signalverzögerungen durch Gatter oder Leitungen<br />

nur Testen der logischen Funktionalität<br />

beispielsweise sind RC-Adder und CLA-Adder äquivalent<br />

• Post-Map Model<br />

◮<br />

◮<br />

◮<br />

enthält Signalverzögerungen für die Gatter<br />

abhängig von Zieltechnologie (z.B. CMOS Bibliothek xxx oder FPGA<br />

xxx)<br />

simuliert Funktionalität und Zeitverhalten<br />

• Post-Place & Route Model<br />

◮<br />

◮<br />

enthält zusätzlich Signalverzögerungen durch Leitungen<br />

abhängig von Platzierung der Gatter auf dem Chip (Länge der<br />

Verbindungen)


Seite 25 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Modellierung von Zeit<br />

Vordefinierter VHDL-Typ TIME<br />

-- im Package ’standard’ vordefiniert:<br />

TYPE time IS RANGE <br />

UNITS<br />

fs;<br />

-- Femtosekunden<br />

ps = 1000 fs -- Pikosekunden<br />

ns = 1000 ps -- Nanosekunden<br />

us = 1000 ns -- Mikrosekunden<br />

ms = 1000 us -- Millisekunden<br />

sec = 1000 ms -- Sekunden<br />

min = 60 sec -- Minuten<br />

hr = 60 min -- Stunden<br />

END UNITS;<br />

In VHDL kann man sowohl die Verzögerungszeiten von<br />

◮<br />

◮<br />

kombinatorischer Logik (kombinatorische Zuweisungen), als auch von<br />

sequentieller Logik (Prozesse) modellieren


Seite 26 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Verzögerungszeiten<br />

Kombinatorische Zuweisungen (concurrent assignments)<br />

x0<br />

y0<br />

4 ns<br />

&<br />

z, 0 w<br />

Inertial Delay<br />

Transport Delay<br />

z


Seite 27 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Verzögerungszeiten<br />

Inertial Delay modelliert Trägheit der Gatter, Eingangskapazitäten<br />

der Gatter absorbieren kurze Impulse<br />

Transport Delay modelliert reine Verzögerungszeit der Gatter,<br />

SEingangsimpulse werden unabhängig von ihrer<br />

Dauer abgebildet<br />

Delta Delay Reaktion des Gatters idealerweise ohne<br />

Verzögerung, dies ist die Default-Einstellung<br />

in VHDL


Seite 28 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Modellierung von Zeit<br />

Prozesse<br />

◮<br />

◮<br />

Prozess hat mindestens eine wait-Anweisung<br />

Sensitivitätsliste entspricht wait-Anweisung am Ende des Prozesses<br />

Beispiele für wait-Anweisungen<br />

wait;<br />

Prozess wartet für immer<br />

wait on < signal list >; Prozess wartet auf eine Änderung bei einem<br />

der angegebenen Signale<br />

wait until (condition); Prozess wartet bis eine Bedingung wahr wird<br />

wait for <strong>12</strong>ns;<br />

Prozess wartet die angegebene Zeit


Seite 29 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Modellierung von Zeit<br />

Hier: zwei äquivalente Prozesse<br />

logic1 : PROCESS(x1, x2, x3)<br />

BEGIN<br />

IF (x1 = ’1’) THEN<br />

y


Seite 30 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Simulationstechnik<br />

Gruppen von Simulationsverfahren<br />

• Zeitgetriebene Simulation<br />

◮<br />

◮<br />

◮<br />

◮<br />

Auswerten des Testmodells in äquidistanten Zeitschritten (z.B. alle 3 ns)<br />

verwendet z.B. für mechanische Systeme oder analoge Schaltungen,<br />

deren Verhalten durch Differentialgleichungen beschrieben wird<br />

Rechenaufwand von Auflösung und Simulationszeitraum abhängig<br />

nicht für VHDL Simulation geeignet<br />

• Ereignisgetriebene Simulation<br />

◮<br />

◮<br />

◮<br />

Auswerten des Testmodells nur bei Änderungen (Ereignissen):<br />

Änderung eines Eingangs oder eines internen Signals<br />

Rechenaufwand nur von Anzahl der Ereignisse abhängig → schnell<br />

Basisverfahren für VHDL Simulatoren<br />

◮ Event :=< Signal, Wert, Zeitpunkt >


Seite 31 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Simulationstechnik<br />

Ereignisgetriebene Simulation<br />

◮ Event :=< Signal, Wert, Zeitpunkt ><br />

◮<br />

Event ändert den Wert eines Signals zu einem bestimmten Zeitpunkt<br />

Simulationsschritte<br />

1. Simulator startet mit Simulationszeit 0<br />

2. alle bekannten Events (Testbench) werden in eine Ereignisliste<br />

eingetragen<br />

3. Simulaionszeit wird auf Zeit des nächsten Events gesetzt<br />

4. Event wird ausgewertet und erzeugt ggf. neue Events (alle Prozesse /<br />

Zuweisungen die von dem Signal des Events abhängen)<br />

5. wiederhole 3. bis 4. bis kein Event mehr auftritt oder eine vorgegebene<br />

maximale Simulationszeit erreicht wird


Seite 32 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

VHDL Simulation<br />

Haupt-Datenstruktur des Simulators ist die Ereignisliste (event queue)


Seite 33 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

VHDL Simulation<br />

Haupt-Datenstruktur des Simulators ist die Ereignisliste (event queue)<br />

Annahme: Alle Zeitangaben sind ein Vielfaches von t n<br />

Simulationszustand zum Zeitpunkt t n:<br />

◮ Liste der Ereignisse zum Zeitpunkt t n+1<br />

◮ Liste der Ereignisse zum Zeitpunkt t n+2<br />

◮ ...<br />

◮ Liste der Ereignisse zum Zeitpunkt t n+i (für beliebig großes i)<br />

Simulationsablauf: Zum Zeitpunkt t n+i werden...<br />

◮<br />

◮<br />

die Ereignisse der Liste (Zuweisung neuer Werte an Signale) ausgeführt<br />

die von diesen Signalen abhängigen Prozesse aktiviert und ausgeführt


Seite 34 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

VHDL Simulation<br />

Problem: Logikelemente, die eine Verzögerungszeit von 0 haben<br />

◮<br />

◮<br />

Events zu einem Zeitpunkt generieren wieder Events zu diesem<br />

Zeitpunkt<br />

mehrere (unendlich viele) Simulationszyklen können für einen Zeitpunkt<br />

t ausgeführt werden


Seite 35 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

VHDL Simulation<br />

Problem: Logikelemente, die eine Verzögerungszeit von 0 haben<br />

◮<br />

◮<br />

Events zu einem Zeitpunkt generieren wieder Events zu diesem<br />

Zeitpunkt<br />

mehrere (unendlich viele) Simulationszyklen können für einen Zeitpunkt<br />

t ausgeführt werden<br />

Was passiert?<br />

◮<br />

◮<br />

◮<br />

bei Ausführung zum Zeitpunkt t werden Daten in die Ereignisliste für<br />

Zeitpunkt t geschrieben, obwohl der zu t gehörige Simulationszyklus<br />

schon läuft<br />

am Ausgang entsteht Puls mit Breite 0 (zero-width pulse)<br />

Auswertungsreihenfolge bestimmt ob zero-width pulse entsteht, d.h.<br />

verschiedene Simulatoren können verschiedene Ausgaben liefern!


Seite 36 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

VHDL Simulation<br />

Lösung: in VHDL gibt es keine Verzögerungszeit von 0!<br />

◮<br />

◮<br />

◮<br />

ein Event, das von einem anderen Event direkt kausal abhängt, findet<br />

um ein Delta-Delay verzögert statt<br />

Delta-Delay sind künstliche Delays<br />

neu eingetragene Daten in die Event List werden erst im nächsten<br />

Simulationszyklus den Signalen zugewiesen<br />

◮<br />

Simulatorverhalten wird damit standardisiert


Seite 37 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Event-Queue mit Delta-Delays<br />

◮<br />

◮<br />

◮<br />

Delta-Delays ordnen Events innerhalb eines Zeitpunkts<br />

Delta-Delays lassen die Simulationsuhr nicht fortschreiten<br />

können sich aber nie zu einem echten Zeitschritt aufaddieren


Seite 38 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Event-Queue mit Delta-Delays<br />

Initialisierungsphase und Stopregel<br />

• Initialisierung<br />

◮<br />

◮<br />

◮<br />

◮<br />

Erzeugung einer leeren Liste<br />

Setzen aler Signale auf ihre kleinstmöglichen“ Werte<br />

”<br />

Einfügen der von außen gesetzten Signal in die Liste<br />

Aktivierung aller Prozesse<br />

• Stopregeln<br />

◮<br />

◮<br />

leere Liste<br />

Überschreiten des zu simulierneden Zeitintervalls


Seite 39 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Zeitverhalten von Prozessen<br />

Prozesse...<br />

◮<br />

◮<br />

modellieren sequentielle Abläufe<br />

sind implizit auch Concurrent Statements, d.h. in einer<br />

VHDL-Beschreibung existieren alle Prozesse und alle expliziten<br />

Concurrent Statements parallel<br />

Ein Prozess...<br />

◮<br />

◮<br />

◮<br />

wird am Anfang der Simulation einmal ausgeführt (initialisiert) bis zum<br />

wait-Statement oder zum Ende des Prozesses, falls kein wait-Statement<br />

existiert<br />

bleibt nach einem Durchlauf zwar aktiv, geht aber in einen<br />

Schlaf-Zustand“ über (suspend)<br />

”<br />

wird erst wieder aufgeweckt“ (resume) und macht einen Durchlauf,<br />

”<br />

wenn ein Event bei einem der Signale (in der Sensitivitätsliste oder der<br />

wait on- / until-Bedingung) auftritt, oder wenn die mit wait for“ ”<br />

angegebene Verzögerungszeit abgelaufen ist


Seite 40 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Zeitverhalten von Prozessen<br />

Prozess-Zustandsübergangsgraph<br />

aktiv<br />

Änderung eines Signals<br />

der Sensitivitätsliste<br />

gestoppt<br />

Simulator holt<br />

Prozeß aus<br />

der Queue<br />

running<br />

...läuft bis eine wait-<br />

Anweisung kommt<br />

Prozeß fertig<br />

abgearbeitet<br />

Simulationszyklus<br />

◮<br />

◮<br />

Auswertung der Signale der aktiven Prozesse<br />

Zuweisung der Werte an die Signale


Seite 41 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Synthese<br />

Hardwarebeschreibungssprachen<br />

◮<br />

◮<br />

ursprünglich zur Simulation von Hardware entwickelt<br />

heute auch als Eingabesprache für die Synthese verwendet<br />

Synthese<br />

◮<br />

◮<br />

◮<br />

◮<br />

automatisierter Entwurf von digitalen Schaltungen<br />

manche VHDL-Sprachkonstrukte sind nicht synthetisierbar<br />

synthetisierbares VHDL Subset ist im Standard IEEE 1076.6 definiert<br />

die meisten Synthesewerkzeuge können mehr als diesen Standard,<br />

meist Hersteller-spezifisch


Seite 42 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Synthese<br />

Was macht für die Synthese keinen Sinn?<br />

◮ vorgegebene Zeiten: after, wait for, ...<br />

◮<br />

◮<br />

Datei-Operationen: es gibt kein Filesystem in Hardware<br />

Initialisierung von Signalen nicht durch jede Ziel-Technologie unterstützt<br />

Beispiele<br />

◮<br />

kombinatorische Zuweisungen werden direkt in Gatter umgesetzt<br />

z


Seite 43 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />

Synthese<br />

◮<br />

◮<br />

Merke:<br />

◮<br />

◮<br />

hierarchisches VHDL wird in Verdrahtung umgesetzt<br />

sequentielles VHDL kann in kombinatorische und/oder sequentielle<br />

Logik umgesetzt werden<br />

werden bei If- und Case-Anweisungen alle Fälle auscodiert, so wird<br />

kombinatorische Logik erzeugt, ansonsten Latches<br />

bei Abfragen auf Signalflanken werden Flipflops erzeugt, und zwar für<br />

alle Signalzuweisungen innerhalb eines Prozesses

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!