Forum: FPGA, VHDL & Co. X Werte aus dem FIFO lesen


von Johann (Gast)


Lesenswert?

Ich benutze einen Virtex 5 und einen AD-Converter. Zudem habe ich ein 
externes Triggersignal. Ich erkenne die ansteigende Triggerflanke und 
löse somit den Digitalisierungsprozess aus. Ich schreibe dann X Werte in 
den Block-RAM-FIFO.

Außerdem verwende ich beim Block-RAM-FIFO das programmierbare Flag für 
den Füllzustand. Ich habe z.B. eingestellt das dieses Flag den Zustand 1 
hat wenn 2000 Werte im FIFO stehen.

Ich möchte die Daten immer Blockweise im FIFO speichern und auslesen. 
Jedoch bin ich noch nicht 100% sicher wie ich es am besten realisieren 
soll.

Ich hatte es wie folgt gedacht:

Wenn der FIFO die 2000 Daten besitzt, dann erzeuge 2000 Lesepulse um die 
2000 Daten herrauszulesen. Jedoch wird auch gleichzeitig wieder in den 
FIFO reingeschrieben.

Gibt es vielleicht andere Lösungsvorschläge? (immerhin gibt es beim FIFO 
ja eine Menge optinale Flags)

von Duke Scarring (Gast)


Lesenswert?

Johann schrieb:

> Wenn der FIFO die 2000 Daten besitzt, dann erzeuge 2000 Lesepulse um die
> 2000 Daten herrauszulesen. Jedoch wird auch gleichzeitig wieder in den
> FIFO reingeschrieben.

Klingt gut. Es macht ja nix, wenn zwischenzeitlich wieder was reinkommt 
(solange wie genug Platz ist). Du guckst halt erst nach dem 
Blockauslesen wieder nach, ob schon wieder 2000 Werte drinstehen.

Duke

von Johann (Gast)


Lesenswert?

Momentan tue ich mich mit dem Reset-Pulse etwas schwer. Sprich wenn alle 
2000 Messwerte aus dem FIFO gelesen wurde, dann setze ich ein 
"DATA_TRANSFER_READY" Flag.

Im nächsten Schritt muss ich dann keinen kurzen Reset-Pulse erzeugen, 
aber genau da tue ich mich verdammt schwer.

von Duke Scarring (Gast)


Lesenswert?

Johann schrieb:
> Im nächsten Schritt muss ich dann keinen kurzen Reset-Pulse erzeugen,
> aber genau da tue ich mich verdammt schwer.
Für wen oder was brauchst Du diesen Resetpuls? Jedenfalls nicht für den 
FIFO.
Ansonsten erweiterst Du Deine Statemachine um die Pulserzeugung und 
gehst danach erst in den State 
WAIT_FOR_FIFO_IS_FILLED_FOR_BLOCKTRANSFER.

Duke

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.