09-28-2015 10:15 AM
Hi,
I recently bought the cRIO-9075 but in order for me to design the software-firmware architecture I need to get same answers for the following questions (I'm a beginner in labVIEW FPGA):
Thanks a lot,
Idan
09-29-2015 05:34 PM
Hi Idan!
The DMA that you are currently using is based on the name that you give it. As for how it works and how many DMA channels you have available, I would recommend checking out this documentation:
Using DMA FIFO to Develop High-Speed Data Acquisition Applications for Reconfigurable I/O Devices
http://www.ni.com/tutorial/4534/en/
cRIO-9075 Operating Instructions
http://www.ni.com/pdf/manuals/375650b.pdf
Thanks!
10-08-2015 05:49 AM
Hi,
Thank you for your response!
I review those documents that confirmed that I Indeed have 5 DMA in the cRIO-9075. Unfortunately, I still don’t know is it possible to use let's say, 10 different DMA's names from unrelated parallel loops… (and maybe labview will multiplex between them all…).
Thanks alot,
Idan
10-08-2015 07:13 AM
iozana wrote:I review those documents that confirmed that I Indeed have 5 DMA in the cRIO-9075. Unfortunately, I still don’t know is it possible to use let's say, 10 different DMA's names from unrelated parallel loops… (and maybe labview will multiplex between them all…).
You can do the multiplex youself. I typically use a single DMA for sending commands/data to the FPGA and a second DMA for sending data to the RT/host. You have one loop that reads the incoming DMA and use other FIFOs to send the commands/data to whoever needs it. The key is to make the data type in the DMA a big data type (like U64 or U32) and build up you command ID and data into that. I typically use 1 byte for the command ID (or destination ID), leaving the rest of the word for your data. You can do the same for your return data.
So with that set up, you just need 2 DMAs. It works extremely well for non-high speed data. Anything really high speed should have its own DMA.
I can't remember the name of this architecture (messanger?), but if you dig through some of the NI Developer Days prensentations, you will find one about making FPGA code extendable. This was discussed in that presentation.
10-08-2015 07:28 AM
I found the presentation from 2014. There is a 2015 version floating around too, but I don't have time to search for it. https://decibel.ni.com/content/docs/DOC-36048
So what I was attempting to describe is called the Reactor Pattern. It is discussed at the end of the presentation.