discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] iq balance calibration


From: Marcus D. Leech
Subject: Re: [Discuss-gnuradio] iq balance calibration
Date: Wed, 09 Oct 2013 09:14:07 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130805 Thunderbird/17.0.8

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
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio




reply via email to

[Prev in Thread] Current Thread [Next in Thread]