INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Eigene SCAN Engine



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

25.01.2016, 15:37
Beitrag #1

gfzk Offline
LVF-Grünschnabel
*


Beiträge: 47
Registriert seit: Sep 2009

2012
2007
DE_EN

76344
Deutschland
Eigene SCAN Engine
Hallo,

das letzte Mal, dass ich ein cRio System programmiert habe ist schon einige Jahre her. Damals habe ich aus Zeitgründen vornehmlich die Scan-Engine eingesetzt, nun möchte ich mich näher mit FPGA auseinander setzen.

Üblicherweise erfasse ich Spannungen mit einem Compact DAQ oder PCI Karten. Dabei reicht es mir wenn jede Sekunde ein neuer Messwert angezeigt und aufgezeichnet wird. Um die ganze Sache statistisch aussagefähiger zu machen sample ich 1000x schneller und bilde dann Mittelwert und Standardabweichung.

Nun will ich mir eine Art eigene Scan Engine basteln, die alle analogen Kanäle im Chassis mit 1 kHz sampelt, Mittelwert und Standardabweichung berechnet und diese Werte einmal pro Sekunde den RT-VIs auf dem Rio zur Verfügung stellt.

Macht es Sinn diese Geschichte unter FPGA zu implementieren?

LG
Georg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.01.2016, 15:59
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Eigene SCAN Engine
Hallo Georg,

das hängt davon ab, wieviele Kanäle du bedienen willst und wie du die Avg/StdDev-Berechnung implementierst: auf dem FPGA läuft man schnell in Platzprobleme.

Ansonsten erstelle ich mir auch immer meine "ScanEngine", die alle I/O-DInge auf dem FPGA handhabt. Allerdings habe ich dort für Spannungssignale meist nur einen laufenden Mittelwert über 4-8 Samples implementiert… Bei einer Werteübergabe im 1Hz-Bereich würde ich den Datenaustausch RT-FPGA über das Lesen/Schreiben von FPGA-Controls erledigen.

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.01.2016, 17:10
Beitrag #3

gfzk Offline
LVF-Grünschnabel
*


Beiträge: 47
Registriert seit: Sep 2009

2012
2007
DE_EN

76344
Deutschland
RE: Eigene SCAN Engine
Hallo Gerd,

die Anzahl der Kanäle bzw. Samples ist genau das Problem in das ich reingelaufen bin. Für jeden Kanal (16 diff) meines AI Moduls (NI 9205) habe ich die FPGA Math Funktion "Mean, Variance, and Standard Deviation Express VI" benutzt. Da ist natürlich schnell Schluß mit den FPGA Resourcen. Auf die 1k Samples pro Kanal kann ich aber leider nicht verzichten um die Qualität des Signals zu charakterisieren für die Fehlerrechnung. Ausserdem habe ich mehrere Module, die ich mit dieser Rate erfassen möchte.

Bleibt mir dann nur der Weg, mit dem FPGA die I/Os zu erfassen, in einen FIFO zum RT Host zu übertragen und dort meine Mittelung vornehmen zu lassen?

Gruß, Georg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2016, 09:00
Beitrag #4

gfzk Offline
LVF-Grünschnabel
*


Beiträge: 47
Registriert seit: Sep 2009

2012
2007
DE_EN

76344
Deutschland
RE: Eigene SCAN Engine
Guten Morgen

bei meinem Vorhaben benötige ich noch ein paar Denkanstösse:

Ich möchte mehrere Module zur analogen Signalerfassung gleichzeitig mit unterschiedlichen Sampleraten betreiben. Pro Sekunde sollen dann alle gesammelten Einzelwerte (=feste Anzahl) vom FPGA an den RT Host übermittelt werden zwecks Mittellung und so. Umgesetzt hätte ich dies indem ich zunächst mal jedes Modul in seiner eigenen While-Schleife mit dem der Samplerate entsprechenden Timing die Daten in einen Zwischenspeicher hätte schreiben lassen. Haben alle Module die gewünschte Anzahl an Werten erfasst sammelt ein weiterer Task diese ein, bündelt sie und überträgt sie per DMA an den Host. Dies geschieht aus dem Grund, da ja die Anzahl der DMA Kanäle beschränkt ist.

Leider macht mir die Handhabung solcher Datenmengen dabei Probleme. Auf einem Host System würde ich einfach einen Cluster mit 2D Arrays (Kanal/Messwert) pro Modul erstellen. Das kann ich ja auf dem FPGA leider nicht in der Form machen.
Wäre es möglich einen gemeinsamen, festen Speicherbereich auf dem FPGA zu definieren den sich verschiedene Tasks teilen und der periodisch per DMA an den Host übermittelt wird?

Viele Grüße
Georg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2016, 09:09 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2016 10:29 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Eigene SCAN Engine
Hallo Georg,

du kannst doch ein Memory auf dem FPGA anlegen: du musst dich auf eine (Maximal-)Größe festlegen und selbst die "Speicheradressierung" übernehmen, da der Memoryblock nur eindimensional (=Länge) angesprochen wird.

So z.B.: Adresse = Kanal * (max. Kanallänge) + Samplenummer…
Hier mache ich gerade etwas ähnliches:
   
Ist noch in der Entwicklung und nicht debugged…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2016, 17:01
Beitrag #6

gfzk Offline
LVF-Grünschnabel
*


Beiträge: 47
Registriert seit: Sep 2009

2012
2007
DE_EN

76344
Deutschland
RE: Eigene SCAN Engine
Hallo Gerd,

zum Memory habe ich zwei Fragen:

1) wie groß ist der Block Memory eigentlich? Ein Rechtsklick auf das FPGA Target liefert mir nur die Auskunft: ...Block RAMs: 32...

2) gibts da keine Probleme wenn zwei voneinander unabhängige Loops auf den gleichen Speicher zugreifen? Hat das nicht auch was mit der Clock Domain zu tun?

LG
Georg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
02.02.2016, 18:38 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2016 18:39 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Eigene SCAN Engine
Hallo Georg,

1) Die Größe des MemoryBlocks gibst du im Einstellungs-Assistenten an. Man sollte sich auf "vernünftige" Werte beschränken, im Bild oben geht es um 256 FXP(±,26,5)-Werte (32 Kanäle mit je 8 Werten)…

2) Wie bei anderen FPGA-Strukturen auch handhabt der LV-FPGA-Compiler solche Zugriffsfragen aber die "Arbitrierung", welche man ebenfalls in den Einstellungen zum MemoryBlock festlegen/bearbeiten kann.

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: