ni.com is currently undergoing scheduled maintenance.

Some services may be unavailable at this time. Please contact us for help or try again later.

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
(3,101 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
(3,085 Views)