Forum: FPGA, VHDL & Co. Write Request Read Request gleich nacheinander: FiFo


von Tim S. (169)


Angehängte Dateien:

Lesenswert?

Hallo,
ich führe einen write request für einen leeren Fifo durch und im 
nächsten Cycle gleich ein read request.
Erwartet hätte ich, dass Empty-Signal wieder high-Pegel annimt.
War ich nun zu schnell mit dem read-request?
Es scheint das der read request einfach nicht registriert wird.
Vielen dank für eure Unterstützung.

P.S. Write und Read request sind nur für eine Periode high. Es handelt 
sich um ein single clock Fifo von Altera.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tim S. schrieb:
> War ich nun zu schnell mit dem read-request?
Was bekommst du zurück?
Was passiert, wenn du einen zusätzlichen Wartetakt dazwischenschiebst?
Was passiert, wenn du nochmal ausliest?

Fazit: traue keinem Fifo, den du nicht selber geschrieben hast...  ;-)

: Bearbeitet durch Moderator
von Da D. (dieter)


Lesenswert?

Ist doch völlig klar, was da passiert: Du liest aus dem FIFO während 
empty auf high ist. Was sagt dir das? Dass da kein Datenwort ist was zu 
lesen wäre! Lass mal den read Puls weg und schau nach, nach wieviel 
Takten das geschriebene Wort auf Ausgang verfügbar ist (empty = 0).

In einem richtigen Design würde sich die Leseseite sowieso nie auf einen 
bestimmten Füllstand verlassen, sondern immer nur lesen, wenn vom FIFO 
vorhandene Daten gemeldet werden.

von Philip K. (philip_k)


Lesenswert?

Da Dieter schrieb:
> Lass mal den read Puls weg und schau nach, nach wieviel
> Takten das geschriebene Wort auf Ausgang verfügbar ist (empty = 0).

Dafür muss er doch den read-puls gar nicht weg lassen. Und aus dem 
Diagramm ist schon ersichtlich, dass die Daten nach einem Takt lesbar 
sind.

Prinzipiell muss man unterscheiden zwischen einem "normalen" und eine 
"First-word-fall-through" FIFO.
Bei ersterem liest man entweder nachdem das empty weg ist oder man hat 
zusätlich ein valid-flag, das einem anzeigt dass die Lesedaten gültig 
sind. (Im Prinip not-empty and read um einen Takt verzögert)
Bei zweiterem (mein Favorit) ist mit not-empty das Datenwort am Ausgang 
sichtbar.

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.