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 

Werte im FPGA skalieren



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!

04.08.2010, 11:36 (Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2010 11:38 von Matze.)
Beitrag #1

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Werte im FPGA skalieren
Hallo zusammen,

ich möchte mehrere Analogwerte erfassen. Mit der Scan-Engine komme ich an die Grenzen, wenn ich die Signale skaliere und filtere. Daher wollte ich das ins FPGA auslagern.
Den Butterworth-Filter habe ich schon gefunden, nur die Skalierung bereitet mir Probleme (er erinnert jedoch an die Express-VIs ...).
Mir ist der Datentyp "Fixedpoint" irgendwie unsympathisch.Rolleyes

Ich habe versucht, mir ein SubVI für die Skalierung zu schreiben, aber da weiß ich nicht, welche Werte ich übergeben muss.

   

Bei DAQmx kann ich z.B. Double-Werte nutzen und sagen, dass die Werte unskaliert bei 0,004 bis 0,02 mA liegen und skaliert bei 10 - 200 l/min o.ä.
Aber auf FPGA-Ebene kriege ich das (noch) nicht hin.

Wie funktioniert das denn?

Vielleicht ist es auch sinnvoller, alles in Fixedpoint zu berechnen, auch im RealTime-Bereich, wenn das schneller ist. Nur kann ich mir dann noch weniger vorstellen, wie das ablaufen muss. Beispielsweise, wenn es um den Vergleich der Messwerte mit einem Triggerwert geht.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
04.08.2010, 12:45
Beitrag #2

dlambert Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 89
Registriert seit: May 2009

2010
2007
en

12359
Deutschland
Werte im FPGA skalieren
Sofern es geht arbeite ich lieber mit RAW Werten. Die meisten Module die ich verwende haben eine 16bit Auflösung, liefern also I16 Werte.
Dazu werden bei FPGA Initialisierung die Kalibrierwerte der Module an den RT gegeben und können entsprechend verrechnet werden. Triggerschwellen werden dann als I16 an den FPGA zurückgegeben.
(Die Anzahl der Kalibrierdaten hängt von der im Modul verwendeten Anzahl von DAC's/ADC's ab.)

Die Kalibriervorschriften sind je nach Modul unterschiedlich. Die beste Referenz ist hier die LV Hilfe ( benutze ' Converting and Calibrating ' als Suchstring )

Hope it helps
Christian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.08.2010, 10:33
Beitrag #3

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Werte im FPGA skalieren
Hallo,

vielen Dank, aber noch fehlt's mir an der Umsetzung. Die FPGA-Schulung ist erst Ende August ...

Ich habe es wie folgt versucht, doch ich erhalte keine skalierten Werte und der FPGA-Compiler bringt die Warnung, dass der reale Takt 39,8 MHz beträgt, ich jedoch 40 MHz eingestellt habe. Niedriger geht es jedoch nicht.
D.h. die Performance stimmt bei meiner Umsetzung absolut nicht.
Und das ganze ist aktuell bei 2 Kanälen so, später habe ich 16. Unsure

Die FPGA-Skalierung:

   

Der FPGA-Code:

   

Und der Real-Time-Code:

   

Welche grundlegenden Fehler mache ich denn bzw. mache ich überhaupt etwas richtig?

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.08.2010, 17:30
Beitrag #4

dlambert Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 89
Registriert seit: May 2009

2010
2007
en

12359
Deutschland
Werte im FPGA skalieren
Die FPGA Schulung hilft da auch nicht weiter. Die Kurse sind wirklich nicht der Hammer.

Fixed Point frisst Ressourcen ohne Ende. Schau Dir mal die Verarbeitungsbreite bei FixedPoint an. Das geht bis 64bit ! Bei 16Kanälen ist der FPGA garantiert dicht. Du müsstest auch noch FixedPoint-Werte per Control an den RT übergeben, da die DMA FIFO's mit FixedPoint nicht laufen... sinnlos... (Immer dran denken die Backplane-RT Verbindung ist 32bit breit.)

Wenn Du kurzfristig Dein Taktproblem lösen willst musst Du SCTL's einsetzen. Das läuft dann unter FPGA Optimierung (schon x-mal im Forum).

Nochmal meine Empfehlung: Arbeite mit RAW Daten !

Sorry, aber was soll ich sagen !?

Gruß Christian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.08.2010, 19:13 (Dieser Beitrag wurde zuletzt bearbeitet: 05.08.2010 19:16 von chrissyPu.)
Beitrag #5

chrissyPu Offline
LVF-Stammgast
***


Beiträge: 467
Registriert seit: Jun 2006

2014 PDS
2006
DE_EN

64283
Deutschland
Werte im FPGA skalieren
Hi,

wenn Du doch schon ein RT-Target hast, würde ich folgendes machen:
- Daten im FPGA als I16 (oder was auch immer die Module mitbringen) einlesen
- Daten in FIFO schreiben (wie man das macht, steht ganz gut in den FPGA-Beispielen im Beispielfinder)
- RT liest den FIFO aus, sortiert die Kanäle und skaliert. Filterung würde ich ehrlich gesagt auch da machen, wenn Du nicht auf FPGA-Ebene eine Regelschleife implementierst...

Zur Performance:
NI hat ein paar Hinweise, wie man das auf FPGA-Ebene machen kann. Also z.B. keine Divisionen sondern Multiplikationen mit anschließendem Bitschieben, Pipelining nutzen (das wird wahrscheinlich Deine Compilerwarnung erledigen können: 1. Stufe Einlesen der Module, 2. Stufe Skalierung, 3. Stufe Filtern. Macht einen Time-Lag von 3* der längsten Durchlaufzeit, vermutlich das Einlesen oder die Skalierung.)

Zu dem Punkt, dass du mit dem oben beschriebenen Code keine skalierten Werte bekommst: m.E. logisch, da Du die Module direkt mit den Filtern verbindest und nicht die (wahrscheinlich vorhandenen) Ausgänge deiner Skalierungs-SubVIs.

Wenn Du unbedingt mit FXP arbeiten willst: Mach Dir die Arbeit und schau Dir an, wie breit Deine Daten sein müssen. LV nimmt leider als Standarteinstellung immer die höchsten Werte mit 64 bit Breite und die braucht man meist nicht... Wenn Du das optimierst müssten Deine Skalierungsvorgänge vom Compiler deutlich besser zu implementieren sein...

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


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Sind Referenzen auf FPGA-Variablen in FPGA vi möglich? Felix777 2 7.192 26.10.2015 20:41
Letzter Beitrag: Felix777
  FPGA-Referenz öffnen: FPGA-VI nicht kompiliert LauraP. 9 11.784 17.03.2015 16:58
Letzter Beitrag: LauraP.
  Skalieren in FPGA Christian 0 4.522 02.08.2005 14:51
Letzter Beitrag: Christian

Gehe zu: