LabVIEWForum.de - Schnellste Moglichkeit Daten zusenden (FPGA <-> RT)

LabVIEWForum.de

Normale Version: Schnellste Moglichkeit Daten zusenden (FPGA <-> RT)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi,

ich hoffe, ich stelle diese Fragen nicht nochmal hier im Forum, aber gefunden habe ich dazu nichts.

Ich habe folgende Situation. Auf einem PXI-System läuft eine RealTime-Applikation bei der auch 2 FPGA-Karten arbeiten.
Über eine Netzwerkverbindung werden Daten und Befehle empfangen und müssen nun verarbeitet werden.

Meine Frage:

1.) Welche ist die schnellste Möglichkeit Daten (Boolean, Numeric) von einer zeitkritischen Schleife (deterministic loop) zu einem FPGA zu senden und zu empfangen? Was sollte man da nehmen (FPGA-DMA-FIFOs oder Global Var. oder FPGA-Write/Read-Zugriff oder ...)?

2.) Welche ist die schnellste Möglichkeit Daten (Boolean, Numeric) von einer zeitunkritischen Schleife zu einer zeitkritischen Schleife (deterministic loop) zu senden und zu empfangen? Was sollte man da nehmen (RT-FIFOs oder Global Var. oder Notifier/Queue oder ...)?

Es steht wirklich die Geschwindigkeit im Vordergrund und nicht Sachen wie Race Condition, ... . Alle Prozesse sollen im Bereich von 1-100µs ablaufen!

Vielen Danke für Eure Hilfe im Voraus!

JaG
' schrieb:Hi,

ich hoffe, ich stelle diese Fragen nicht nochmal hier im Forum, aber gefunden habe ich dazu nichts.

Ich habe folgende Situation. Auf einem PXI-System läuft eine RealTime-Applikation bei der auch 2 FPGA-Karten arbeiten.
Über eine Netzwerkverbindung werden Daten und Befehle empfangen und müssen nun verarbeitet werden.

Meine Frage:

1.) Welche ist die schnellste Möglichkeit Daten (Boolean, Numeric) von einer zeitkritischen Schleife (deterministic loop) zu einem FPGA zu senden und zu empfangen? Was sollte man da nehmen (FPGA-DMA-FIFOs oder Global Var. oder FPGA-Write/Read-Zugriff oder ...)?

2.) Welche ist die schnellste Möglichkeit Daten (Boolean, Numeric) von einer zeitunkritischen Schleife zu einer zeitkritischen Schleife (deterministic loop) zu senden und zu empfangen? Was sollte man da nehmen (RT-FIFOs oder Global Var. oder Notifier/Queue oder ...)?

Es steht wirklich die Geschwindigkeit im Vordergrund und nicht Sachen wie Race Condition, ... . Alle Prozesse sollen im Bereich von 1-100µs ablaufen!

Vielen Danke für Eure Hilfe im Voraus!

JaG


Hallo JaG,

zu 1.: DMA FIFO ist am schnellsten allerdings musst du dann Deinen Datentyp in eine 32 Bit Integer Zahl konvertieren

zu 2.: wenn Du innerhalb RT meinst kannst du eine Target scoped Fifo benutzen. da weiß ich aber nichts über ztl. Aspekte bzgl. der Übertragung der Daten.
hängt das nicht unmittelbar mit deinem Schleifentakt zusammen?Wenn dem so ist, dann genügt ja auch eine lokale Variable....

Svente
grundsaetzlich gilt, dass bei einem 1m gate FPGA die registergroeße 16 und bei einem 3M gate fpga die registergroese 32bit betraegt.
d.h. sendest du 1 bit, werden 31bit im register verbraten.
besser ist es daher alles nach 32bit zu mappen.

die folgenden werte gelten fuer PXI CPUs groeßer 8186 und beziehen sich auf die sicht des hosts (also nicht FPGA target)
schreiben U32 wert register: 0.99 - 1.11 µs
Lesen U32 Wert register: 1.55 - 1.89µs
Amortisierung DMA U32 schreiben ab 9-10werten
Amortisierung DMA U32 lesen ab 6-8werten

Durchsatzrate thoeretisch pro R-serien DMA kanal 90-100MB
Nachdem der bus theoretisch 132 hergibt und in der praxis max. 125-128 zu schaffen sind, ist die angabe recht fiktiv.
90MB sind aber zu schaffen

bei crio 901x gelten nur die angaben der registerzugriffe...
dma amortisierung liegt bei groeßer 90 werten
Die max. Durchsatzrate bei DMA liegt bei rund 10MB, wobei idP 3-5MB erreicht werden koennen
Referenz-URLs