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" <tiankun...@foxmail.com> 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
>
>
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to