1 Byte FIFO

Was bringt ein 1Byte Speicher ? Ganze einfach: Er ermöglicht die zeitlich unabhängige Übergabe eines Bytes. Es muss also nicht zum selben Zeitpunkt geschrieben und gelesen werden.

 

Die Schaltung besteht nur aus einem 8bit Latch und einen Flankengesteuerten RS Flipflop das als Busy/Ready Speicher dient. Die üblichen RS Flip Flops werden von den Pegeln an den RS Eingängen gesteuert und nicht von den Flanken, daher ist hier ein kleiner TRick notwendig.

Um Daten an das FIFO zu senden, legt man die Daten auf den Bus und überprüft, dass Busy auf Low liegt, dass das FIFO also leer ist. Anschließend aktiviert man WR\ indem man es kurz auf Low legt. Bei der Low-High Flanke von WR\ werden die Daten ins FIFO übernommen und das Busy Flag IC1A gesetzt. Busy ist von nun an High, und Ready\ geht auf Low.
Dadurch erkennt der Empfänger dass Daten bereit stehen. Um Daten abzuholen, legt er RD\ auf Low wodurch der Ausgang aktiviert wird und die Daten am Bus anstehen. Bei der Low-High Flanke von RD\ wird IC1B zurückgesetzt (da der D Eingang auf Low liegt) wodurch auch Q Low Pegel annimmt. Dies setzt auch IC1A zurück und löscht somit das Busy Flag. Der Ausgang Q von IC1A geht also auf Low, was wiederum IC1B setzt. IC1B hat also nur die Funktion die Flanke von RD\ auszuwerten.

Das ganze verwende ich z.B. um Schaltungen die für den Betrieb mit einem FT245 USB Konverter ausgelegt sind an einem uC zu betreiben.
Mit der Schaltung kann man zwei Bus Master uC miteinander verbinden: Beide uC haben freien Zugriff auf ihren Bus und beeinflussen sich gegenseitig nicht. Außerdem ist das Schreib und Lesetiming aufgrund des schnellen Latches nahezu egal.
Wenn die Schaltung in ein Bus System verwendet wird, müssen RD\ und WR\ aus dem Signal von einem Adressdekoder und den RD\ bzw. WR\ Leitungen erzeugt werden.

 

 

Zurück