www.mikrocontroller.net

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


Autor: Andreas B. (loopy83)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas B. (loopy83)
Datum:

Bewertung
0 lesenswert
nicht 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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.