Curious about the dma setting of the rfsoc_radio library

I use RFSoC4x2 and ZCU111 boards and I’m using PYNQ 3.10 version.

We are testing it on Jupyter to control it in a different form than the example G of rfsoc_notebooks.
I was looking at transmitter.py and receiver.py on rfsoc_radio via vscode and I don’t know why I set up the dma and how it works.

  1. Is it right for the transmitter to take the data out of MM2S_SA through transfer, and the receiver to send the data received to S2MM_DA?
  2. If so, why do you need the wait action
  3. I know that setting the transfer variable to 1 and 0 through the only receiver controller in the middle is to disable the transmission activation of the IP block, but it doesn’t go to 0 in wait, is this right because the data comes in continuously?
  4. If the data is simply continuously coming in, I think the data in S2MM_DA should keep changing, but it doesn’t change.

The first picture below is the dma setting of transmitter.py , and the second picture is the dma setting of receiver.py .
image
image

1 Like

Yes? (I’m not sure what your question is here.)

1. Is it right for the transmitter to take the data out of MM2S_SA through transfer, and the receiver to send the data received to S2MM_DA?

The DMA send() receive() start the DMA, but they do not check when the DMA transfer completes. Wait() checks the DMA status and waits until the transaction completes. i.e. it avoids a race condition in your code.

2. If so, why do you need the wait action

I don’t know what you mean. This toggles the controller. Maybe the answer above to #2 helps answer this?

3. I know that setting the transfer variable to 1 and 0 through the only receiver controller in the middle is to disable the transmission activation of the IP block, but it doesn’t go to 0 in wait, is this right because the data comes in continuously?

The DMA can (over)write new data to the same Destination Address. It is up to the consumer to read the data and use it before the next iteration:

4. If the data is simply continuously coming in, I think the data in S2MM_DA should keep changing, but it doesn’t change.

Cathal