Okay I just ran into this link:
If I understand that right, it’s saying that I actually don’t need to
retune the USRP, it just pumps samples into the input of the FFO Sync
hier block, then the sync_frequency_c blocks mixes in a CW signal at the
correct frequency to adjust the samples from the USRP. Yes?
-Doug
From: discuss-gnuradio-bounces+danderson=removed_email_address@domain.invalid
[discuss-gnuradio-bounces+danderson=removed_email_address@domain.invalid] on behalf
of Anderson, Douglas J. [[email protected]]
Sent: Monday, June 29, 2015 1:04 PM
To: Johannes D.; [email protected]
Subject: Re: [Discuss-gnuradio] gr-lte vs gr::digital::ofdm*
Johannes,
I really appreciate the response, I know you’re busy with your SOCIS
project.
I’m actually struggling with sync_freq_c_impl.cc, the CP-based FFO sync
block.
I’ve tried to do some reading on FFO techniques, but I’m kind of
spinning my tires.
I’ve modified the block to take a usrp_source pointer, but I’m
struggling to understand “the fancy stuff”:
(gr-lte/lib/sync_frequency_c_impl.cc at master · kit-cel/gr-lte · GitHub)
// The next line does the fancy stuff → calculate the frequency offset.
float f_off = arg(corr_val[pos]) *
float(float(d_samp_rate)/(2M_PIfloat(d_fftl) ) );
d_f_av=d_f_av - (0.01 * f_off);
//f_vec.push_back(d_f_av);
(*d_sig).set_frequency((-1)*double(d_f_av) );
So right now I have something like this:
// The next line does the fancy stuff → calculate the frequency offset.
float phase = std::arg(corr_val[pos]);
float f_off = phase * float(float(d_samp_rate)/(2M_PIfloat(d_fftl) )
);
d_f_av = d_f_av - (0.01 * f_off);
float new_tune_freq = -1 * static_cast(d_f_av);
printf(“%s tuning new frequency: %f, LO offset: %f\n”, name().c_str(),
new_tune_freq, d_lo_offset);
::uhd::tune_request_t tune_req(new_tune_freq, d_lo_offset);
d_tune_result = d_usrp->set_center_freq(tune_req);
Obviously I should be using DSP-only tuning, but right now my confusion
is in the value I’m getting for “new_tune_freq”. I’m getting lines like
this:
sync_frequency_c tuning new frequency: -289.257874, LO offset:
7680000.000000
sync_frequency_c tuning new frequency: -296.508209, LO offset:
7680000.000000
sync_frequency_c tuning new frequency: -303.749878, LO offset:
7680000.000000
Goes up by about 7 hertz (?) each time. Is this an offset from my
original tuned frequency (~751000000 Hz) or what? Just not sure how to
use this.
Any help/hints/pointers-to-required-reading much appreciated.
-Doug
From: discuss-gnuradio-bounces+danderson=removed_email_address@domain.invalid
[discuss-gnuradio-bounces+danderson=removed_email_address@domain.invalid] on behalf
of Johannes D. [[email protected]]
Sent: Thursday, June 25, 2015 9:15 AM
To: [email protected]
Subject: Re: [Discuss-gnuradio] gr-lte vs gr::digital::ofdm*
Hey Doug,
there are a few differences between gr-ofdm and gr-lte. When I started
the project, gr-ofdm wasn’t available. Later on I tried to use an API
as similar as possible to gr-ofdm. Though, gr-lte is designed for FDD
mode. That being said, it is quite a difference to gr-ofdm which is
primarily designed for bursty transmissions.
Also the LTE standard includes a few tricky parts. Those include
different CP lengths in every slot, different sync symbols which carry
further system information and dependencies between those parts. e.g.
you need to detect the correct PSS symbol first in order to be able to
do anything useful with the SSS. Also, there are always 2 different
SSS symbols depending on the position within each frame. And their
position in a frame is not right at the beginning of a frame.
If you have specific questions about parts of the flowgraph, just ask.
Cheers
Johannes