Forum: GNU Radio iq balance calibration

D7f37aea9c2d1087a71c7bd680541a8a?d=identicon&s=25 Alexander B (Guest)
on 2013-10-09 13:16
(Received via mailing list)
Hello,

I am trying to adapt the existing cal_tx/rx_iq_balance utility to a
development daughterboard.

Initially, I am trying to just get the existing code running and then I
intend to modify it if it is not compatible out-of-the-box with my
dboard.

At the moment, I am working through a series of obstacles that throw
errors
of the "this device is not supported" nature.

I have found the code that has a hardcoded check list for known boards
and
am adding mine to the list.

There is one part in usrp_cal_utils.hpp  that requires modification but
I am
unsure about it.

There is a section that checks motherboard names, USRP2, B100, E100, and
E110.
I can deal with the daughterboard issues, but do not know why the USRP1
does
not show up in the list of checks.

Also, if I was to simply add the USRP1 to the code, I'm not so sure what
the
tx/rx_rates are referring to in the other boards, and what would be a
suitable value for the USRP1.

This is the code section I am referring to:


static inline void set_optimum_defaults(uhd::usrp::multi_usrp::sptr
usrp){
    uhd::property_tree::sptr tree = usrp->get_device()->get_tree();

    const uhd::fs_path mb_path = "/mboards/0";
    const std::string mb_name = tree->access<std::string>(mb_path /
"name").get();
    if (mb_name.find("USRP2") != std::string::npos or
mb_name.find("N200")
!= std::string::npos or mb_name.find("N210") != std::string::npos){
        usrp->set_tx_rate(12.5e6);
        usrp->set_rx_rate(12.5e6);
    }
    else if (mb_name.find("B100") != std::string::npos){
        usrp->set_tx_rate(4e6);
        usrp->set_rx_rate(4e6);
    }
    else if (mb_name.find("E100") != std::string::npos or
mb_name.find("E110") != std::string::npos){
        usrp->set_tx_rate(4e6);
        usrp->set_rx_rate(8e6);
    }
    else{
        throw std::runtime_error("self-calibration is not supported for
this
hardware");
  ^^^ THIS IS THE CASE RUN WITH USRP1 ^^^
    }



So in summary, my questions are:

1. Can I simply expand the code to include the USRP1 like so:

else if (mb_name.find("USRP1") != std::string::npos){
        usrp->set_tx_rate(xxx);
        usrp->set_rx_rate(xxx);

Or is the USRP1 physically incompatible?

2. If it is compatible, what would be appropriate for values xxx, or at
least what values in the radio system is this code setting?

Thanks in advance

Alex



--
View this message in context:
http://gnuradio.4.n7.nabble.com/iq-balance-calibra...
Sent from the GnuRadio mailing list archive at Nabble.com.
D7f37aea9c2d1087a71c7bd680541a8a?d=identicon&s=25 Alexander B (Guest)
on 2013-10-09 14:43
(Received via mailing list)
I should point out that i have made the changes:

adding:

else if (mb_name.find("USRP1") != std::string::npos){
        usrp->set_tx_rate(4e6);
        usrp->set_rx_rate(4e6);
    }

My questions still stand as i am not entirely sure of what concerns may
exist in terms of compatibility, it strikes me as a bit strange that
USRP1
does not exist in the list by default..

The tx_rate I am assuming to be the UHD <-> USRP1 sample rate.



--
View this message in context:
http://gnuradio.4.n7.nabble.com/iq-balance-calibra...
Sent from the GnuRadio mailing list archive at Nabble.com.
558c40b97bd1af8d912424757714bda9?d=identicon&s=25 Marcus D. Leech (Guest)
on 2013-10-09 15:15
(Received via mailing list)
On 10/09/2013 07:15 AM, Alexander B wrote:
>
>
>      const uhd::fs_path mb_path = "/mboards/0";
>      }
>
> Or is the USRP1 physically incompatible?
The USRP1 doesn't have the necessary support in the FPGA for this, which
is why it isn't supported in these utilities.
D7f37aea9c2d1087a71c7bd680541a8a?d=identicon&s=25 Alexander B (Guest)
on 2013-10-09 15:28
(Received via mailing list)
Ahh...... ok

Thank you Marcus. i'll wait for my USRP2 we ordered then and try again.

Alex



--
View this message in context:
http://gnuradio.4.n7.nabble.com/iq-balance-calibra...
Sent from the GnuRadio mailing list archive at Nabble.com.
This topic is locked and can not be replied to.