Forum: GNU Radio Using the USRP LFRX daughterboard to receive a complex baseband signal (I+Q)

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
97b71cdc94d6ae1d0be0afc56320ab6c?d=identicon&s=25 Einar Thorsrud (Guest)
on 2009-02-15 22:24
(Received via mailing list)
Hi all,

I am having difficulties understanding how to combine the two signals on
the RXA and RXB connectors on the same LFRX-daughterboard to one single
complex signal (I+Q) using the "usrp_dual_source_x" block.

The best would be to receive a float from each, and then combine the two
signals to a complex signal using the "gr_float_to_complex" block.
However it seems it is only possible to get the samples as short or
complex, so my idea is to take the real part of each of the two
“complex” signals (as they in reality are real), and combine those to
complex using the above mentioned block.

This method involves some seemingly unnecessary conversions, so I am
guessing that there is another way?

- Einar
4252201ac30d6dd44d8090ce1070e35f?d=identicon&s=25 Josh Blum (Guest)
on 2009-02-15 23:17
(Received via mailing list)
The current USRP API does not support receiving complex signal (I on RXA
and Q on RXB) from LFRX and BasicRX boards. At least not in an easy
way...

In the future, the USRP API will support complex samples, and
"usrp_dual_source_x" will have an option called antenna: "RXAB"

Any word on this from developers?

Einar Thorsrud wrote:
> “complex” signals (as they in reality are real), and combine those to
> complex using the above mentioned block.
>
> This method involves some seemingly unnecessary conversions, so I am
> guessing that there is another way?
>

Its not ideal, but thats the way to do it for now.

USRP dual source -> 2 convert complex to float -> combine 2 floats with
"gr_float_to_complex"

:-(

-Josh
3596cfe1d579c65b9babd35e8787977c?d=identicon&s=25 Matt Ettus (Guest)
on 2009-02-15 23:25
(Received via mailing list)
Josh Blum wrote:
> The current USRP API does not support receiving complex signal (I on RXA
> and Q on RXB) from LFRX and BasicRX boards. At least not in an easy way...
>
> In the future, the USRP API will support complex samples, and
> "usrp_dual_source_x" will have an option called antenna: "RXAB"
>
> Any word on this from developers?



We've talked about this in the past.  The quickest way to do this would
be to mod the LFRX code.  Currently it has 2 subdevices, one for the A
input and one for the B input, which control the mux settings.  If we
made a setting for a "C" input which just changed the mux settings, that
would solve it pretty quickly.

Matt
745d8202ef5a58c1058d0e5395a78f9c?d=identicon&s=25 Eric Blossom (Guest)
on 2009-02-16 22:51
(Received via mailing list)
On Sun, Feb 15, 2009 at 02:24:32PM -0800, Matt Ettus wrote:
>> Any word on this from developers?
>
>
>
> We've talked about this in the past.  The quickest way to do this would
> be to mod the LFRX code.  Currently it has 2 subdevices, one for the A
> input and one for the B input, which control the mux settings.  If we
> made a setting for a "C" input which just changed the mux settings, that
> would solve it pretty quickly.
>
> Matt

You can get what you want today by just setting an appropriate value
for the Rx mux:

  /*!
   * \brief Set input mux configuration.
   *
   * This determines which ADC (or constant zero) is connected to
   * each DDC input.  There are 4 DDCs.  Each has two inputs.
   *
   * <pre>
   * Mux value:
   *
   *    3                   2                   1
   *  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
   * +-------+-------+-------+-------+-------+-------+-------+-------+
   * |   Q3  |   I3  |   Q2  |   I2  |   Q1  |   I1  |   Q0  |   I0  |
   * +-------+-------+-------+-------+-------+-------+-------+-------+
   *
   * Each 4-bit I field is either 0,1,2,3
   * Each 4-bit Q field is either 0,1,2,3 or 0xf (input is const zero)
   * All Q's must be 0xf or none of them may be 0xf
   * </pre>
   */
  bool set_mux  (int mux);


Assuming your Basic LF is on side A, this should work:

  u.set_mux(0x00000010)


Eric
4252201ac30d6dd44d8090ce1070e35f?d=identicon&s=25 Josh Blum (Guest)
on 2009-02-17 03:41
(Received via mailing list)
svn up!

It is now possible to receive quadrature samples from the RXA + RXB
antennas of the basic RX and LFRX daughterboards. To use this...

:::For GRC, there is a new rx antenna option called RXAB.

:::For command line, usrp scripts support the "-R A:2" or "-R B:2"
option.

:::For python coders, the subdev spec should be (0, 2) for side A and
(1, 2) for side B.

-Josh
This topic is locked and can not be replied to.