Kevin,
On their own, the VIs on the host and the FPGA VI run asynchronously. You do not explicitly have to synchronize for the purposes of "avoiding a collision". You will read the most recently acquired input value, and output values from the control algorithm will be updated on the I/O cycle.
If your acquisition loop on your host is running faster than your control loop on your FPGA, synchronization will most likely not be needed. However, there are two reasons why you would need synchronization:
- If the timing of the FPGA VI is needed to control the timing of the application running on the host, or vice-versa.
- To acquire data at a known rate and transfer all data without loss to the host application for processing or data logging.
This can be accomplished through interrupt or DMA based handshaking. For more information on these methods, see lessons 5 and 6 of the LabVIEW 8 FPGA Module Training.
Please let me know if you have any more questions.
Regards,
Craig D
Applications Engineer
National Instruments