LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

FPGA read/write control arbitration

I have FPGA R/W nodes in 2 different cRIO RT timed loops.  The idea was to segregate high speed (1ms) FPGA access from a lower speed 10ms loop.  The 1ms loop has 1 FXP write and 2 I32 reads, the 10ms loop has a mix of about a dozen controls and indicators including 2 16 byte U8 arrays.  Surprisingly I am not seeing an improvement in loop speed between this version and the previous version were all the FPGA access was in the 1ms loop.  I would like to better understand how data is being transfered to and from the FPGA.  Is there a dedicated DMA channel for this?  How are multiple FPGA R/W nodes serialized?  Are asynchronous operations guarenteed to be atomic?  I read somewhere that any transfer over 32 bits is not atomic, but is this a problem if my 2 loops never have R/W variables that are accessed in both loops?  Thanks very much.

0 Kudos
Message 1 of 2
(2,732 Views)

Hey sachsm,

 

Read/Write nodes execute every time they are called in your RT code. When they are called, they call down to the FPGA using a basic PIO call. They do not use a DMA channel. Also, read/write nodes are not guaranteed to be atomic. See the below link for more details:

 

http://digital.ni.com/public.nsf/allkb/151CB8D155DAB89986257950005BB879?OpenDocument

 

Regards,

 

Doug B

Applications Engineer
National Instruments
0 Kudos
Message 2 of 2
(2,716 Views)