ZCU111 as a daq?


I want to acquire one channel RF signal. What is the maximum buffer size? How can we increase it to save large data (say 4GB), and then transfer to PC via ethernet. For my project, the sample rate may be around 400-500MSPS (RF center can be variable).

Thanks in advance

1 Like

You ask about max buffer size, but this depends on where you want to buffer your data or how you want to transfer it to your PC. You may not be considering the best solution for transferring data to your PC.

You could build a PL design to stream data from the DAC to the SFP port.
This would allow you to stream data directly to your PC. Assuming your PC can keep up, then you would have a minimal buffer (in the PL) and no max transfer size.

If you are considering PS DRAM as the “buffer”, i.e. streaming from DAC to the PS DRAM, and then sending via PS Ethernet; then the max buffer is whatever PS DRAM is available.
The PS DRAM on ZCU111 is 4GB. The Operating System runs from PS DRAM, so this will reduce the amount of DRAM available. In PYNQ we generally use contiguous memory buffers. The max available contiguous buffer will be the limit in this scenario. This may be what you are asking, but this is not a very efficient way to transfer from the DAC to your PC.

The ZCU111 also has a SATA port, so you could connect a SATA drive. Then your buffer would be the max size of the drive. There is also an FMC that you could use to stream data but I think this is outside the scope of your questions. I don’t see why you would need this instead of SFP.


Thank you for your reply.

Yes, I need to transfer ADC data to PC, for continuous data acquisition.

But, SFP implementation will require four SFP28 connectors!
Or Implement 100 GbE as presented in https://discuss.pynq.io/t/100-gigabit-ethernet-for-rfsoc-pynq-overlays/3053
These will require extra hardware and PC setup–> So, this method is not preferred.

For now only one channel ADC, 5-10 seconds of continuous data will be enough, so I was considering PS DRAM as a buffer. Then transfer data to PC via ethernet.

As you said " In PYNQ we generally use contiguous memory buffers. The max available contiguous buffer will be the limit in this scenario." \
So, how to increase the memory size? (Using pynq.allocate !)
Also, if I increase the PS DRAM to 32 GB. Is it possible to write and read data in the extra 28GB?
I think 28 GB data will be enough.


Another major consideration is what are the sample rates you are using. PS-DRAM is shared with the processor and its peripherals. The maximum ideal BW of the PL to PS-DRAM possible is about 5GB/s, but more in the ballpark of 4GB/s. PL DRAM is typically more appropriate and with a custom board you can optimize. A continuous streaming application will require one to contend with memory accessing by implementing a paging strategy. You want to avoid thrashing through the DRAM rows and banks and incurring excessive latency due to a poor access pattern.

Of course, it all depends on the number of channels you are capturing, sample rate, etc. so that you fit in the available BW of your ingress and egress pipes.