Hi, all,

 

I have a E312 device and I just find that the tuning speed of E312 is very slow 
(\~150ms) for each tuning. Thus I would like to modify the underlying tuning 
source code in the uhd software architecture.

 

Here is what I found:

 

I first create a multi_usrp object:

uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(device_args);

 

 

then I tune the usrp by running a loop:

 

int count = 200;\
for(int a = 0; a < count; a++) {\
        uhd::tune_request_t tune_request(600e6 + a\*10e6);\
\
        usrp->set_rx_freq(tune_request, 0);\
        usrp->set_tx_freq(tune_request, 0);\
}

 

Basically, the loop tunes the frequency from 600MHz to 2.6 GHz with a step size 
of 10 MHz. The 200 tunings take 52 seconds, which is pretty slow.

 

Thus, I traced the call stack from usrp->set_rx_freq(tune_request, 0). Here is 
what I found:

1. usrp->set_rx_freq(tune_request, 0);  calls the method set_tx_frequency() in 
uhd/host/lib/usrp/dboard/e3xx/e3xx_radio_control_impl.cpp

2. then the method set_tx_frequency() in 
uhd/host/lib/usrp/dboard/e3xx/e3xx_radio_control_impl.cpp calls the tune() 
method in uhd/host/lib/usrp/dboard/e3xx/e3xx_ad9361_iface.cpp

3. then the tune() method in 
uhd/host/lib/usrp/dboard/e3xx/e3xx_ad9361_iface.cpp calls the method 
set_tx_frequency() in uhd/host/lib/rfnoc/radio_control_impl.cpp.  

 

The conclusion I have reached so far is the underlying tuning method is in  
uhd/host/lib/rfnoc/radio_control_impl.cpp:

 

double radio_control_impl::set_tx_frequency(const double freq, const size_t 
chan)\
{\
    std::lock_guard<std::mutex> l(_cache_mutex);\
    return _tx_freq\[chan\] = freq;\
}

 

Then I just got stuck here, what is the _tx_freq\[chan\] ? I just can not find 
more.

 

 

What I want to do is to modify the underlying ad9361 driver, so that when 
tuning a frequency, I can bypass the calibration in the ad9361 to speed up the 
tuning speed.

 

Can anyone point me to 1.where I can find the source code for tuning for the 
E312 with uhd 4.0 or 2. how to use mpm to get low-level access to ad9361 so 
that I can write my own tuning method for ad9361 ?

 

Thanks,

Yan
_______________________________________________
USRP-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to