Forum: FPGA, VHDL & Co. fifo core generator


von Rolf R. (ultra-low)


Lesenswert?

hallo
ich habe ein fifo mit logicore erstellt.
- spartan3 xc3s1000/ft256
- Independent Clocks (RD_CLK, WR_CLK), Block RAM
- Standard FIFO
- Write Width 8
- Write Depth 16 (Actual Write Depth: 15)
- Write Depth 8
- Read Depth 16 (Actual Read Depth: 15)

nur dass es erwähnt ist, FIFO Generator v4.3 User Guide.PDF habe ich 
wahrscheinlich 100 mal durchgelesen und sonst tagelang gegoogelt. aber 
ich komme einfach mit dem verhalten von fifo nicht weiter. also hier 
sind die fragen:

1. warum ist "Actual Write Depth" immer um eins kleiner als der wert den 
ich im eingbefeld "Write Depth" eingebe.
2. warum erscheinen die daten erst bei 5em read_clock am 
datenausgang(siehe auch 4.).
3. warum kann ich nur 14 und nicht 15 daten auslesen.
4. wie macht man richtig reset. nur mit write_clock oder mit write_clock 
und read_clock(ist nicht das gleiche). beim reset nur mit 4 write_clock 
sind die daten erst erst bei 8em read_clock verfügbar. beim reset mit 4 
write_clock und read_clock sind die daten erst bei 5em read_clock 
verfügbar. (im manual steht nix davom).


gruss

von Willy (Gast)


Lesenswert?

>1. warum ist "Actual Write Depth" immer um eins kleiner als der wert den
>ich im eingbefeld "Write Depth" eingebe.

Xilinx implementiert die Fifo-Adressen (oftmals) als rückgekoppeltes 
Schieberegister. Diese sind schnell, Nachteil:
eine Adresse geht dabei verloren! Dies soll dem User bei der 
Core-Generierung verdeutlicht werden.

Gruß
Willy

von Willy (Gast)


Lesenswert?

>2. warum erscheinen die daten erst bei 5em read_clock am
>datenausgang(siehe auch 4.).

Wahrscheinlich fängst du nach dem Reset direkt an zu lesen (in deiner
Simulation). Ich würde nach dem Reset etwas warten.
Ich gehe mal davon aus, dass du überhaupt erst einmal Daten geschrieben 
hast bevor du sie liest.

von Rolf R. (ultra-low)


Lesenswert?

danke. du hast mich auf den richtigen pfad gebracht.
nach dem schreiben muss man mehr als 8 read_clock(bei read_enable auf 
low) warten bis man die daten lesen kann. nur schade dass es nirgens im 
datenblatt steht.

---
Xilinx implementiert die Fifo-Adressen (oftmals) als rückgekoppeltes
Schieberegister. Diese sind schnell, Nachteil:
eine Adresse geht dabei verloren! Dies soll dem User bei der
Core-Generierung verdeutlicht werden.
---

übrigens wo kann man diese info nachschlagen. ich habe so ziemlich alles 
über fifos runtergeladen. aber ich kann mich nicht errinnern dass so was 
irgendwo dokumentiert ist.

gruss

von Willy (Gast)


Lesenswert?

Man muss schon etwas genauer suchen:

xapp258.pdf
xapp256.pdf
xapp175.pdf


Ich würde mir jeweils auch immer den Code dazu (zip-File)
anschauen und mal durchsimulieren.

Gruß
Willy

von Christian R. (supachris)


Lesenswert?

Also ich verwende die FIFOs im Spartan 3E ohne Probleme. Aber das ist 
wirklich so, wenn man Daten rein schreibt, geht das Empty-Flasg erst 
nach 5 Takten weg. Ist halt so, ist doch kein Problem. Wen du nur 4 
auslesen kannst, wirst du einen FWFT FIFO gemacht haben, da steht das 1. 
Wort am Ausgang ohne dass du das ReadEnable gesetzt haben musst. Dann 
kannst du noch weitere 4 Worte lesen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.