FIFO (elektronisch) ⇐ Artikelentwürfe
Vorläufige Artikel
1773424471
Anonymous
[h4]
In der digitalen Elektronik ist ein „FIFO“ (Abkürzung für „First-In, First-Out“) ein digitaler Stromkreis, der eingehende Daten speichert und die gespeicherten Daten in der Reihenfolge ausgibt, in der sie empfangen wurden. Elektronik|Elektronische FIFOs werden üblicherweise zur Pufferung und Flusskontrolle zwischen Hardwaregeräten oder zwischen Software- und Hardwaregeräten verwendet, die über endliche Intervalle mit unterschiedlichen Datenraten arbeiten. Ein FIFO besteht hauptsächlich aus einem Zählerpaar, das als Lese- und Schreibspeicheradressregister dient, einem adressierbaren Speicherarray sowie Status- und Steuerlogik. Der Speicher verfügt in der Regel über zwei Ports, um gleichzeitige FIFO-Lese- und Schreibvorgänge zu ermöglichen, und besteht aus einer Registerdatei oder einem Dual-Port-RAM (Random Access Memory).
===Speicheradressregister===
Ein elektronischer FIFO wird typischerweise als Ringpuffer implementiert, der zwei Speicheradressregister (MARs) verwendet, um die Adressen („Zeiger (Computerprogrammierung) | Zeiger“) auf die nächsten Speicherorte zu speichern, auf die zugegriffen werden soll:
* Read MAR (RMAR) – enthält den nächsten Speicherort, von dem Daten gelesen werden sollen
* Write MAR (WMAR) – enthält den nächsten Speicherort, an den Daten geschrieben werden sollen
Jeder MAR ist als (digitaler) Zähler implementiert, wobei der Zähler jedes Mal erhöht wird, wenn Daten übertragen werden (WMAR wird beim FIFO-Schreiben erhöht; RMAR wird beim FIFO-Lesen erhöht). Zunächst zeigen beide MARs auf den ersten Speicherort und der FIFO ist leer. Ein FIFO wird voll, wenn die Schreibadresse die Leseadresse erreicht, und leer, wenn die Leseadresse die Schreibadresse erreicht. Wenn der FIFO also voll oder leer wird, sind die Lese- und Schreibspeicheradressen gleich.
Um zwischen leer und voll zu unterscheiden, verfügt jeder MAR über ein zusätzliches Bit, das über das hinausgeht, was zum Adressieren des Speichers benötigt wird. Alle MAR-Ausgangsbits mit Ausnahme der Bitnummerierung (MSB) (d. h. die LSBs) dienen als Speicheradresse. [url=viewtopic.php?t=10525]Umgekehrt[/url] werden alle Ausgangsbits, einschließlich des MSB, zur Überwachung des FIFO-Levels (Anzahl der gespeicherten Wörter) verwendet. In Fällen, in denen die MARs binäre Zähler verwenden, ist der aktuelle FIFO-Level die Differenz zwischen ihren binären Ausgabewerten: level=WMAR-RMAR. Bei anderen Ausgabekodierungen (z. B. Gray-Code) müssen die MAR-Ausgaben vor der Berechnung der Differenz in Binärwerte umgewandelt werden. In beiden Fällen gilt Folgendes:
* Der FIFO ist leer, wenn RMAR und WMAR gleich sind
* Der FIFO ist voll, wenn sich RMAR und WMAR nur in ihren MSBs unterscheiden
===Statusflags===
Ein FIFO gibt normalerweise Statussignale aus, die anzeigen, ob bestimmte Schwellenwerte für die Datenebene erreicht werden. Gängige Beispiele für solche Statusflags sind „voll“, „leer“, „halb voll“, „fast voll“ und „fast leer“.
===Synchroner FIFO===
Ein synchroner FIFO ist ein elektronischer FIFO, der zum Lesen und Schreiben einen gemeinsamen Takt verwendet. Da Lese- und Schreibvorgänge im selben Taktbereich stattfinden, können Flags entweder über Zeigerarithmetik oder durch Verwendung eines dedizierten Zählers zur Überwachung des FIFO-Levels generiert werden.
===Asynchrones FIFO===
Ein asynchroner FIFO ist ein elektronischer FIFO, der zum Lesen und Schreiben unterschiedliche Takte verwendet. Um Fehler aufgrund von Metastabilität zu vermeiden, verwenden asynchrone FIFOs normalerweise Gray-Code für die Lese- und Schreibzeiger, und Flags werden über Zeigerarithmetik generiert.
== Siehe auch ==
* Leaky-Bucket-Ansatz
* Ringpuffer
Digitale Schaltkreise [/h4]
Mobile version