Hi Aditya,
 Thanks your time!
 But how to use pilotes symbol's channel state to update data symbol's?
 "ofdm_equalizer_simpledfe" is so simple, so it didn't  realize that, right?
 Is there any example or paper can be for reference?
   
 Thanks 
 Tiankun

 

 ------------------ 原始邮件 ------------------
  发件人: "Aditya Dhananjay";<adi...@cs.nyu.edu>;
 发送时间: 2014年9月4日(星期四) 晚上11:45
 收件人: "Tiankun Hu"<tiankun...@foxmail.com>; 
 抄送: "discuss-gnuradio@gnu.org"<discuss-gnuradio@gnu.org>; 
 主题: Re: [Discuss-gnuradio] references using in ofdm_equalizer_simpledfe

 

  

 

 On Thu, Sep 4, 2014 at 11:29 AM, Tiankun Hu <tiankun...@foxmail.com> wrote:
 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();
                    }
                } 

 

 ​Hello Tiankun,
 

 That's a good question. The answer depends on how you want to implement DFE -- 
and there are a couple of options.
 

 a) Ignore pilots altogether. This is what I had described in my earlier email.
 

 b) Since pilots are known symbols, if a pilot is encountered, the new channel 
estimate will always be correct. We know the received symbol r_i and the 
expected symbol E_i, so it is trivial to calculate the channel estimate H_i. 
However if you ignore the pilots, then Doppler or residual CFO can make the 
decoding on a non-pilot symbol incorrect, leading to an incorrect estimate of 
H_i propagating to all subsequent symbol indices on that subcarrier 'i'.
 

 Hope that helps.
 

 Best,
 Aditya
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to