From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Real-Time Measurement and Control

cancel
Showing results for 
Search instead for 
Did you mean: 

sbRIO-9607 FIFO writing

Hello,

I'm using the sbRIO-9607 to read from an acquisition device on the RTOS calling c++ code in a timed loop which works well and completes the reading cycle within the required time of 500us.

On the other hand I'm trying to send those samples which have been read to the FPGA using the FIFO with an invoke method and write.
This process of writing to the FIFO DMA is taking about 1.5ms to complete which is out of my required timing to achieve real-time acquisition and analysis (On the FPGA the analysis completes within 500us so my timing is doubled due to FIFO writing).

I would like to emphasize that my data points are of type float and I don't cast them manually to fixed point, but just connect the array of data points to the invoke method and let it handle the casting automatically.

Is there a limit on the required timing to write to the FIFO? is there another method which is capable of supporting higher transfer rates? or can I change anything in the configuration to get better results.

 

Thanks

Roie

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

Hello  Roie,

 

So there are different options for communicating between the FPGA and the RT target. The current method you are using is DMA FIFO, which is considered to be a stream. You could alternatively send tag data, if that would work in your application. Here is an article that explains the different between tags and streams, as well as outlining all the communication options you have with the FPGA, RT and HMI.

http://www.ni.com/white-paper/53345/en/ 

 

I would also suggest walking through the configuration flowchart listed in this article regarding DMA FIFO configuration. The DMA FIFO is configurable, or at least there are multiple ways to implement it which affect it's performance. I would suggest walking through this as you design your application.

https://zone.ni.com/reference/en-XX/help/371599P-01/lvfpgaconcepts/fpga_transfer_data/

 

Finally, you noted that you are using type float for your data points. They will use more memory, and therefore will not be as fast as fixed point. If you do not need your data to be floating or can manage with fixed point, I would suggest altering your data for increased speed.

 

Cheers,

Michael Pahl

Applications Engineering 

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