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: Martin Braun
Subject: Re: [Discuss-gnuradio] integral frequency shift correcting in ofdm_frame_equalizer_vcvc_impl.cc
Date: Wed, 3 Sep 2014 17:11:10 +0200

Well, if all carriers are carrying data, then the signal parametrization is bad, so this is not really an issue. That would be like leaving out the CP and then complaining about ISI.

M

On 3 Sep 2014 15:24, "Tiankun Hu" <address@hidden> wrote:
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]