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]

Reply via email to