Hardware Reference
In-Depth Information
-- Vereinbarungen im Testprozess
variable x, y:std_logic_vector( 2 downto 0 );
-- Anweisungsfolge im Testprozess
read( "Bitte STD_LOGIC_VECTOR der Länge 3 eingeben:" , x);
case x is -- Tabellenfunktion
when "000" => y := "100" ;
when "001" | "011" | "110" => y := "110" ;
when "010" | "101"
x
00 1
y
0 0 0 0 1 1 1 1
100
110
101
110
001
101 0
011
0 1 1 0 1
00 1
=> y := "101" ;
when "100"
=> y := "001" ;
when "111"
=> y := "011" ;
0 1 1 0 1
sonst XXX
Web-Projekt:P3.1/WTab.vhdl
when others
11
=> y := "XXX" ;
end case ;
write( "x=" & str(x) & " y=" & str(y));
Abb. 3.5. Beschreibung einer Tabellenfunktion mit einer Auswahlanweisung
enthalten (Abb. 3.6 b). Ist die Abbruchbedingung wahr, wird die Abarbeitung
mit der ersten Anweisung nach der Schleife fortgesetzt. Im Gegensatz dazu
wird in der Abweisschleife in Abb. 3.6c die Anweisungsfolge im Schleifenkör-
per solange wiederholt, bis die im Schleifenkopf abgefragte Bedingung nicht
mehr erfüllt ist. Das kann auch vor dem ersten Schleifeneintritt sein.
a)Endlosschleifeb)Abbruchschleife
c)Abweisschleifed)Wiederholschleife
for...loop
loop
loop
whilew
loop
exit
[[
whena
]];
endloop;
endloop;
endloop;
endloop;
aAbbruchbedingung(
Eintritts-undWiederholbedingung(
)
BOOLEAN
w
)
BOOLEAN
Abb. 3.6. Schleifenkonstrukte in VHDL
Auch Schleifen lassen sich mit dem Testrahmen in Abb. 3.1 ausprobieren.
In der nachfolgenden Abweisschleife wird bis zur Simulationszeit t sim = 10 ns
in jedem Schleifendurchlauf die aktuelle Simulationszeit ausgegeben und der
Prozess für 1ns schlafen gelegt:
-- Anweisungsfolge im Testprozess
while now< 10 ns loop
write( "aktuelle Simulationszeit: " & str(now));
wait for 1 ns ;
end loop ;
wait ;
)
WEB-Projekt:P3.1/TestWhile.vhdl
 
Search WWH ::




Custom Search