Hardware Reference
In-Depth Information
Der Anweisungsteil besteht aus einer Schleife, in der der interne Zustand an
das Ausgabesignal zugewiesen, mit der Übergangsfunktion aus Abb. 3.9 b der
Folgezustand berechnet und für die Dauer eines Testschritts gewartet wird.
Wenn wieder der Startwert erreicht wird, beendet sich die Prozedur und mit
ihr auch der einrahmende Prozess. Die Bitbreite des Testeingabesignals wird
erst beim Aufruf festgelegt, so dass die Prozedur für den Test von Schaltungen
mit einer beliebigen Eingabebitbreite genutzt werden kann:
procedure Testgen( signal y: out std_logic_vector; tP:delay_length) is
constant Startwert:std_logic_vector(y'range):=( others => '0' );
variable z:std_logic_vector(y'range):=Startwert;
begin
loop
y <=vz;
z := countx(z);
wait for tP;
exit when z=Startwert;
end loop ;
end procedure ;
Testeingabe- y
generator
WEB-Projekt:P3.1/UPpack.vhdl
Das dritte Beispiel ist die Auslagerung eines Prozesses für die Protokollie-
rung der Anschlusssignaländerungen des NAND-Gatters in eine nebenläufige
Prozedur. Für diese Prozedur sind alle Gatteranschlusssignale Eingabesignale:
procedure Ausgabe( signal x:std_logic_vector;
signal y:std_logic) is
Bildschirm-
ausgabe
begin
write(rechts(str(now), 10 ) & ": x=" & str(x)
& " y=" & str(y));
end procedure ;
x
y
WEB-Projekt:P3.1/UPpack.vhdl
Der einrahmende Prozess ruft die Prozedur zum Simulationsbeginn und
bei jeder Änderung von einem der beiden Schnittstellensignale auf. Bei je-
dem Aufruf werden die aktuelle Simulationszeit und die Signalwerte auf
dem Bildschirm ausgegeben. Danach gibt die Prozedur den Kontrollfluss bis
zum nächsten Aufruf ab. Die verwendete Funktion »rechts(
Zeichenkette
,
Zei-
chenanzahl
)« dient zur Formatierung der Textausgabe. Sie ist im Package
»Tuc.Ausgabe« definiert und verlängert die übergebene Zeichenkette um füh-
rende Leerzeichen auf die Länge »
« (siehe Anhang A.2.1).
Im Testrahmen in Abb. 3.11 a werden alle drei Prozeduren nebenläufig
aufgerufen. Zum Testbeginn startet jeder der einrahmenden Prozesse seine
Prozedur. Die Testgeneratorprozedur weist den ersten Ausgabewert zu und
legt sich intern für 2 ns schlafen. Die Gatterprozedur weist den ersten Aus-
gabewert zu und wartet dann auf Eingabeänderungen. Die Protokollprozedur
schreibt die erste Zeile und wartet auf eine Änderung eines ihrer überwach-
ten Eingabesignale. An den Bildschirmausgaben während der Simulation in
Zeichenanzahl
 
Search WWH ::




Custom Search