LabVIEWForum.de
FPGA oder FIFO sendet nur Integer zwischen -5 und 5 - 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 oder FIFO sendet nur Integer zwischen -5 und 5 (/Thread-FPGA-oder-FIFO-sendet-nur-Integer-zwischen-5-und-5)



FPGA oder FIFO sendet nur Integer zwischen -5 und 5 - gibsonuser - 14.04.2015 16:52

Hallo,
ich benutze zurzeit ein cRIO 9076 System mit zwei Ni 9222 Karten. Theoretisch sollte ich jetzt 8 Analoge Eingänge gleichzeitig mit 500 kS/s abtasten können, also jede 2µS sollte jeder Kanal ein Eingang messen können. Mein Ziel ist es gleichzeitig 8 verschiedene Analoge Sensoren auszulesen und diese ausgelesenen Messdaten dem PC zu übergeben.
Zu Testzwecken habe ich in den Analogeneingang 0 und 1 ein Sinus mit einer Frequenz von 1 kHz und einem Vpp von 10V (-5V zu 5V) eingespeist.
Für die Programmierung verwende Labview 2014. Ich bin noch ein Anfänger und es haben sich mir ein paar Fragen gestellt, die ich leider nicht alleine Lösen konnte.

Zunächst einmal habe ich auf meinen FPGA Target ein Programm erstellt, in dem ich die ausgelesenen Messdaten für den Kanal Analog 0 in einem FIFO Buffer (Target to Host) übergebe.
Mit einem Bench musste ich feststellen das der Loop 121 Ticks dauert, demnach also 25ns*121=3,025µs statt der 2 µs, warum?
Ich habe gelesen, dass diese Methode (FIFO) besser geeignet ist als die Scan Engine, wenn Messdaten bei höheren Frequenzen ausgelesen werden möchten. Korrigiert mich bitte wenn ich etwas falsch verstanden habe. Ich habe nun zwei größere Probleme, zunächst einmal übergibt der Fifo Buffer im Host (also im VI meines Computers) nur Integerwerte zwischen -5 und 5. Was ich hierbei nicht verstehe ist, dass die 9222 Karte doch ein 16 Bit ADC Wandler hat, somit müsste ich eigentlich 2^16 verschiedene Intergerwerte bekommen?! Über die Kontexthilfe habe ich gesehen, dass ein Festkommawert vom FPGA übergeben wird. Wenn ich den FIFO als Festkommawert umkonfiguriere bleibt das Problem leider. Ich habe versucht das ganze in einem Signalverlaufsdiagramm darzustellen um somit den eigentlich Sinus auf meinem Host nach zu modellieren das Resultat seht ihr im angehängten Bild. Blink

Das zweite Problem versuche ich erstmal selbst zu lösen vielleicht hängt es mit dem ersten Problem zusammen.

Danke und grüße
Construction


RE: FPGA oder FIFO sendet nur Integer zwischen -5 und 5 - BNT - 14.04.2015 18:51

Hast Du den FIFO Datentype richtig konfiguriert?
Du musst die Bit-Breite und die Integer-Bit angeben, z.B. signed 16.5, welches der Typ aus dem AI sein sollte.

Gruß Holger


RE: FPGA oder FIFO sendet nur Integer zwischen -5 und 5 - jg - 14.04.2015 19:00

Zum Timing kann ich dir weiterhelfen. Schau mal in die "Operating Specs", Seite 18. Dein VI entspricht dem FPGA I/O Nodes Modus, damit sind max. 300 kS/s möglich. Wie es besser geht, steht hier:
http://digital.ni.com/public.nsf/allkb/5250C3AAE0CBAAE68625777F0072438E?OpenDocument

Im zweiten Link wird auch auf einige Beispiel-Projekte verwiesen, zu finden über den NI Example Finder, die würde ich mir an deiner Stelle anschauen!

Für deine Probleme mit dem Datentyp müsste man dein VI zur Hand haben. Aber vielleicht löst sich diese Frage von selber an Hand des Beispiels-Projekts.

Gruß, Jens


RE: FPGA oder FIFO sendet nur Integer zwischen -5 und 5 - gibsonuser - 15.04.2015 12:52

Erstmal vielen Dank für eure Antworten,
es war Tatsächlich so, dass der Festkommawert anders im FIFO definiert werden musste (Wortlänge 24 Bit Integer-Wortlänge 5 Bit war vorher auf 16/16 gestellt).
Zum Timing habe ich dann doch ein Problem, ich bin dem Beispiel gefolgt und habe fast 500 kS/s erreichen können, genau genommen habe ich 84 Ticks für einen Schleifendurchlauf erreichen können.
Ich will nicht pingelig sein aber ich Frage mich wie es kommt, dass es doch 84 statt 80 Ticks braucht?

Ich möchte nun die 500 kS/s Möglichkeit mit dem FIFO Datenbuffer kombinieren. Leider kriege ich bei der Compilierung einen Fehler bei etwa 20%.
Wisst ihr vielleicht warum? Kann man diese beiden Optionen nicht miteinander kombinieren?
Im Anhang habe ich noch ein Bild von meinem Blockdiagramm und ein Bild von dem Fehler eingefügt.
Schonmal danke 2hands


RE: FPGA oder FIFO sendet nur Integer zwischen -5 und 5 - gibsonuser - 20.04.2015 09:16

Das Problem konnte ich lösen, habe das Programm einfach nochmal geschrieben und schon hat es geklappt.
Ich habe das Programm jetzt ein bisschen umgeschrieben und es funktioniert auch sehr gute aber ich habe das Gefühl das Daten bei der FIFO Übertragung verloren gehen,
zumindest sieht das in meinem Signalgraphen/Array so aus.
Kann mir jemand sagen warum das so ist ?


RE: FPGA oder FIFO sendet nur Integer zwischen -5 und 5 - BNT - 20.04.2015 13:29

Wenn Deine Fifo-Leseschleife mal nicht zum Zuge kommt (>1s) gehen die Daten halt verloren.
Setz die VI-Priorität doch mal auf Time-Cirtical oder verwende eine Timed-Loop.