FIFO - Threshold Negate Value

OP #1673834
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
Angehängte Dateien:
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.
OP
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!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.