On 15/11/2022 12:24, [email protected] wrote:
Is there a method for accessing a ddc_block_control object from a
multi_usrp object? I have been skimming the various RFNoC examples,
and it seems the preferred method of accessing RFNoC objects is via
the graph API. The problem is I can’t create an RFNoC graph for an
existing multi_usrp object without getting a runtime exception.
It looks like in UHD 3.X there was a method get_device3() which gave
access to the underlying RFNoC structure. I am using UHD 4.2 with an
x310.
Perhaps there is a reason that multi_usrp and RFNoC APIs appear mostly
orthogonal. The reason I want access to this block directly is it has
a set_freq() method that takes a frequency and a timestamp. Currently
in my application I use the timed command API to digitally retune at a
specified time. The issue that I encounter is I have to ensure that my
channels are serialized in time, because if the freq hop timed command
for channel A is t0, and channel B is t1, but the packet commanding
channel B arrives first, I have to ensure my application holds the B
command, waits for the A command to arrive, and issues the A command
first. I would really like to be able to issue freq shifts independent
of channel, but maintain the proper timestamping.
The multi_usrp API existed long before RFNoC was even a thing. They
were developed fairly separately for quite some time,
and then multi_usrp was mostly *re-implemented* "under the covers"
using RFNoC blocks underneath. With UHD 4.0 it
has merged even further. Beyond that, I cannot comment, since I'm
not an RFNoC user.
I think your troubles stem from the fact that there is only a single
timed-command queue in the USRP, and it is small and
finite. The architecture makes it awkward to express the kind of
"staggered" timing you're looking for, I think. It's not clear
to me that simply "reaching below" the UHD user-facing API will get
around this, but I could be wrong.
On top of that, I find the set_timed_command API cumbersome. I
occasionally crash from longer runs with my application. I don’t have
the exact runtime exception name, but it has something to do with a
buffer being full and crashing when too many timed commands are issued.
Having the exact exception details would be very helpful to share--just
like in any other discipline involving computers. This can
help the community help you.
_______________________________________________
USRP-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
_______________________________________________
USRP-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]