N210 buffering problems

조회 수: 17 (최근 30일)
Magnus Sandell
Magnus Sandell 2021년 3월 22일
답변: Karunya Choppara 2021년 7월 1일
Has anyone noticed any buffering issues with USRPs? I can transmit and receive data but whenever I change the transmitted data, the receiver still reads the old transmitted signal. This is true even if I stop transmitting or disconnect the power from the transmitter. If I do a "release" or a very large number of dummy reads, the correct data is read. This leads me to believe there is a problem with buffering but I don't know how to solve this, apart from releasing the system object or reading lots of dummy data (both of these approaches take up a lot of time).
I'm using two N210 with XCVR2450 daughterboards and Matlab R2020a (Communications Toolbox with SDRuTransmitter and SDRuReceiver). I've tried both with and without Burst Mode but that doesn't seem to make any difference. I'm seeing the same problem under Windows 10 and Ubuntu 20.04.

답변 (3개)

Karunya Choppara
Karunya Choppara 2021년 4월 14일
The dummy data indicates that the data is not valid. If the data length output of the SDRuReceiver is greater than zero, it indicates that the data is valid. If the data length output is zero, it indicates invalid data.
  댓글 수: 3
Karunya Choppara
Karunya Choppara 2021년 4월 17일
The current implementation of the SDRu receiver has inherent buffering, which we are actively working on to eliminate the buffer delays. However, upon releasing the receiver system object, the buffers would be cleared.
To obtain the valid data (outData in the code below)
for t =1:1000
[rcvdSignal,len]=radio_rx();
if len>0
outData = rcvdSignal;
end
end
release(radio_rx);
Magnus Sandell
Magnus Sandell 2021년 4월 20일
Yes, this is essentially the way I do it. I apply a number of dummy reads with radio_tx() where I don't care about the results. Once that is done, I read the data until len>0 to get valid data. However this is taking a long time, which slows down the measurements considerably.
Another approach is to release the system object. However, apart from taking a long time, I find that this has some transient behaviour where the read data looks strange the first few times, e.g, wild fluctuations even if a single tone has been transmitted. It settles down after a while but this adds to the delay.
Are there any other tricks to clear the buffer and ensure fresh data?

댓글을 달려면 로그인하십시오.


Karunya Choppara
Karunya Choppara 2021년 4월 29일
Hi Magnus,
One trick would be to use burst mode with number of frames in burst set to 1.
We are actively investing to update the internal buffer mechanism to eliminate the invalid data outputs with the receiver. The updates would be available on the release notes at https://in.mathworks.com/help/supportpkg/usrpradio/release-notes.html
  댓글 수: 1
Magnus Sandell
Magnus Sandell 2021년 4월 30일
Thanks for the tip. However when I tried it, I get the error message
Error using comm.SDRuTransmitter/stepImpl
Transmit unsuccessfully: Could not execute UHD driver command in 'sendData_c':
libmwusrp_uhd_capi:tx_send_samples:ErrInternalUnderflow There was underflow when performing a burst transmission.
This was with a transmit signal of size 5216 samples and an InterpolationFactor of 32. I tried other number of frames but although I can avoid the above error message, I still need dummy reads to avoid buffering issues.

댓글을 달려면 로그인하십시오.


Karunya Choppara
Karunya Choppara 2021년 7월 1일
Hi Magnus
The buffer mechanism for SDRu Transmitter and Receiver system objects is updated in R2021b, that are now available with the R2021b pre-release at this link.

카테고리

Help CenterFile Exchange에서 Communications Toolbox에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by