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
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.
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.
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!
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.
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.
-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.
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?
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.