Hardware Reference
In-Depth Information
Bit i ändert sich nur, wenn alle niederwertigeren Bits nach »0« wechseln. Ist
diese Bedingung erfüllt, gilt Folgendes:
• Wenn der Bitwert »0« ist, dann setze ihn gleich »1«.
• Wenn der Bitwert »1« und kein höherwertigeres Bit ungültig ist, dann
setze ihn gleich »X«,
• sonst setze ihn gleich »0«.
Der Eingabeparameter
ist innerhalb des Unterprogramms nur lesbar. Des-
halb wird eine typgleiche lokale Variable
x
für den Ausgabewert angelegt,
die den Indexbereich und den Wert des Eingabeparameters übernimmt (Abb.
3.9 b). Die Wiederholschleife im Anweisungsteil läuft von der unteren zur obe-
ren Grenze des Indexbereichs, führt die entsprechenden Bitzuweisungen aus
und bricht ab, wenn das aktuelle Bit nicht nach »0« wechselt.
Die so definierte Hilfsfunktion dient zur Simulation erschöpfender Tests
für kombinatorische Schaltungen. Ein erschöpfender Test ist ein Test, der
eine Funktionseinheit nach einem Vollständigkeitskriterium - hier mit einem
Testsatz, der alle Eingabevariationen von »0«, »1« und »X« mit maximal
einem »X« enthält, - testet [29].
Im nachfolgenden Testrahmen wird die kombinatorische Funktion »fW-
Tab(...)« aus dem Vorabschnitt mit einem mit der Funktion »countx(...)«
generierten Testsatz erschöpfend getestet. Die Variable
y
wird mit dem ersten
Eingabewert für die zu testende Funktion »000« initialisiert. Nach jeder Bild-
schirmausgabe des Testeingabewertes und des zugehörigen Funktionswertes
bildet die Funktion »countx(...)« den Folgewert für die Testeingabevariable
x. Ist dieser gleich dem Anfangswert, wird eine Warteanweisung ohne Weck-
bedingung ausgeführt, die den Prozess und mit ihm die gesamte Simulation
beendet. Ansonsten - ein Prozess wird in eine Endlosschleife übersetzt - wird
die Abarbeitung mit der nächsten Bildschirmausgabe fortgesetzt.
x
-- Vereinbarungen im Testprozess
variable x:std_logic_vector( 2 downto 0 ):= "000" ;
-- Anweisungsfolge im Testprozess
write( "x=" & str(x) & " fWTab(x)=" & str(fWTab(x)));
x := countx(x);
if x="000" then wait ; end if ;
)WEB-Projekt:P3.1/Test_countx.vhdl
Der Objekttyp
Standardmäßig werden die Eingabeparameter an ein Unterprogramm als ini-
tialisierte Konstanten übergeben. Bei dieser Art der Übergabe ist innerhalb
des Unterprogramms nur der übergebene Wert lesbar.
Um von einem Signal innerhalb eines Unterprogramms auch die Signal-
attribute auswerten zu können, muss der Parameter den Objekttyp »signal«
haben. Ein Beispiel sei eine Funktion zur Detektierung einer steigenden Signal-
flanke. Der Eingabeparameter ist als Signal vereinbart, so dass funktionsintern
 
Search WWH ::




Custom Search