fifo core generator

#914934
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
Gast #914993
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
Gast #915002
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.
#915110
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
#915140
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren