Hardware Reference
In-Depth Information
T
1
x y
FIFO
0
Rechner
1
Rechner
I
1
W leer
2
0
R
voll
1
0 1
W
0
I
T
I
R
a)
x
w1w2w3 w4w5w6
Eingabedaten
Ausgabedaten
Schreibsignal
Lesesignal
Initialisierungssignal
Flagsf¨urleerundvoll b)
x
y
y
w1w2 w3
W
(voll)
4 3 2 1 0
w4 w3
R
I
w1
w1 w3 w2 w3 w4
w3
w4
F¨ullstand
w1w2w3 w2
w4 w3 w5
w6 w5
w6 w5
leer
voll
(leer)
Abb. 4.69. FIFO-Speicher a) Einsatz zur Kopplung von zwei Rechnern b) Funk-
tionsweise an einem Beispielablauf
-- Package-Vereinbarungen für ein FIFO-Modell
constant N_Adr:positiv:=...; -- Anzahl der Adressbits
subtype tAdrIdx is range 0 to 2 **N_Adr- 1 ;
subtype tDaten is ...;
type tSpeicher is array (tAdrIdx) of tDaten;
type tFIFO is record
Speicher: tSpeicher;
-- Speichermatrix
sz, lz : tAdrIdx;
-- Schreib- und Lesezeiger
leer, voll :boolean;
-- Statussignale
end record ;
procedure init( signal fifo: inout tFIFO);
procedure write(x: tDaten; signal fifo: inout tFIFO);
procedure read( signal y: out tDaten; fifo: inout tFIFO);
)WEB-Projekt:P3.4/FIFO_pack.vhdl
Im folgenden Verhaltensmodell wird der FIFO in jedem Taktschritt genau
wie in Abb. 4.69 nur entweder beschrieben oder gelesen:
signal x, y: tDaten;
signal fifo: tFIFO;
...
if init= '1' then init(fifo);
elsif rising_edge(T) then
if W= '1' and not voll then write(x, fifo);
elsif R= '1' and not leer then read(y, fifo);
end if ;
end if ;
Da in keinem Takt auf mehrere Speicherplätze zugegriffen wird, würde die
Synthese für den Blockspeicher des FIFO-Objekts einen 1-Port-Speicher wäh-
len. Bei einer geringfügigen Modifikation, die ein zeitgleiches Lesen und Schrei-
ben nicht mehr ausschließt,
 
Search WWH ::




Custom Search