MATLAB: Difference between SDR transmitter and tx.transmitrepeat function

communication system toolboxsimulinkunderflowzedboard

Hi, I used transmitter system object "sdrtx('ZedBoard and FMCOMMS2/3/4')" to connect to ZedBoard and AD9361, and I already successfully transmitted the waveform.
However, now I would like to transmit the same waveform on the Simulink, and I used the SDR Transmitter block (also ZedBoard and FMCOMMS2/3/4 version) in Communication System Toolbox for Xilinx Zynq-Based Radio. I encountered serious underflow problem on Simulink, since I changed the baseband sampling rate to 30M Hz. But it works well on original script version (using tx.transmitRepeat function) even if I modify the baseband sampling rate.
What is the difference between these two version and how could I solve this problem on simulink? (Opening the Burst mode wouldn't work.)
Thank you very much.
Angie

Best Answer

Hi Angie,
When you use the Simulink block, you are attempting to stream data from Simulink across the Ethernet link to the board. You will be unable to do this at high rates due to 1) the physical speed limitation of the Ethernet link and 2) the performance limits of Simulink. In your case, 30MHz is faster than the physical upper rate supported. In the documentation we recommend using burst mode at transmit rates of > 3MHz.
Note that burst mode only guarantees uninterrupted transmission of data within the burst, i.e. within FrameSize*NumberOfFramesInBurst samples. Outside of this burst of data, you will get underflows. The repeated transmitter function is a special mode that downloads the waveform onto the hardware, and repeatedly transmits from there. Because the waveform is not limited by Simulink/MATLAB performance or the Ethernet link, you can transmit at full rate. Note this capability is only available from MATLAB.
Kind regards,
Neil