Der FIFO-Puffer (first-in-/first-out) ist ein Ringpuffer. In diesem FIFO-Puffer werden die Daten in der Reihenfolge gespeichert, in der sie in den Puffer geschrieben werden. Die Daten werden in der gespeicherten Reihenfolge aus dem Puffer gelesen, und zwar beginnend mit dem zuerst gespeicherten Datenelement. Der Puffer eignet sich zum Zwischenspeichern von Daten in der Reihenfolge, in der sie anfallen.
Mit dem Befehl FP_FIFO_DEFINE wird der Adressbereich des FIFO-Puffers definiert. (Dies sollte nur einmal erfolgen, und zwar bevor Daten aus ihm gelesen oder in ihn geschrieben werden.)
Die Daten müssen mit dem Befehl FP_FIFO_WRITE in den Puffer geschrieben und mit dem Befehl FP_FIFO_READ aus dem Puffer gelesen werden
Wenn Daten in den Puffer geschrieben werden, werden nacheinander die Datenspeicher 0 bis n-1 (n = Speichergröße des Puffers) aufgefüllt. Ein Zeiger gibt an, in welchen Datenspeicher als nächstes geschrieben wird. Die Anzahl der gespeicherten Datenelemente (Worte) wird bei jedem Schreibvorgang um 1 erhöht.
Wenn der Datenspeicherbereich voll ist, d. h., wenn die Anzahl der gespeicherten Worte gleich n-1 ist, können keine weiteren Daten mehr in den Puffer geschrieben werden
Beim Lesen von Daten, werden die zuerst gespeicherten Datenelemente als erstes aus dem Puffer gelesen. Ein Zeiger gibt an, aus welchem Datenspeicher als nächstes gelesen werden soll. Die Anzahl der gespeicherten Datenelemente (Worte) verringert sich bei jedem Lesevorgang um 1.
Wenn versucht wird, Daten aus einem leeren Puffer zu lesen, d. h., wenn die Anzahl der gespeicherten Datenelemente gleich 0 ist, geht die Steuerung in den Fehlerzustand.
Im unten dargestellten Beispiel befindet sich der Lesezeiger an Position 0 und der Schreibzeiger an Position 3. Daten, die als nächstes in den FIFO-Puffer geschrieben werden. Danach zeigt der Schreibzeiger auf Datenspeicher 4. Wenn Daten gelesen werden, werden Sie aus Datenspeicher 0 gelesen. Danach zeigt der Lesezeiger auf Datenspeicher 1.