Quantcast

iq balance calibration

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

iq balance calibration

Alexander B
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: iq balance calibration

Alexander B
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.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: iq balance calibration

mleech
In reply to this post by Alexander B
On 10/09/2013 07:15 AM, Alexander B wrote:

> 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?
The USRP1 doesn't have the necessary support in the FPGA for this, which
is why it isn't supported in these utilities.


>
> 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-calibration-tp44039.html
> Sent from the GnuRadio mailing list archive at Nabble.com.
>
> _______________________________________________
> Discuss-gnuradio mailing list
> [hidden email]
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


_______________________________________________
Discuss-gnuradio mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: iq balance calibration

Alexander B
Ahh...... ok

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

Alex
Loading...