I am using the RFSoC 4x2 with the RFSoC_MTS project and generating waveforms in MATLAB. After converting the waveforms to CSV, I transmit them by assigning them to ol.dac_player. However, the size of dac_player is constrained by the 5MB BRAM, which complicates achieving a proper radio frame. For instance, when I transmit a 50 MHz 5G NR signal, the looped sequence duration is 8.54 ms.
I would like to control the number of samples being looped, rather than looping over the entire 5MB of BRAM. Essentially, I need to loop only a subset of the samples, not the full dataset. Could anyone offer advice on how to implement this?
Hi,
If I understand correctly, you generate samples via MATLAB, send them to the RFSoC 4x2 and then send them to the DAC via ol.dac_player. However the transfer is too long because there are too many samples.
Can you reduce the number of samples you generate from MATLAB?
Did you check in Vivado if you could increase the frequency of the RFSoC or the DAC to accelerate the data processing?
Thank you for your reply. The main issue is I need to have control over samples that are looped so that I can customize the radio frames length. For example to transfer a radio frame of length 5 ms on loop, the limitation is that the ol.dac_player’s length is predefined by the memory of the BRAM. So, if I need to change the number of samples predefined in ol.dac_player, I need to change the size of the BRAM by Address_editor in Vivado. But the BRAM size can be increased and decreased by orders of 2, so it does not give me the required flexibility. Therefore, I am looking for a way to have a BRAM size of let’s say 5 MB which gives me 1048576 samples. If I generate a waveform with sample rate of 30.720 MS/S, and I want to transmit a 10ms frame on loop, I need to loop over 307,200 samples. But I do not know how I can configure the ol.dac_player to loop over exactly 307,200 samples instead of the entire number of samples available in BRAM. I hope this clears it.