Hi Kasim, The Block ID "X/Radio#Y:Z" identifies the motherboard X, RFNoC block Y, and block-port Z. With this you can create an arbitrary graph to connect any blocks you want. Or, you can still use multi_usrp if the default graph is good for you.
With the tx and rx streamers, you have to call create_tx_streamer() (or the "rx" equivalent) and set the "block_id" and "block_port" streamer args. This is not a great design and is not well documented. Look at the couple of Ettus rfnoc examples regarding use of this function. For setting radio parameters such as freq, etc, you do need to do this for each Radio block (and port for cases where the block has 2 ports such as TwinRx). For rate, you use the DDC or DUC block controller. Rob On Wed, Mar 24, 2021 at 7:40 AM Chang, Kaixin <[email protected]> wrote: > I just noticed that there is no set_subdev() function in radio_ctrl block, > how do we configure subdev and channel for rfnoc then? > > > Thank you all for advice and help > ------------------------------ > *From:* Chang, Kaixin <[email protected]> > *Sent:* 24 March 2021 14:23:28 > *To:* [email protected] > *Subject:* [USRP-users] Re: rfnoc channel mapping > > > I found multi_usrp_rfnoc.cpp but no hpp, is this still in progress? > ------------------------------ > *From:* Chang, Kaixin <[email protected]> > *Sent:* 24 March 2021 14:07:10 > *To:* [email protected] > *Subject:* [USRP-users] rfnoc channel mapping > > > Dear Ettus Team, > > > I have a question about the channel mapping with rfnoc api. > > > With multi_usrp class I can set several subdev like: > > set_rx_subdev_spec("A:0 B:0", 0); > set_rx_subdev_spec("A:0", 1); > then I have channel 0 (A:0 of motherboard 0), channel 1 (B:0 of mb 0) and > channel 2 (A:0 of mb1). Then I can use usrp->set_rate(rate, channel) to > set different channel rate. And I can set for the streamer: > stream_args.channels = {0, 1, 2} > > However with rfnoc api, if I want to use set_rate(rate, channel), I have > to create an object: > > uhd::rfnoc::radio_control::sptr rx_radio_ctrl = > graph->get_block<uhd::rfnoc::radio_control>("0/Radio#0:0"); > which is marked by this block id "0/Radio#0:0". I wonder if I have > several motherboards and daughterboards with different block to use, if > their corresponding Radio blocks are different like: "0/Radio#0:0", > "0/Radio#1:0", "0/Radio#2:0", then shall I do the same as above with > multi_usrp to set channel and then set freq, rate, etc with only one > radio_ctrl object. Or I have to create for each daughterboard frontend, for > example A:0 of motherboard 2 a radio_ctrl object with only one channel? How > do I set the tx streamer's channel then? > > Sincerely > > Kasim > > _______________________________________________ > 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]
