mikrocontroller.net

Forum: FPGA, VHDL & Co. CycloneV FIFO Überlauf


Autor: Sebastian (Gast)
Datum:

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

Autor: proggen (Gast)
Datum:

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

Autor: Digikundler (Gast)
Datum:

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

Autor: Sebastian (Gast)
Datum:

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

Autor: Sebastian (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
proggen schrieb:
> 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?

Weil das im Allgemeinen der Sinn eines FIFOs ist.

Autor: -gb- (Gast)
Datum:

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

Autor: Sebastian (Gast)
Datum:

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

Autor: -gb- (Gast)
Datum:

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

Autor: -gb- (Gast)
Datum:

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

Autor: Donni D. (donnidonis)
Datum:

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

Autor: PittyJ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie stürzt ein FPGA ab?

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PittyJ schrieb:
> Wie stürzt ein FPGA ab?
Indem z.B. in einer State-Machine zwei Zustände gleichzeitig aktiv sind. 
BTDT.

Duke

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.

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