Hardware Reference
In-Depth Information
zu übertragenden Daten bereitgestellt und auf die Deaktivierung des Busy-
Signals gewartet. Anschließend terminiert der Prozess mit einer Warteanwei-
sung ohne Weckbedingung:
Eingabe:
process
begin
Start <=
'0'
after
2 ns
,
'1'
after
20 ns
,
'0'
after
30 ns
;
x <= XX
after
15 ns
,
x"3f"
after
18 ns
;
wait until
falling_edge(busy);
Start <=
'1'
after
28 ns
,
'0'
after
73 ns
;
x <= XX
after
7 ns
,
x"79"
after
9 ns
;
wait until
falling_edge(busy);
wait
;
end process
;
)WEB-Projekt:P3.4/Test_UART1.vhdl
Als Debug-Hilfe soll der Testrahmen zusätzlich einen Ausgabeprozess erhal-
ten, der alle Signaländerungen in Tabellenform protokolliert:
Ausgabe:
postponed process
(Start,x,busy,TxD,RxD,y,ready,Err)
variable
TabKopf:boolean:=true;
begin
-- Ausgabe Tabellenkopf
if
TabKopf
then
write(
" Zeit
|Start|
... |Err"
); TabKopf :=false;
end if
;
-- Ausgabe einer Tabellenzeile
write(rechts(str(now),
9
) &
"| "
& str(
Start) &
" |"
& ... );
end process
;
)
WEB-Projekt:P3.4/Test_UART1.vhdl
Zum Simulationsbeginn gibt der Prozess zusätzlich einen Tabellenkopf mit den
Signalbezeichnungen aus. Der Funktionsaufruf »rechts(
9)« bettet die
Zeichenkette der Zeitangabe rechtsbündig in eine Zeichenkette der Länge neun
mit führenden Leerzeichen ein:
str(now),
Zeit |Start| x |Busy|TxD|RxD| y |Ready|Err
0 fs| U |UUUUUUUU| U | U | U |UUUUUUUU| U | U
(1)
0 fs| U |UUUUUUUU| 0 | 1 | U |UUUUUUUU| 0 | 0
(2)
2.00 ns| 0 |UUUUUUUU| 0 | 1 | U |UUUUUUUU| 0 | 0
5.00 ns| 0 |UUUUUUUU| 0 | 1 | 1 |UUUUUUUU| 0 | 0
15.00 ns| 0 |XXXXXXXX| 0 | 1 | 1 |UUUUUUUU| 0 | 0
18.00 ns| 0 |00111111| 0 | 1 | 1 |UUUUUUUU| 0 | 0
...
237.05 ns| 0 |01111001| 0 | 1 | 1 |01111001| 1 | 0
(
(1)
- Ausgabe des zur Initialisierung geweckten Prozesses;
(2)
- Ausgabe nach
allen Signaländerungen für den Simulationszeitpunkt null). Der Ausgabepro-
zess ist ein sog. Postponed-Prozess
Ein Postponed-Prozess wird für jeden
Simulationszeitpunkt erst geweckt, wenn alle Nicht-Postponed-Prozesse und
.