discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] references using in ofdm_equalizer_simpledfe


From: Tiankun Hu
Subject: Re: [Discuss-gnuradio] references using in ofdm_equalizer_simpledfe
Date: Thu, 04 Sep 2014 23:29:03 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0

Hi Aditya,
What's use of pilot symbols in "ofdm_equalizer_simpledfe" ?
I just found pilot symbols update their carrier's channel state, but didn't find what's the use of these pilot channel state, seems them has no relate with data symbol, data symbol also only use themselves to update channel state.


                for (int i = 0; i < n_sym; i++) {
                    for (int k = 0; k < d_fft_len; k++) {
                        if (!d_occupied_carriers[k]) {
                            continue;
                        }
if (!d_pilot_carriers.empty() && d_pilot_carriers[d_pilot_carr_set][k]) { ======> //didn't find any use of these channel state in pilot carriers <=========
                           //seems has not relate with data symbol
                            d_channel_state[k] = d_alpha * d_channel_state[k]
                                    + (1-d_alpha) * frame[i*d_fft_len + k]
                                    / d_pilot_symbols[d_pilot_carr_set][k];
frame[i*d_fft_len+k] = d_pilot_symbols[d_pilot_carr_set][k];
                        } else {
sym_eq = frame[i*d_fft_len+k] / d_channel_state[k];
                            d_constellation->
                                 map_to_points(d_constellation->
                                        decision_maker(&sym_eq),  &sym_est);
d_channel_state[k] = d_alpha * d_channel_state[k] + (1-d_alpha) * frame[i*d_fft_len + k] / sym_est;
                            frame[i*d_fft_len+k] = sym_est;
                        }
                    }
                    if (!d_pilot_carriers.empty()) {
d_pilot_carr_set = (d_pilot_carr_set + 1) % d_pilot_carriers.size();
                    }
                }


在 2014年09月04日 22:59, Tiankun Hu 写道:
Aditya, thanks your clarify !

在 2014年09月04日 21:31, Aditya Dhananjay 写道:



On Thu, Sep 4, 2014 at 9:04 AM, Tiankun Hu <address@hidden
<mailto:address@hidden>> wrote:

    Hi Martin,
    Could you tell me the reference paper that you used in
    ofdm_equalizer_simpledfe?


​Hello Tiankun,

A decision feedback equalizer (DFE) works like this:

The equalizer keeps track of the channel estimate on every subcarrier​
i. Call this estimate H_i. The initial values of H_i are provided by the
Schmidl-Cox block, and these values are calculated from the SYNC symbols
present in every packet.

Now, when a symbol r_i is received on subcarrier i, it is equalized
using the estimate H_i. The equalized symbol is matched to the nearest
constellation point. Let this symbol be R_i. Now, the new estimate of
H_i is calculated from r_i and R_i. This new value of H_i is then used
for the next symbol on subcarrier i.

DFE works well when the channel changes slowly across time. However, if
there is substantial residual CFO (carrier frequency offset) or Doppler,
then errors are possible. Substantial channel variations across
subcarrier indices is irrelevant, because DFE maintains an independent
channel estimate H_i for each subcarrier i.

Good luck with GNU Radio. :)

Best,
Aditya



_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio





--
Thanks
Tiankun





reply via email to

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