Hardware Reference
In-Depth Information
signal x, y:std_logic_vector( 2 downto 0 );
constant th:delay_length:= ...;
constant td:delay_length:= ...;
...
y <= " XXX " after th, fWTab(x) after td ;
In der Synthesebeschreibung entfallen die grau unterlegten Beschreibungsbe-
standteile
3
. Eine Package-Funktion zur Beschreibung des Eingabe-Ausgabe-
Verhaltens einer kombinatorischen Schaltung wird in einem Entwurfsprojekt
mehrfach verwendet: einmal für den separaten Test, mindestens einmal im
Simulationsmodell und mindestens einmal in der Funktionsvorgabe für die
Synthese. Deshalb ist die Auslagerung in ein Unterprogramm auch zu emp-
fehlen.
Felder mit variablem Indexbereich
Die lokalen Variablen und Konstanten eines Unterprogramms werden erst
beim Aufruf angelegt und initialisiert. Dadurch ist es möglich, die Anfangs-
werte der Datenobjekte und die Größe der Felder aus den Werten der Aufruf-
parameter berechnen zu lassen. Das gilt insbesondere auch für Konstanten.
Ein Beispiel für eine VHDL-Funktion mit einer Bitvektorvariablen, deren
Größe und Anfangswert von einem Eingabeparameter festgelegt wird, sei die
Übergangsfunktion eines Spezialzählers zur Erzeugung von Testeingaben vom
Typ std_logic_vector. Der Zähler soll zyklisch alle gültigen und auch
alle Eingabevariationen mit einem einzelnen ungültigen Bit erzeugen. In Abb.
3.9 a ist die Zählreihenfolge für einen 3-Bit-Zustandsvektor dargestellt. Ein
function countx(x:std_logic_vector) return std_logic_vector is
variable y:std_logic_vector(x'range):=x;
begin
for idx in x'low to x'high loop
if y(idx)= '0' then y(idx) := '1' ; exit ;
elsif y(idx)= '1' and not is_X(y(y'high
downto idx+ 1 )) then
y(idx) := 'X' ; exit ;
else y(idx) := '0' ;
end if ;
end loop ;
return y;
end function ;
x 2 x 1 x 0 x 2 x 1 x 0
x 2 x 1 x 0
00 1 X 0
0 0 0 1 1
1 0 1
X
1 1 1 1 1
0 0 1 X
X
X1 0
0 0 0 011
0 0 1
X X 0 1
1 1 1 X0
X 1 0 1
0
X X X
0 1 1
0 0
a)
b)
Web-Projekt:P3.1/UPpack.vhdl
Abb. 3.9. Übergangsfunktion eines Spezialzählers zur Erzeugung von Testeinga-
ben a) Zählzyklus b) VHDL-Funktion
3 Außerdem darf in einer Synthesebeschreibung der Pseudo-Werte für ungültig auch
in Unterprogrammen weder ausgewertet noch zugewiesen werden.
 
Search WWH ::




Custom Search