11.01.2019, 13:24
So Leute,
vielen Dank für Eure tolle Hilfe. Eure Vorschlage haben mir ein paar Inspirationen beschert. Ich habe ein meiner Meinung nach ziemlich geiles FPGA VI programmiert. Ich würde gerne Eure Meinung dazu hören.
Es besteht im Großen und Ganzen aus drei parallelen Schleifen für Zeit, Analog Input und Analog Output.
Zeit:
In diesem VI generiere ich eine FPGA Uhr mit einer Taktzeit von 1us. (40Takte). Daraus erzeuge ich einen Sekunden und Mikrosekundenzähler. Ist der Mikrosekundenzähler gleich der gewünschten Sample Rate wird ein FIFO Eintrag "FPGA Time" generiert, der in der Schleife AI einen Analog Input Akt auslöst. Gleichzeitig wird die momentane Zeit als U64 umgewandelt und in ein Memory Element geschrieben. Dieses Memory Element wird in der Schleife AO ausgelesen um analoge Ausgangssignale zu diskreten Zeitpunkten zu triggern.
AI:
Sobald ein FPGA_Time FIFO Element vorhanden ist (Siehe Schleife Zeit) wird ein AI durchgeführt und die Werte zusammen mit der Zeitinformation als U64 in das FIFO_AI transferiert um zum RT VI weitergeleitet und verarbeitet zu werden.
AO:
Über das FIFO_AO werden Sollwerte (Spannung zu Zeitpunkt x) in das FPGA VI transferiert. Überschreitet der Wert der FPGA Uhr den Sollwert wird der gewünschte Spannungswert an das AO übertragen und das nächste Element aus dem FIFO_AO geholt.
Ich fände es toll, wenn Ihr den Code kommentieren könntet. Gibt es noch was, was Euch auffällt was man verbessern kann?
Danke für Eure Hilfe!
Andy
PS
CLA Evaluation: Style 10/10
vielen Dank für Eure tolle Hilfe. Eure Vorschlage haben mir ein paar Inspirationen beschert. Ich habe ein meiner Meinung nach ziemlich geiles FPGA VI programmiert. Ich würde gerne Eure Meinung dazu hören.
Es besteht im Großen und Ganzen aus drei parallelen Schleifen für Zeit, Analog Input und Analog Output.
Zeit:
In diesem VI generiere ich eine FPGA Uhr mit einer Taktzeit von 1us. (40Takte). Daraus erzeuge ich einen Sekunden und Mikrosekundenzähler. Ist der Mikrosekundenzähler gleich der gewünschten Sample Rate wird ein FIFO Eintrag "FPGA Time" generiert, der in der Schleife AI einen Analog Input Akt auslöst. Gleichzeitig wird die momentane Zeit als U64 umgewandelt und in ein Memory Element geschrieben. Dieses Memory Element wird in der Schleife AO ausgelesen um analoge Ausgangssignale zu diskreten Zeitpunkten zu triggern.
AI:
Sobald ein FPGA_Time FIFO Element vorhanden ist (Siehe Schleife Zeit) wird ein AI durchgeführt und die Werte zusammen mit der Zeitinformation als U64 in das FIFO_AI transferiert um zum RT VI weitergeleitet und verarbeitet zu werden.
AO:
Über das FIFO_AO werden Sollwerte (Spannung zu Zeitpunkt x) in das FPGA VI transferiert. Überschreitet der Wert der FPGA Uhr den Sollwert wird der gewünschte Spannungswert an das AO übertragen und das nächste Element aus dem FIFO_AO geholt.
Ich fände es toll, wenn Ihr den Code kommentieren könntet. Gibt es noch was, was Euch auffällt was man verbessern kann?
Danke für Eure Hilfe!
Andy
PS
Zitat:Der andere Teil deiner Frage sollte bei >10 Jahre LabVIEW und CLA eigentlich auch kein Problem sein
CLA Evaluation: Style 10/10