CycloneV FIFO Überlauf

Gast #5763384
Hallo zusammen,

wir sind gerade damit beschäftigt, Daten vom FPGA auf den HPS zu 
bekommen, um sie dann via Ethernet in Matlab zu transferieren. Letzteres 
klappt schon problemlos, ersteres leider noch nicht.
Wir verwenden ein FIFO ("Avalon FIFO Memory Intel FPGA IP") auf dem 
FPGA, von welchem der HPS über die H2F-Schnittstelle die Daten ausliest. 
Das FPGA schreibt die Daten in das FIFO hinein. Das FIFO nutzt einen 
OnChip-SRAM, welches auf jeden Fall groß genug ist. Trotzdem tritt das 
Phänomen auf, dass, sobald wir die Daten nicht aus dem FIFO holen, das 
FIFO überläuft (bei einem FIFO ja eigentlich gar nicht möglich) und dann 
abstürzt. Wenn wir die Daten fleißig abholen, arbeitet das System gut. 
Kennt jemand dieses Phänomen?

Schöne Grüße
Sebastian
Gast
Hallo,

wie kommst du auf die Idee das ein FIFO nicht überlaufen kann? Wenn da 
mehr Daten kommen als Speicher da ist, wo sollen die hin?

Welche Quartus Version? Die IP-Cores sind teilweise etwas buggy, da 
lohnt sich manchmal dann doch die aktuellere Version zu nehmen.

Ich kenne eure Anwendung nicht, aber wenn ihr nur die Daten aus dem FPGA 
in das HPS bekommen wollt, wäre das vll. auch über DMA zu machen.

Paar mehr Infos wären hilfreich...
Bare Metal oder mit OS?
Quartus Version?
Woher kommen die Daten? Werden diese im FPGA verarbeitet oder nur 
durchgereicht?
Schreib halt mal ein wenig mehr was ihr machen wollt.
Gast
Sebastian schrieb:
> Trotzdem tritt das
> Phänomen auf, dass, sobald wir die Daten nicht aus dem FIFO holen, das
> FIFO überläuft (bei einem FIFO ja eigentlich gar nicht möglich) und dann
> abstürzt.

Über grundlegenede FIFO-Missverständnisse wurde vor kurzem dort 
debattiert:
Beitrag "Xilinx Built-in FIFO"

Und wenn das System abgestürzt liegt es vielleicht an einem nicht 
behandelten IRQ den die FIFO Füllstandsabhängig lostritt.
Gast
Tatsächlich ist der FIFO einfach nur verbugt. Wundert einen bei Quartus 
ja nicht allzu sehr. Wir haben jetzt um den FIFO herum eine Abfrage 
programmiert, welche nur einen Füllstand von N-1 zulässt. Trotzdem danke 
für eure Hilfe!
Gast
Dann verstehst du was anderes unter überlaufen. Wenn langsamer aus dem 
FIFO gelesen wird wie in ihn geschrieben wird dann ist der irgendwann 
voll. Wenn dann weiter geschrieben wird werden die Daten nicht 
angenommen.
Gast
-gb- schrieb:
> Dann verstehst du was anderes unter überlaufen. Wenn langsamer aus dem
> FIFO gelesen wird wie in ihn geschrieben wird dann ist der irgendwann
> voll. Wenn dann weiter geschrieben wird werden die Daten nicht
> angenommen.

Es mag ja sein, dass FIFOs nicht automatisch alte Werte löschen und neue 
einfügen, wenn sie voll sind, aber dann sollte es zumindest nicht 
abstürzen, wenn man versucht, neue Daten einzufügen. Und erst recht 
nicht bei "Größe des FIFOs"-1. Abstürzen heißt hier einen Füllstand von 
0 anzuzeigen und keine neuen Werte mehr anzunehmen.
Gast
Ist völlig OK wenn der keine neuen Werte annimmt. Den Füllstand braucht 
man eigentlich nicht, sondern nur die Flags Full und Empty. Werden die 
denn korrekt angezeigt?
Gast
Sebastian schrieb:
> "Größe des FIFOs"-1

Man beginnt bei 0 mit dem Zählen. Wenn der FIFO 64 Werte Speichern kann 
und sagt der Füllstand sei 63, dann kann es sein, dass der schon voll 
ist. Aber eigentlich kann das auch egal sein, man achtet eben auf das 
Full Flag.
Gast
Du kannst extra einstellen, ob die FIFO sich selbst ‚schützen‘ soll. Da 
ist nichts verbuggt oder sonstiges, du bist einfach nicht fähig genug 
die FIFO zu nutzen und zu verstehen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 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.