03-01-2025 10:10 PM - edited 03-01-2025 10:16 PM
I am new to LabVIEW FPGA, any help is greatly appreciated.
I am using a cRIO-9057 with NI 9205 voltage input module to read in 6 AI signals off a 6-axis force/torque sensor, filter each voltage signal with a 32-bit low-pass butterworth, and then multiply the 1x6 vector of data by a 6x6 calibration matrix from the FT sensor manufacturer.
During simulations everything works as expected. Upon attempting to compile I received a Code Generation Error stating the execution mode of the Linear Algebra Matrix Multiply is not supported outside a single-cycle Timed Loop (see attached). In the details of the Code Generation Error, it states to 'move the VI into a single-cycle timed loop or change the Execution Mode in the configuration dialog box'. If I attempt to replace the While Loop with a Timed Loop, I receive an error that the Butterworth Filters are not supported inside the Timed Loop. I tried to change the Execution Mode, but I am unable to find the setting in the configuration dialog box (see attached).
I'm open to any recommendations that will get this code up and running. Am I missing something easy regarding the Matrix Multiply Configuration? Do I need to create a separate loop to do the filtering? If I create a separate loop, what is the best way to get data between them (I'm guessing DMA FIFO)? Any other creative ideas?
Attached is the VI for reference. Let me know if you have any questions about all of this.
09-01-2026 02:42 PM
Je pense que le plus simple est effectivement de séparer le filtrage et la multiplication matricielle. Les filtres Butterworth peuvent rester dans une boucle adaptée, puis tu transfères les six valeurs filtrées vers une seconde boucle FPGA qui effectue la multiplication 6×6. Un DMA FIFO peut convenir si tu dois découpler proprement les deux parties, même si pour un débit modeste un mécanisme de transfert plus simple peut suffire. L’erreur vient surtout des contraintes de génération FPGA du Matrix Multiply, pas de ton calcul lui-même. Si tu joins le VI, je peux regarder précisément comment le réorganiser.
09-02-2026 09:21 PM
Oui, je pense que cette séparation est la meilleure approche. On peut garder les filtres Butterworth dans une première boucle FPGA, puis envoyer les six valeurs filtrées à une seconde boucle dédiée à la multiplication 6×6. Cela permettrait aussi de mieux isoler le problème lié aux contraintes de génération FPGA du Matrix Multiply. Pour le transfert, un DMA FIFO est une bonne option si tu veux découpler les deux parties, mais pour un débit faible, une solution plus simple pourrait suffire. Si tu m’envoies le VI, je peux te proposer une réorganisation précise. Les amateurs de pronostics peuvent explorer un espace pensé pour leurs besoins. Les www.ftstjournal.com fonctionnalités proposées rendent le parcours plus agréable.