Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gnuradio Demo #6

Open
LyceanEM opened this issue May 21, 2024 · 5 comments
Open

Gnuradio Demo #6

LyceanEM opened this issue May 21, 2024 · 5 comments
Assignees

Comments

@LyceanEM
Copy link

Trying the gnuradio demo and trying to change the decimation or sample rate crashes the flowgraph with the error message "Connection Refused".

I am interested in streaming multiple channels to the client computer, and ideally using gnuradio to generate the transmit signals and stream them to the RFSoC, while streaming the receive channels back to the client. Can you give any advice on how to set this up based on using QSFP offload?

Many thanks

@marsiau marsiau self-assigned this May 21, 2024
@marsiau
Copy link
Member

marsiau commented May 23, 2024

Hello,

The latest commit to this repo should fix the issues you're having. There is a separate notebook rfsoc_offload_board_gr.ipynb that starts an XMLRPC server needed to remotely control the board.

Simultaneous bi-directional streaming to/from board/GNU Radio is definitely possible with design modifications as the netlayer IP supports reception of UDP packets.

The main issue I had was achieving sufficiently high real-time sample rate on the PC to prevent spectrum anomalies. If you can, I would suggest pre-generating your signal to be transmitted and stream from file or directly from the board.

You might find some useful information in my paper .

Feel free to contact me with any further questions.

Cheers,
Marius

@LyceanEM
Copy link
Author

Thank you Marius

I will pull the latest commit and try again. Can multiple ADC be initialized and synchronized with this overlay? I have been looking at the codebase and while I have not tried adding a multi tile sync call, I don't seem to have access to all four channels. When I try to access other tiles or blocks, I get errors from either XRFdc_DynamicPLLConfig (for any tile but 2), and for tile 2 and any block but 0 I get an error call from XRFdc_SetNyquistZone, stating that the block is not available. From the RFSoC book I was under the impression that the avaliable ADC blocks are the 0 indexed blocks from each tile, is this not correct, or do I need to generate a derivative overlay to access the other tiles?

Many Thanks

Tim

@LyceanEM
Copy link
Author

Hello Marius

I have been trying to adapt the bitstream file to allow for the simultaneous and coherent streaming from each of the four channels, however the switch approach seems limited to only a single channel at a time. Can you recommend an approach to streaming all channels at once, ideally which each channel streaming to a different port so I can use seperate UDP ports at the receiving side?

Many Thanks

Tim

@marsiau
Copy link
Member

marsiau commented Jun 17, 2024

Hi Tim,

According to the netlayer IP docs the S_AXIS_sk2nl_dest signal can be used to supply the destination socket. Together with modifications to the socket table from PS side should allow you to achieve sending data to multiple different sockets on the receiving side. This will still require some form of hardware switch/packet scheduler to merge the IQ data from multiple channels into a single stream of packetised data.

Hope this helps.

Cheers,

Marius.

@LyceanEM
Copy link
Author

Hi Marius

We have been working on this but there isn't clear documentation on how the socket table on the python overlay side interfaces with the packet switch IP in Vivado. Can you give a bit more information on how this should be routed?

Many Thanks

Tim

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants