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


von Sebastian (Gast)


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

von proggen (Gast)


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.

von Digikundler (Gast)


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.

von Sebastian (Gast)


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!

von Sebastian (Gast)


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.

von -gb- (Gast)


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.

von Sebastian (Gast)


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.

von -gb- (Gast)


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?

von -gb- (Gast)


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.

von Donni D. (Gast)


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.

von PittyJ (Gast)


Lesenswert?

Wie stürzt ein FPGA ab?

von Duke Scarring (Gast)


Lesenswert?

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

Duke

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.