Hardware Reference
In-Depth Information
end loop ;
end loop ;
end procedure ;
)
WEB-Projekt:P3.4/UART2_pack.vhdl
Empfänger
Im Simulationsmodell des Empfängers sind die Wartebedingungen
• warte auf RxD = 0,
• warte für eineinhalb Bitzeiten,
• warte für eine Bitzeit und
• warte für eine halbe Bitzeit
an den Takt und an das Initialisierungssignal zu binden. Der Bezugszeitpunkt
für die Abtastung des empfangenen Signals RxD ist die erste fallende Flanke
und nicht zum Empfängertakt ausgerichtet. Der Empfänger wird deshalb mit
einem Vielfachen der Frequenz des Senders getaktet und die Zeitdifferenz von
der Startflanke bis zur Abtastung mit einem Zähler bestimmt. Üblicherweise
verwendet der Empfänger einer UART die 16-fache Taktfrequenz des Senders
und einen 4-Bit-Binärzähler (Abb. 3.32). Warteanweisungen für mehrere Bit-
zeiten lassen sich durch eine Prozedur mit einer Schleife, die entweder nach
einer bestimmten Anzahl von aktiven Taktflanken oder der Aktivierung des
Initialisierungssignals beendet wird, nachbilden:
procedure Warte( signal T,I:std_logic;ct: inout tUnsigned( 3 downto 0 )) is
begin
loop
ct := ct+ "1" ;
wait until rising_edge(T) or I= '1' ;
exit when I= '1' or ct= "0000" ;
end loop ;
end procedure ;
) WEB-Projekt:P3.4/UART2_pack.vhdl
Für eine Wartezeit von einer halben Bitzeit (acht Empfangstakte) muss der
Zählstand vor dem Prozedur-Aufruf »1000« und für eine Bitzeit (sechzehn
Empfangstakte) »0000« sein. Die überarbeitete Empfängerbeschreibung in
Abb. 3.32 erhält genau wie die Senderbeschreibung die zusätzliche äußere
Schleife »S0«, über die bei einer Abbruchanweisung für die Schleife »S1« ein
Rücksprung zum Eintrittspunkt der Schleife »S1« erfolgt. Die erste Wartean-
weisung auf die fallende Flanke des Empfangssinals RxD wird zusätzlich an
die steigende Taktflanke gebunden. Die nachfolgende Warteanweisung »warte
für 1,5 Bitzeiten« wird durch zwei Aufrufe der Warteprozedur nachgebildet.
Beim ersten Aufruf zählt der Zähler von "1000" bis "0000", so dass acht, beim
zweiten Aufruf von "0000" bis "0000", so dass sechzehn Takte gewartet wird.
Bei den weiteren Warteanweisungen wird jeweils sechzehn und bei der letzten
Warteanweisung acht Takte gewartet. Nach jedem Aufruf der Warteprozedur
folgt die optionale Abbruchanweisung für die Neuinitialisierung.
 
Search WWH ::




Custom Search