02-07-2005 10:32 AM
02-07-2005 10:36 AM
02-21-2005 08:32 AM
02-21-2005 09:00 AM
@jimmie A. wrote:
Hello Ulf!
I am not sure if I understood your question correctly, but I believe the function you are searching for is the "Call VI" function. Here is the description for that specific VI:
"Call VI
Allows you to call a compiled FPGA VI as a subVI from a host VI. To specify the FPGA VI to call, right-click the function on the block diagram and select Select Target VI from the shortcut menu. The Call VI function is similar to the Call By Reference Node. When the Call VI function runs, LabVIEW writes all the inputs to the FPGA VI. The FPGA VI then runs to completion. LabVIEW then returns all outputs from the FPGA VI. The Call VI function is similar to the Call By Reference Node. When the Call VI function runs, LabVIEW writes all the inputs to the FPGA VI. The FPGA VI then runs to completion, and LabVIEW returns all outputs from the FPGA VI."
Regards,
Jimmie A.
Applications Engineer, National Instruments
02-22-2005 09:17 AM
02-22-2005 09:34 AM
@wrath_of_con wrote:
Hi Ulf,
It is my understanding that you can only run 1 FPGA VI at any time. If you try to call multiple FPGA VI's during a Real-Time while loop for example, you may get erroneus results, such as one data line responding to inputs on another line.
In my case, I was using an FPGA card and pretty much using all of the IO on it. So I created FPGA VI's for each set of associated IO (You do not have to compile these VI's, as long as they are in the same .lep file as the top-level VI, talked about next). Then I incorporated all of those VI's into a top-level FPGA VI that used clusters of each associated IO such that I would have less than the maximum of 28 IO lines coming into and out of the top-level FPGA VI. And compiled that VI. (Note: Originally I had compiled each of those smaller VI's, but it made each of their files about .5 meg, while an uncompiled version was about 50K. As long as your compile your top-level VI you should be fine.)
I then created a Real-Time VI that used the Open Reference, the Read/Write function, and Close Reference to access whatever lines I needed, using unbundle and bundle functions to gain access to desired IO lines.
I would advise against using the CallVI function (unless you have a specific reason to), as it slowed my development dramatically. That larger the VI became the longer it took to change code. Read/Write worked so much better!
Hope my pain and agony 😉 has helped you some.
- Con
02-22-2005 10:08 AM
02-22-2005 10:23 AM
02-22-2005 10:26 AM
09-08-2008 12:56 PM
Can you send a screenshot of this? I am trying to do it, but I don't think I understood what functions you used.