[USRP-users] Using multiple RX DDC chains on USRP2

Roy Thompson rthompso at gmail.com
Fri Feb 8 21:22:43 EST 2013


Sure, I created Issue #515 and will send a patch in once I update it
to work how you suggested (i.e. no API changes).

-Roy

On Fri, Feb 8, 2013 at 8:42 PM, Josh Blum <josh at ettus.com> wrote:
>
>
> On 02/08/2013 05:55 PM, Roy Thompson wrote:
>> Thanks, I was able to get it working by creating a new GRC XML file
>> that sets the channels parameter in the stream args as you suggested.
>> I also had to update gr_uhd_usrp_source to allow for specifying a
>> channel to set_samp_rate().
>
> Thats great. Can you send the patch in?
>
> I think the sample rate part can be fixed without changing any of the
> external interface or wrappers, inside the source cc file we can use the
> stream args channels are the argument to setting the samp rate.
>
> So I think just the xml file needs a new parameter to specify the
> desired channel
>
> -josh
>
>>
>> -Roy
>>
>>
>>
>> On Feb 8, 2013, at 5:15 PM, Josh Blum <josh at ettus.com> wrote:
>>
>>>
>>>
>>> On 02/08/2013 02:53 PM, Roy Thompson wrote:
>>>> Is there any way to stream both channels with different rates
>>>> into the same flowgraph in GNURadio (i.e. 2 sources)?   From what
>>>> I can tell, the answer is no but I figured I'd ask before trying
>>>> to come up with a hack for it.
>>>
>>> Now that I am thinking about it. You could have two source blocks
>>> with the same device address, because its the same underlying
>>> device object. We just need a way to select different channels when
>>> the source block creates the rx streamer. The rest of the
>>> properties should map ok.
>>>
>>> So, we have a way to specify the streamer args from python, I just
>>> dont think GRC brings it out. Basically the stream args.channels is
>>> a list of channels. So for one usrp source this is going to be [0],
>>> and the other [1]
>>>
>>> http://gnuradio.org/cgit/gnuradio.git/tree/gr-uhd/include/gr_uhd_usrp_source.h#n88
>>>
>>>
>>>
> http://files.ettus.com/uhd_docs/doxygen/html/structuhd_1_1stream__args__t.html
>>>
>>> I would see how grc generates the python code for 1 channel.
>>>
>>> -josh
>>>
>>>>
>>>> Thanks, Roy
>>>>
>>>> On Thu, Feb 7, 2013 at 4:41 PM, Josh Blum <josh at ettus.com>
>>>> wrote:
>>>>>
>>>>>
>>>>> On 02/07/2013 03:30 PM, Roy Thompson wrote:
>>>>>> Thanks, will that work if the chains have different sample
>>>>>> rates? There is a comment in multi_usrp.hpp stating that all
>>>>>> channels must have the same rate, but it's not clear what
>>>>>> causes the limitation since it looks like it is possible to
>>>>>> set the rate for individual channels with set_rx_rate().
>>>>>
>>>>> Yes, all the api calls take a channel number. So in this case,
>>>>> you would want a different rx_streamer for each channel, since
>>>>> they are at different rates.
>>>>>
>>>>> -josh
>>>>>
>>>>>>
>>>>>> -Roy
>>>>>>
>>>>>> On Thu, Feb 7, 2013 at 4:17 PM, Josh Blum <josh at ettus.com>
>>>>>> wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 02/07/2013 02:49 PM, Roy Thompson wrote:
>>>>>>>> I am starting to look through some of the FPGA code for
>>>>>>>> the USRP2 and I noticed that there are 2 RX DDC chains.
>>>>>>>> I would like to be able to use one of the chains to do
>>>>>>>> standard DDC processing, and I would like to modify the
>>>>>>>> second chain to do custom processing on the same A/D
>>>>>>>> channel.  The output sample rate for the second chain
>>>>>>>> will be different from the first. Is it possible to
>>>>>>>> configure the UHD driver to support this configuration
>>>>>>>> and allow for receiving from both chains?
>>>>>>>
>>>>>>> The rx_multi_samples example can show you how to use two
>>>>>>> DDC chains. If you had a WBX for example with frontend
>>>>>>> (named 0), this would map frontend 0 located on the first
>>>>>>> and only daughterboard (named A) to DSP0 and DSP1
>>>>>>> --subdev="A:0 A:0"
>>>>>>>
>>>>>>> see the --help for more.
>>>>>>>
>>>>>>>> std::cout << "    This is a demonstration of how to
>>>>>>>> receive aligned data from multiple channels.\n" "    This
>>>>>>>> example can receive from multiple DSPs, multiple
>>>>>>>> motherboards, or both.\n" "    The MIMO cable or PPS can
>>>>>>>> be used to synchronize the configuration. See --sync\n"
>>>>>>>> "\n" "    Specify --subdev to select multiple channels
>>>>>>>> per motherboard.\n" "      Ex: --subdev=\"0:A 0:B\" to
>>>>>>>> get 2 channels on a Basic RX.\n" "\n" "    Specify --args
>>>>>>>> to select multiple motherboards in a configuration.\n" "
>>>>>>>> Ex: --args=\"addr0=192.168.10.2, addr1=192.168.10.3\"\n"
>>>>>>>> << std::endl;
>>>>>>>
>>>>>>>
>>>>>>> See this readme, there is a place where it should be
>>>>>>> convenient to replace the DDC with custom logic:
>>>>>>>
>>>>>>> http://code.ettus.com/redmine/ettus/projects/uhd/repository/revisions/master/entry/fpga/README.txt
>>>>>>>
>>>>>>>
>>>>>>>
> -josh
>>>>>>>
>>>>>>>> Thanks, Roy
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> USRP-users mailing list USRP-users at lists.ettus.com
>>>>>>>> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>>>>>>>
>>>>>>>
>>>>>>>>
> _______________________________________________
>>>>>>> USRP-users mailing list USRP-users at lists.ettus.com
>>>>>>> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com




More information about the USRP-users mailing list