On 2021-11-23 14:20, Dustin Widmann wrote:
Hi list,
I occasionally, unpredictably, get FPGA-related errors. Usually some
sort of FPGA timeouts, so I have to reset the USRP after these errors,
which is rather inconvenient.
The software is C++ using the UHD 4 multi-usrp API.
Without going into too much detail, I wonder if there is anything
particular to my *approach* that could make things more prone to FPGA
errors of any sorts. I'm also curious about the different
“stream_modes” that are available, their pros and cons / use cases,
and more particularly if I'm really using the one best suited to my
use case.
Before describing that, this is what I'm trying to do. It's fairly
simple, but I'm trying to make it tune, collect, and then tune again
as quickly as possible without leaving my cozy C++ bed. It's currently
doing this >100 times per second.
* transmits continuously
* in a loop:
*** tune the transmitter and receivers and set their gain:
*** receive a fixed number of samples
How I'm currently going about it:
In main object/thread
* init the radio
* create a tx object and move it to a new thread
* give the tx object a streamer
* tell the tx object to start streaming
* create a rx object and move it to a new thread
* give the rx object a streamer
* tell the rx object to start streaming
* in a loop (forever):
*** clear command time
*** set command time to now()+0.004
*** set_rx_freq to next frequency for both channels
*** set_tx_freq to next frequency for channel 0
*** set the rx gain
*** set the tx gain
*** sleep for 4ms
*** ask the rx object to save some samples
One thing that leaps out at me is that it is likely the case that
completing tuning for 3 channels all within 8ms is really unlikely to be
satisfied,
depending on the type of daughterboard you have installed.
in tx object/thread
* in a loop (until asked to stop by main)
*** call send on the streamer with max_num_samps samples from a fixed
waveform
* when killed, send an empty end_of_burst
in rx object/thread
* issue STREAM_MODE_START_CONTINUOUS, starting 0.25 in the
future/_restart
* in a loop (until asked to stop by main)
*** recv max_num_samps from the streamer
*** check for/handle errors if they occur (often do at the start of
the stream)
*** copy the samples if currently collecting, else discard them
* when killed, issue STREAM_MODE_STOP_CONTINOUS
I can/will provide more detail/code/etc, but that's not necessarily
relevant to the *approach* I wouldn't think. To reiterate the
question, I want to know if there is anything about the approach that
would make FPGA related errors likely.
-Dustin
_______________________________________________
USRP-users mailing list --usrp-users@lists.ettus.com
To unsubscribe send an email tousrp-users-le...@lists.ettus.com
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com