Hello all,
I've done some troubleshooting on an underrun
problem I was having where the signal seemed to get broken up with
random gaps. The underruns happen when I set the data rate of my stream
lower than the external modulator/demodulator's transmission rate. The external modulator code writes to a file and is read by GNURadio scripts I made in GRC. I have a
simple transmit GRC script which reads from a file, then the signal goes
through a rational resampler block, then a float to complex block, then a
constant multiplier (2^15-1), then to the USRP sink.
If I have
the file sampling rate in the external modulator and GRC script set to 500 kS/sec
and the USRP sampling rate at 1 MHz, the system works
perfectly. I see packet by packet on the oscilloscope and when there
are underruns there is a wider gap between packets and no random gaps
inside the packets themselves.
When I set the file sampling rate
in the modulator and GRC script to 125 kS/sec, it works perfectly when
the USRP sampling rate is at 1 MHz, however if I set the USRP sampling
rate to 500 kS/sec or 250 kS/sec I start to see random gaps inside
packets. If I keep the USRP sampling rate at 500kS/sec or 250kS/sec but
set the data stream to a higher data rate, I get no underruns and the
signal looks great, except of course I will have an unwanted building latency on
the receiver side, since the data rate is higher than the transmission rate.
Does anyone know what could be
causing the gaps inside the packets? I expect the USRP to give zero signal only when it is not receiving anything from the external modulator code. The modulator flushes an entire packet at a time to the file read by the GRC script. Is it something related to the buffering
in between GNURadio blocks? I want to run the USRP at 250kS/sec so I can reduce the processor's load.
Thank you for your help, Tom