2017-01-23 4 views
0

Dies ist eine sehr grundlegende Frage. Ich kann eine PWM-Datei in Systemzeit nicht aus ihrer FPGA VI-Datei simulieren.Labview FPGA Simulation Timing

Einzelheiten

Für ein NI cRIO-9067 + LabVIEW 2016 + Windows 8 System unter FPGA-Interface-Modus, ich habe den Test-VI No.1. vi NI LabVIEW-Datei und das entsprechende FPGA Desktop-Ausführungsknoten Blockdatei Test VI Nr. 1 DEN.vi wie vorgeschlagen ed in der Getting Started Informationen [1][2].

In beiden Dateien, die Low Pulse und High Pulse Numerische Steuerungen werden mit dem Wert gefüllt. Der Loop Timer Block wird als "mSec" Counter Unit und "32 Bit" Größe des internen Counter festgelegt.

Die kompilierte FPGA-Version der ersten Datei führt eine Rechteckwelle aus, die wie erwartet nach 7 Minuten lokaler Kompilierung jede 1 Sekunde geändert wird.

Unter Simulation (Simulated I/O) als Ausführungsmodus, und zum Wiedergeben von approximatedly und durch Versuch und Irrtum der Rechteckwelle Timing all 1 Sekunde, ich brauche im Uhr tickt den Wert zu setzen Feld, aus dem FPGA 40 MHz Onboard Clock Referenztakt, in den Blockoptionen gezeigt.

Ich verstehe diesen Block nicht, und warum sollte ich keine schließen Divisor von 40.000.000 an der Clock Ticks Feld, oder einfach, den Wert 1. Grundsätzlich verstehe ich nicht, wie Sie diese FPGA-Simulationen "Zeit".

Image 1

Image 2

Image 3

+0

Es klingt, als ob Sie eine Art Tutorial oder Übung folgen, können Sie es verlinken? Die LabVIEW-Handbücher sollten auf der NI-Site verfügbar sein. – nekomatic

+0

hinzugefügt .......... – hyprfrcb

Antwort

0

Der Desktop-Ausführungsknoten wird für zeitbasierte Simulation Sie auf jeden Fall auf dem richtigen Weg sind entworfen.

Was Sie oben einstellen, ist die Anzahl der Zyklen, die bei jedem Aufruf des Knotens ausgeführt werden. In Ihrem Fall haben Sie 1750 Ticks, also etwa 43,75us simulierte Zeit pro Iteration.

Um in Echtzeit zu simulieren, müssen Sie sicherstellen, dass Sie die gleiche simulierte Zeit ausführen, die die Simulationsschleife benötigt, um ausgeführt zu werden. In Ihrem Fall haben Sie kein Timing in Ihrer Simulationsschleife, also warum 1750 für Sie funktioniert, liegt daran, dass es wahrscheinlich so lange dauert, bis diese Schleife ausgeführt wird.

Wenn Sie einen Loop-Timer in 1ms setzen und die Uhr auf 40.000 (1ms simulierte Zeit) setzen, dann werden Sie feststellen, dass es auch funktioniert.

In einigen Fällen kann es vorteilhaft sein, schneller als in Echtzeit zu arbeiten, so dass Sie dies nur in Ihrer Mathematik berücksichtigen müssten. Wenn Sie z. B. die Ticks auf 40 setzen (1 us simulierte Zeit), können Sie die Anzahl der Iterationen zählen und mit 1us multiplizieren, um die tatsächliche Uhrzeit zu erhalten.