discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] integral frequency shift correcting in ofdm_frame


From: Tiankun Hu
Subject: Re: [Discuss-gnuradio] integral frequency shift correcting in ofdm_frame_equalizer_vcvc_impl.cc
Date: Wed, 03 Sep 2014 21:24:03 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0

Hi Martin,
Thank you, I got it. Those code take charge correcting phase shift caused by CP.
The real IFO correcting is done when copy IN buff to OUT buff.
Seems there is a minor issue, if all carriers were occupied by data, OUT buff will lose some data, right?

            // Copy the frame and the channel state vector
            // such that the symbols are shifted to the correct position
            if (carrier_offset < 0) {
memset((void *) out, 0x00, sizeof(gr_complex) * (-carrier_offset));<===1
                memcpy(
                        (void *) &out[-carrier_offset], (void *) in,
sizeof(gr_complex) * (d_fft_len * frame_len + carrier_offset)
                      );
            } else {
memset((void *) (out + d_fft_len * frame_len - carrier_offset), <====2
                        0x00, sizeof(gr_complex) * carrier_offset);
                memcpy(
                        (void *) out, (void *) (in+carrier_offset),
sizeof(gr_complex) * (d_fft_len * frame_len - carrier_offset)
                      );
            }


在 2014年09月02日 23:37, Martin Braun 写道:
Tiankan,

this corrects the coarse freq offset propagation due to the CP.
As 'i' increments, this represents later times. So, in a sense, this is
in time direction.

M

On 09/02/2014 04:14 PM, Tiankun Hu wrote:
Hi All,
I found "ofdm_frame_equalizer_vcvc_impl.cc" use below code to correct
integral freq shift(IFO) in freq domain, but as I known, the IFO only
cause signal cyclic shifting in freq domain, why this block use gr_expj
to correcting IFO in freq domain? might be blow code should be done in
time domain.

    // Correct the frequency shift on the symbols
    gr_complex phase_correction;
    for (int i = 0; i < frame_len; i++) {
        phase_correction = gr_expj(-M_TWOPI * carrier_offset * d_cp_len /
d_fft_len * (i+1));
        for (int k = 0; k < d_fft_len; k++) {
            out[i*d_fft_len+k] *= phase_correction;
        }
    }




--
Thanks
Tiankun





reply via email to

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