FPGA FIFO - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Module (/Forum-LabVIEW-Module) +---- Forum: LabVIEW FPGA (/Forum-LabVIEW-FPGA) +---- Thema: FPGA FIFO (/Thread-FPGA-FIFO) |
FPGA FIFO - Roland - 23.05.2018 12:50 Hallo in die Runde, ich verwende ein cRIO 9074 und ein digitales Eingangsmodul NI9423. Da ich mit einer Freqzuenz von 10kHz abtasten muss kann ich nicht mehr die Scan Engine verwenden sondern muss jetzt mit FPGA hantieren. Im Anhang findet ihr mal einen Screenshot von meiner Projektumgebung. Der Punkt an dem ich jetzt hängen geblieben bin ist die Kommunikation zwischen FPGA Target, FPGA Host (beide Richtungen) und PC. Was ich jetzt mitbekommen habe ist, dass ich das mit einem FIFO machen muss und das Problem ist, dass ich gefühlt hunderte Varianten im Netz gefunden habe um so ein FIFO zu gestalten (LabVIEW Beispiele und Google). Kann mir hier jemand Hinweise geben worauf ich achten muss und vielleicht sogar ein Beispiel (das mir wirklich hilft) geben? Ich wäre sehr dankbar! fg Roli RE: FPGA FIFO - jg - 23.05.2018 15:48 Das kann man nicht so generell beantworten. Brauchst du wirklich alle Digital-Events bzw. Werte im RT-Teil? Oder willst du schon irgendeine Auswertung im FPGA programmieren, z.B. eine Drehzahlauswertung bzw. -berechnung? Ansonsten ist so ein FIFO Target->Host eigentlich immer dasselbe. Du legst den Datentyp des FIFO fest, die Mindestgröße im FPGA (die Größe im RT-Teil kannst du programmatisch ändern), schiebst die Daten im FPGA in den FIFO und holst sie hoffentlich schnell genug im RT wieder ab. Achten musst du noch auf die max. Anzahl von DMA-FIFOs, bei einem 9074 sind das max. 3 Stück. Gruß, Jens RE: FPGA FIFO - Roland - 23.05.2018 17:51 (23.05.2018 15:48 )jg schrieb: Brauchst du wirklich alle Digital-Events bzw. Werte im RT-Teil? Oder willst du schon irgendeine Auswertung im FPGA programmieren, z.B. eine Drehzahlauswertung bzw. -berechnung?Es ist so: ich taste insgesamt 3 analoge Signale und 2 digitale Signale ab und 3 Analogsignale müssen ausgegeben werden. Prinzipiell müsste nur eines der digitalen Eingangssignale mit 10kHz abgetastet werden. Die restlichen Signale sind unkritisch. Mit eben diesem digitalen Eingangssignal taste ich die Zähne eines Zahnrades ab und bestimmt die Drehzahl. Zusätzlich soll ein oberer und unterer Grenzwert dafür sorgen, dass mein Prüfstand abgeschaltet wird (mit dem Baustein Wertebereich). Ansonsten ist so ein FIFO Target->Host eigentlich immer dasselbe. Du legst den Datentyp des FIFO fest, die Mindestgröße im FPGA (die Größe im RT-Teil kannst du programmatisch ändern), schiebst die Daten im FPGA in den FIFO und holst sie hoffentlich schnell genug im RT wieder ab. (23.05.2018 15:48 )jg schrieb: Achten musst du noch auf die max. Anzahl von DMA-FIFOs, bei einem 9074 sind das max. 3 Stück.Heißt das, dass ich nur 3 Signale zwischen FIFO Target und FIFO Host austauschen kann? Ist es möglich nur einen Teil der Signale auf dem FPGA zu empfange/senden und den Rest wie gewohnt mit der Scan Engine anzutasten? fg Roli RE: FPGA FIFO - jg - 23.05.2018 20:09 Niemand zwingt dich, für jedes Signal einen eigenen FIFO anzulegen. Im Gegenteil, es ist sogar Standard-Vorgehen, mehrere verschiedene Signale (z.B. alle Analog-In-Signale) in einem DMA-FIFO zusammenzufassen und vom FPGA zum RT-Teil zu übertragen. Die Drehzahlauswertung aus den Digital-In Signalen würde ich an deiner Stelle auf jeden Fall direkt im FPGA machen. Und schon sparst du dir die Übertragung eines 10 kHz Signals an den RT-Teil. Gruß, Jens RE: FPGA FIFO - Roland - 24.05.2018 10:11 Bin ich richtig mit der Annahme, dass ich mit einem DMA FIFO auch Daten direkt von meinem FPGA auf den PC übertragen kann? Ich habe das Beispiel aus der LabVIEW-Bibliothek entdeckt: Streaming Data (DMA) Dann könnte ich den RT-Prozessor umgehen. Das Problem könnte dann das sein, dass das DMA FIFO zu langsam ausgelesen wird, da die Schleife am PC nur mit 10Hz läuft. Die Abtastrate am PC ist deshalb so gering, da das VI nur zum Darstellen der Messwerte und für eine grobe Aufzeichnung dient. Falls meine Überlegung so stimmt: wie kann ich sicherstellen, dass der DMA FIFO nicht "überladen" wird? fg Roli RE: FPGA FIFO - jg - 28.05.2018 20:16 (24.05.2018 10:11 )Roland schrieb: Bin ich richtig mit der Annahme, dass ich mit einem DMA FIFO auch Daten direkt von meinem FPGA auf den PC Da habe ich keine Erfahrung, denn sowas mache ich nicht. Wenn ich ein cRIO mit FPGA habe, dann verwende ich auch den RT-Teil. Ich sehe aber immer noch nicht die Notwendigkeit, dass du überhaupt einen FIFO brauchst. Drehzahl Auswertung im FPGA programmieren, dann brauchst du keine Übertragung mit 10 kHz. FIFO nicht überladen: Daten schnell und oft genug abholen, dann läuft er nicht voll. Gruß, Jens |