VHDL Verhaltensmodellierung Dr.-Ing. Volkmar Sieh Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2013 VHDL Verhaltensmodellierung 1/18 2013-01-11
Inhalt Operatoren Signalzuweisungen Nebenläufige Anweisungen Sequentielle Anweisungen VHDL Verhaltensmodellierung 2/18 2013-01-11
Operatoren VHDL definiert eine Reihe von Operatoren, die größtenteils bereits aus anderen Sprachen bekannt sein sollten. Arten von Operatoren Logische NOT, AND, NAND, OR, NOR, XOR, XNOR, SLL, SRL, SLA, SRA, ROL, ROR Vergleichende =, /=, <, <=, >, >= Addierende +, -, & Signum +, - Multiplizierende *, /, MOD, REM Diverse **, ABS (Aufsteigende Priorität.) VHDL Verhaltensmodellierung 3/18 2013-01-11
Operatoren (2) Wirkung auf Vektoren Logische Operatoren wirken elementweise, Vergleichsoperatoren wirken lexikographisch, Arithmethische Operatoren können nicht auf Vektoren angewandt werden, & konkateniert Elemente immer zu Vektoren. VHDL Verhaltensmodellierung 4/18 2013-01-11
Signalzuweisungen Eigenschaften Signalzuweisungen wirken sich immer verzögert aus! Verzögerungen können explizit in Zeiteinheiten (vom Typ time) angegeben werden, wiederholte Zuweisungen an dasselbe Signal können vorherige verdrängen ( Preemption ), ohne Zeitangabe: Verzögerung bis zum nächsten Simulationsschritt. (Details zu Preemption und Simulationsschritten im nächsten Kapitel). VHDL Verhaltensmodellierung 5/18 2013-01-11
Nebenläufige Anweisungen Eigenschaften Stehen unmittelbar im Anweisungsteil einer Architektur, können benannt werden (mittels Labels), drei Arten: Signalzuweisungen, Zusicherungen (Assertions), Prozesse. VHDL Verhaltensmodellierung 6/18 2013-01-11
Nebenläufige Zuweisungen Eigenschaften Drei Varianten einfache Signalzuweisungen, mit Bedingung, mit mehrteiliger Auswahl. Beispiel: Latch ENTITY l a t c h IS PORT ( d, c l k : IN b i t ; q : BUFFER b i t ) ; END l a t c h ; VHDL Verhaltensmodellierung 7/18 2013-01-11
Nebenläufige Zuweisungen (2) Beispiel: Latch (Forts.) ARCHITECTURE conc1 OF l a t c h IS BEGIN csa : q <= d WHEN c l k = 1 ELSE UNAFFECTED; END conc1 ; ARCHITECTURE conc2 OF l a t c h IS BEGIN s s a : WITH c l k SELECT q <= d WHEN 1, UNAFFECTED WHEN OTHERS; END conc2 ; VHDL Verhaltensmodellierung 8/18 2013-01-11
Zusicherungen Eigenschaften Beispiele Zur Überprüfung von Bedingungen, i.d.r. nur für die Simulation relevant, verschiedene Fehlerklassen: note, warning, error, failure. r e s e t _ c h e c k : ASSERT s i g _ r e s e t /= 0 REPORT " Reset a k t i v! " SEVERITY note ; ASSERT ( now = 0 f s ) OR ( sig_a /= U ) REPORT " sig_a u n i n i t i a l i s i e r t! " ; VHDL Verhaltensmodellierung 9/18 2013-01-11
Prozesse Eigenschaften Umgebung für sequentielle Befehle, zur Modellierung algorithmischer Vorgänge, jeder Prozess ist eine nebenläufige Anweisung, Prozess-Aktivierung und -stopp durch: Sensitivliste im Prozess-Kopf; Prozess wird einmal bei der Initialisierung durchlaufen und danach jedesmal, wenn sich eines der sensitiven Signale ändert, WAIT Prozess wird immer bis zur nächsten WAIT-Anweisung bearbeitet und wieder aktiviert, wenn deren Bedingung erfüllt ist. Prozesse werden in einer (impliziten) Endlosschleife durchlaufen. VHDL Verhaltensmodellierung 10/18 2013-01-11
Prozesse (2) Beispiel: Latch als Prozess ARCHITECTURE seq1 OF l a t c h BEGIN q_assg : PROCESS ( d, c l k ) BEGIN IF c l k = 1 THEN q <= d ; END IF ; END PROCESS; END seq1 ; IS VHDL Verhaltensmodellierung 11/18 2013-01-11
Sequentielle Anweisungen Arten Der Rumpf von Prozessen wird von verschiedenen, z.t. bereits bekannten Anweisungen gebildet: Signal- und Variablenzuweisungen, Assertions, IF-ELSIF-ELSE-Anweisungen, CASE-Anweisungen, Schleifen, WAIT-Anweisungen,... Für die noch nicht behandelten werden im Folgenden kurze Beschreibungen bzw. Beispiele gegeben. VHDL Verhaltensmodellierung 12/18 2013-01-11
IF-ELSIF-ELSE Beispiel IF addr = 1 THEN cont <= ( 0, 0, 1, 1 ) ; ELSIF addr = 2 THEN cont <= " 0111 " ; ELSIF addr = 3 THEN cont <= b" 1100 " ; ELSE cont <= x " f " ; END IF ; VHDL Verhaltensmodellierung 13/18 2013-01-11
CASE Beispiel CASE addr IS WHEN 1 => cont <= ( 0, 0, 1, 1 ) ; WHEN 2 => cont <= " 0111 " ; WHEN 3 => cont <= b" 1100 " ; WHEN OTHERS => cont <= x " f " ; END CASE; VHDL Verhaltensmodellierung 14/18 2013-01-11
Schleifen Arten FOR a_range LOOP WHILE condition LOOP LOOP Zählschleife, While-Schleife, Endlosschleife. Beispiel FOR i IN a RANGE LOOP y ( i ) <= a ( i ) NAND b ( i ) ; END LOOP; VHDL Verhaltensmodellierung 15/18 2013-01-11
WAIT Eigenschaften Unterbricht die Ausführung des Prozesses, bis eine bestimmte Bedingung eingetreten ist. Folgenden Varianten existieren: WAIT ON wartet auf ein Event an mindestens einem der angegebenen Signale, WAIT UNTIL wartet, bis die gegebene Bedingung (Boolescher Ausdruck) eingetreten ist, WAIT FOR wartet, bis die angegebene Zeitspanne verstrichen ist. WAIT wartet für immer ; Prozessende. (Sinnvolle) Kombinationen sind möglich. VHDL Verhaltensmodellierung 16/18 2013-01-11
WAIT (2) Beispiel: Latch mit WAIT ON ARCHITECTURE seq2 OF l a t c h BEGIN q_assg : PROCESS BEGIN IF c l k = 1 THEN q <= d ; END IF ; WAIT ON d, c l k ; END PROCESS; END seq2 ; IS VHDL Verhaltensmodellierung 17/18 2013-01-11
WAIT (3) Beispiel: Latch mit WAIT ON.. UNTIL ARCHITECTURE seq3 OF l a t c h BEGIN q_assg : PROCESS BEGIN q <= d ; WAIT ON d, c l k UNTIL c l k = 1 ; END PROCESS; END seq3 ; IS VHDL Verhaltensmodellierung 18/18 2013-01-11