Forum: FPGA, VHDL & Co. FIFO - Threshold Negate Value


von Andreas B. (loopy83)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe mir mit dem Fifo-Generator der Version 11.3 einen 16bit Fifo 
generiert.

Diesen brauche ich als Buffer für die Kommunikation mit einem PowerPC.
Nun möchte ich einen Device-Paced Burst Read Transfer realisieren. Dazu 
muss ich mir ein PReady Signal genereieren was mir signalisiert, dass 
der FPGA bereit ist und genug Daten im Fifo liegen.

In vorangegangenen Tests habe ich erfahren müssen, dass ich nie den Fifo 
komplett lesen sollte, während er noch gefüllt wird (er wird mit einem 
kontinuierlichen Datenstrom gefüllt). Also habe ich mit für einen 2048er 
Fifo entschieden und lese immer nur 1024 Werte auf einmal aus.

Für das PReady Signal wollte ich das Programmable Full Flag verwenden 
und zwar mit Hysterese.
Es soll also auf 1 gehen, wenn der Fifo voll ist und soll auf Null 
gehen, wenn der halbe Fifo ausgelesen wurde, also bei 1024. So kann ich 
dem PPC 1024 Werte lang signalisieren, dass das Fifo genug Daten hat und 
er lesen kann. Sobald der "Füllstand" des Fifos bei 1024 angelangt ist, 
wird PReady auf Low gesetzt und der Controller des PPC wartet, bis das 
Flag wieder auf 1 gesetzt wird.

Nun bin ich mir unsucher, ob ich diese Funktion mit meinen Einstellungen 
richtig realisiert habe (siehe Bild).

Ist dieses Vorgehen an sich richtig und ist die Idee korrekt umgesetzt?

Vielen Dank!
Andi

von Jan M. (mueschel)


Lesenswert?

Andreas B. schrieb:
> In vorangegangenen Tests habe ich erfahren müssen, dass ich nie den Fifo
> komplett lesen sollte, während er noch gefüllt wird (er wird mit einem
> kontinuierlichen Datenstrom gefüllt).

Das klingt nach fehlerhafter Logik. Ein Fifo kannst du normalerweise auf 
beiden Seiten voellig unabhaengig und zu beliebigen Zeiten ansteuern.
Welchen FPGA benutzt du? Es gibt Versionen mit Bugs bei built-in 
Fifos...


> Ist dieses Vorgehen an sich richtig und ist die Idee korrekt umgesetzt?

Die Einstellungen passen zu deiner Beschreibung. Wenn du allerdings 
immer genau 1024 Werte lesen willst, empfehle ich dir einen eigenen 
Zaehler auf der Leseseite zu haben.

von Andreas B. (loopy83)


Lesenswert?

Ich benutze den Spartan 3A-DSP, genauer gesagt XC3SD1800A-4CS484C.

An sich bin ich der Meinung, dass ich keine fehlerhafte Logik habe, aber 
kann gut sein, dass ich den Wald vor lauter Bäumen nicht mehr sehe.

Ich werde das nochmal von einem Kommilitonen gegenprüfen lassen, 
vielleicht findet der ja noch einen Fehler.

Vielen Dank!

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.