Hardware Reference
In-Depth Information
3.4.4 Ein objektorientiertes FIFO-Modell
Für einen einfachen Speicher lohnt sich der objektorientierte Ansatz noch
nicht unbedingt, aber für ein Speichersystem mit interner Adressrechnung
unter Umständen schon. Beispiel sei ein FIFO. Ein FIFO ist ein Speicher mit
den drei Methoden Initialisieren, Schreiben und Lesen. Das Akronym FIFO
steht für »first in first out« und beschreibt das Organisationsprinzip. Die
Initialisierungsmethode stellt den Anfangszustand »leer« her, die Schreibme-
thode speichert einen Datenwert und die Lesemethode entnimmt und löscht
den ältesten (
f
irst
i
n) gespeicherten Datenwert und weist ihn an das Ausga-
besignal zu.
Intern besteht ein FIFO aus einer Speichermatrix mit wahlfreiem Zugriff,
einem Lesezeiger, einem Schreibzeiger, einem Flag für »leer« und einem Flag
für »voll« (Abb. 3.27). Der Schreibzeiger zeigt, wenn der FIFO nicht voll ist,
auf den ersten freien und sonst auf den ersten frei werdenden Speicherplatz.
Der Lesezeiger zeigt, wenn der FIFO nicht leer ist, auf den ältesten gespei-
cherten Wert und sonst auf den nächsten zu beschreibenden Speicherplatz. Im
Package für das objektorientierte FIFO-Modell werden zuerst die Datentypen
für die Adresszeiger und die Speichermatrix vereinbart. Die Flags haben einen
Bittyp. Aus den Einzeltypen wird ein Verbund für alle zu manipulierenden
Datenobjekte zusammengesetzt.
constant N_Adr:positiv:=...;
subtype tAdrIdx is range 0 to 2 **N_Adr- 1 ;
subtype tDaten is ...;
type tSpeicher is array (tAdrIdx) of tDaten;
type tFIFO is record
Mem : tSpeicher;
sz, lz : tAdrIdx;
leer, voll:boolean;
end record ;
lz
sz
voll
leer
Mem
sz Schreibzeiger
lz Lesezeiger
voll Flag,true,wennvoll
leer Flag,true,wennleer
gespeicherteDaten
Web-Projekt:P3.4/FIFOpack.vhdl
Abb. 3.27. Das Datenobjekt FIFO-Speicher (FIFO-Objekt)
Die Initialisierungsmethode setzt beide Zeiger auf die erste Speicheradres-
se, das Flag »leer« auf true und das Flag »voll« auf false. Die Speicher-
matrix selbst bleibt unverändert. Die Übergaberichtung des gesamten FIFO-
Objekts muss dennoch »inout« sein, weil die Prozedur bei der Übergabe-
richtung »out« auch dem Speicher einen Initialwert zuweisen würde. Bei der
Schaltungsumsetzung müsste dann ein parallel initialisierbarer Speicher ein-
gesetzt werden, eine Hardware-aufwändige Lösung, die aus funktionaler Sicht
nicht erforderlich ist (siehe später Abschnitt 4.4.1):
 
Search WWH ::




Custom Search