Hardware Reference
In-Depth Information
Bearbeitungsstand: Das Anschlussverhalten und die Zielfunktion sind
grob umrissen.
Schritt 2: Sender - Algorithmus, Zeitablauf und Steuersignale
Der Sender soll sich wie folgt verhalten. Er soll auf ein zu versendendes Byte
warten, dieses in das 11-Bit-Datenpaket verpacken, das gesamte Datenpaket
bitweise versenden und anschließend auf das nächste zu versendende Byte
warten. Während der Übertragung ist ein Busy-Signal zu aktivieren, das der
Schaltung, die die Sendedaten liefert, mitteilt, dass die zu versendenden Da-
ten nicht verändert werden dürfen. Dieses verbal formulierte Verhalten ist in
Abb. 3.29a als Struktogramm beschrieben. Der Ablaufrahmen ist eine Endlos-
schleife, in der zu Beginn das Stoppbit versendet, das Busy-Signal deaktiviert
und auf das Startsignal gewartet wird. Nach Aktivierung des Startsignals wer-
den das Busy-Signal aktiviert und nacheinander genau für je eine Bitzeit das
Startbit, die acht Datenbits und das Paritätsbit versendet. Das Versenden
der acht Datenbits und die Berechnung der Parität erfolgt in einer Schlei-
fe. Das Stoppbit und die Deaktivierung des Busy-Signals folgen zum Beginn
des nächsten Schleifendurchlaufs. In diesem Struktogramm steckt der kreati-
ve Teil des Entwurfs. Feinheiten wie, dass das Stoppbit als erstes und nicht
als letztes versendet werden muss, sind in der Regel das Ergebnis mehrerer
Nachbesserungsiterationen.
procedure
Sender(
signal
Start:std_logic;
signal
x: tByte;
signal
TxD, busy:
out
std_logic; tbit:delay_length)
is
variable
P:std_logic;
begin
loop
TxD <=
'1'
; busy <=
'0'
;
wait for
tbit;
wait until
Start=
'1'
;
TxD <=
'0'
; busy <=
'1'
; P :=
'0'
;
wait for
tbit;
for
idx
in
x'reverse_range
loop
TxD <= x(idx);
P := P
xor
x(idx);
wait for
tbit;
end loop
;
TxD <= P;
wait for
tbit;
end loop
;
end procedure
;
Wiederholeimmer
TxD<=1;busy<=0;
warteeineBitzeitundbisStart=1
TxD<=0;busy<=1;P:=0;
warteeineBitzeit
wiederholef¨uridx=0bis7
TxD<=x(idx);P:=Pxorx(idx);
warteeineBitzeit
TxD<=P;
warteeineBitzeit
a)
Schnittstellenverhalten
Start
0
1
x
10001011
busy
0
1
x
0
x
1
x
2
x
3
x
4
x
5
x
6
x
7
TxD
0
1
Startflanke
Daten
Parit¨at
b)
c)
⇒
Web-Projekt:P3.4/UART1pack.vhdl
Abb. 3.29. Sendermodell a) Struktogramm b) VHDL-Prozedur c) Signalverlauf