Digital I/O

cancel
Showing results for 
Search instead for 
Did you mean: 

Limitation in number of DMA FIFOs for multip-up parallel comm with FPGA

Hi

 

I am using 7820R in a project to send data back and forth between host and target. So far ,my setup was 4 and in target I have 4 SPI engines that they can run fully in parallel

They all had their own DIO for SPI and their own DMA FIFO for read and write . I have 4 DMA write and 4 DMA read to send data between host/target. Now I want to expand this code to 16UP

I don't have any limitation in number of DIOs but now I need 16 FIFO read and 16 FIFO write and 7820R only has 16 FIFOs

 

Is there any design that I can just use 1 FIFO for read/ 1 FIFO for write and I can still keep the fully parallel model so the SPI engines can run fully in parallel?

0 Kudos
Message 1 of 5
(1,431 Views)

Can you interleave the data? This can help save on FIFOs.


Certified LabVIEW Architect, Certified Professional Instructor
ALE Consultants

Introduction to LabVIEW FPGA for RF, Radar, and Electronic Warfare Applications
0 Kudos
Message 2 of 5
(1,404 Views)

I can interleave the data , but on top I have multiple sequencers that async can call DMA FIFOs . Since there is a dedicated FIFO right now there is no problem

But if I use 1 DMA FIFO then I have to make the execution  of that FIFO serially   - non reentrant and that means I will lose  parallelism  

0 Kudos
Message 3 of 5
(1,399 Views)

If you need true parallelism, you're limited by the number of available FIFOs. On the other hand, you can create pseudo-parallelism by creating an aggregator on the host side, which will asynchronously gather data from all sources and serialize them to the FPGA and vice versa. This way, all your clients would not be bogged down by a non-reentrant API.

 

This is how even most instrument drivers work, whenever there can be more than one session with the same hardware.

Santhosh
Soliton Technologies

New to the forum? Please read community guidelines and how to ask smart questions

Only two ways to appreciate someone who spent their free time to reply/answer your question - give them Kudos or mark their reply as the answer/solution.

Finding it hard to source NI hardware? Try NI Trading Post
0 Kudos
Message 4 of 5
(1,385 Views)

@ethen99 wrote:

I can interleave the data , but on top I have multiple sequencers that async can call DMA FIFOs . Since there is a dedicated FIFO right now there is no problem

But if I use 1 DMA FIFO then I have to make the execution  of that FIFO serially   - non reentrant and that means I will lose  parallelism  


The 7820 allows for multiple samples per cycle on DMA-FIFOs.  The total depends on the datatype.  If you go to the DMA-FIFO's properties under Interfaces, you will see the option "Number of Elements to Read" (or Write).  In this case you can 'widen' the DMA-FIFO so you can send more than 1 element.  This will allow you to maintain the parallelism/throughput that you had with 4 DMA-FIFOs.

 


Certified LabVIEW Architect, Certified Professional Instructor
ALE Consultants

Introduction to LabVIEW FPGA for RF, Radar, and Electronic Warfare Applications
0 Kudos
Message 5 of 5
(1,370 Views)