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

Josh Blum josh at ettus.com
Fri Feb 8 20:42:24 EST 2013



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