12-24-2009 10:37 AM
Hello all,
Here is my problem:
When I'm running a FPGA VI using Teststand, it runs much slower than if I run it using only LabVIEW.
My VI is doing digital acquisiton (32 bits at 5MHz) and sending the data via a DMA FIFO. My host VI read de DMA FIFO and log the data on the hard drive.
If I run the VI directly in LabVIEW everything works fine and my DMA FIFO never become full. If I run the same setup using testsand, my DMA FIFO filled up and I miss data. Even if I set the DMA FIFO depther, it doesn't seem to be enough. There is a pretty sigificant speed difference.
Anyone has a clue of how to solve this?
Thanks and Happy Holidays!
12-28-2009 02:34 PM
vgravel,
I have a couple of questions:
- If you monitor the Memory and CPU Usage (on the Performance tab of the Windows Task Manager) when running the program (in LabVIEW vs. TestStand), do you notice a major difference?
- How long is your digital acquisition task? When you call it from TestStand, do you wait until it finishes before proceeding to the next step, or do you spawn a new thread and continue with your TestStand sequence before the FPGA acquisition is complete?
Regards,
12-28-2009 03:38 PM
Hi Peter,
First, thanks for taking the time to have a look at my question!
I do not notice any significant changes at the CPU usage when I'm using Teststand or only LabVIEW (below 50%).
The digital aquisition time is unknown. It depend of many things... It can goes from 10 seconds to the maximum time allowed by the system (hard-drive full). I did a one hour test using only LabVIEW without any missed data. With teststand, I miss data only after few seconds (below a minute). The 'bitfile' file never changed.
There is few other tasks running at the same time. I use the a call sequence and the option 'Call in new thread' to make them parallel. I synchronize them using a software trigger VI (LabVIEW action step). Again I don't have any problem if I run those step at the same time manually in LabVIEW.
Thanks again!
Vincent
12-29-2009 04:09 PM
vgravel,
That is an interesting problem you are running into. Try making a new sequence in TestStand and add only one step to call your Acquisition VI and do not check "Call in new thread". Does this work better or the same?
This will tell us if it is an issue with simply calling it from any TestStand sequence or the other steps in your sequence that are slowing down the acquisition.
Regards,