LabVIEWForum.de - Speicherzugriff

LabVIEWForum.de

Normale Version: Speicherzugriff
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich möchste mit dem FPGA NI 7813R mit 1728kBits (=216KByte) embedded RAM folgendes Problem lösen ohne zu große Einbußen in der Laufzeit zu bekommen:
Zuerst eine Datenübertragung von 10 bis 200 32Byte Blöcken vom PC zum Speicher des FPGAs. Dann nachdem der FPGA im "normalen" Betrieb ist, soll der FPGA den Speicher durchsuchen und bestimmte Datenblöcke zur Berechnung des weiteren Ablaufs verwenden. Die Datenblöck haben alle die gleiche Struktur. Es soll z.B. nach einem bestimmten Index gesucht werden, der bei einem Datenblock immer an der gleichen Stelle steht.
In C/C++ oder ähnlichen wäre das für mich absolut kein Problem, doch die FPGA Programmierung in LabVIEW stellt mich da vor eine größere Herausforerung.
Ich würde nun erstmal die Daten mittels DMA an den FPGA übertragen. Das hat auch bisher ganz gut geklappt. Doch leider habe ich diese Übertragung bisher nur mit einem FIFO hinbekommen. Ich könnte mir nun natürlich alle Daten einzeln aus dem FIFO holen und mit einer "Memory Read" oder "Memory Write" Funktion in den Speicher schreiben. Doch das sehe ich als eher ineffektiv an, da die Daten des DMA FIFO doch ohnehin irgendwo in dem gleichen Speicher liegen. Außerdem ist mir dann noch keine wirklich effiziente Methode eingefallen auf die Daten zuzugreifen. Z.B. wären die Datenblöcke nach gewissen Kriterien sortiert, so dass es effektiv wäre mit Pointern zu arbeiten, doch wie geht das mit LabVIEW?

Bitte gebt mir Anregungen oder evtl. weiterführende Links. Über die "Suche" habe ich nicht wirklich etwas passendes gefunden. Ich hoffe das was ich vorhabe geht überhaupt mit dem Device.

Gruß
Werner
Hi,

FIFO ist ein Puffer, der nicht dafür gedacht ist, dauerhaft Daten abzulegen. Generell wird der dafür genutzt, Datenströme von FPGA zu Host oder andersrum zu transferieren und dient eigentlich nur dazu, unterschiedliches Timing in beiden Systemen zu ermöglichen und sicher zu stellen, dass man gleichzeitig lesen und schreiben kann.

Hast Du mal überlegt, ob Du Deine Daten nciht einfach per I/O-Node im Host überträgst? Das ist nicht ganz so schnell und man müsste, um es ganz sicher zu machen, noch mit nem Interrupt oder so arbeiten, aber prinzipiell könnte ich mir schon vorstellen, dass Du einfach ein Array oder ein Cluster auf dem FPGA als Bedienelement erzeugst (vor dem Compilieren kann man da Größen etc. angeben) und dann damit arbeitest. Sollte für Deinen Fall eigentlich tun.

Grüße,

ch
Referenz-URLs