Hi Tiankun,
To add on to what Martin said: In DFE, the channel state H_I on
subcarrier i is updated everytime it receives a new symbol on that
subcarrier. It doesn't really care of that symbol is a pilot or a data
symbol. If it is a pilot, the channel estimate H_i is trivially
calculated and updated. If it is a data symbol, then the nearest
constellation point is found, and is then used to update H_i.
And as Martin mentioned, the pilot placement pattern in the packet is
important to note. If I remember correctly, the reference implementation
uses the "comb" type pilot patter. Look at Figure 1(b) in the link
below. In the "comb" pilot pattern, the pilots are useless, as the
subcarriers that contain the pilot symbols do not carry data symbols.
You will need to use the "block" pilot pattern (look at Figure 1(a)
below, and you will immediately see how DFE is applicable in this case.
http://scialert.net/fulltext/?doi=itj.2011.914.926&org=11
Of course, there are other types of pilot patterns, but you can ignore
them for now. Good luck!
best,
aditya
On Fri, Sep 5, 2014 at 12:15 PM, Martin Braun <address@hidden
<mailto:address@hidden>> wrote:
It uses them. It will reset the channel state estimate every time it
encounters a pilot symbol. See eg the qa codes for examples. If you
want to make use of them in your modem, you need to put pilots on
the same carriers as the data.
M
On 5 Sep 2014 11:01, "Tiankun Hu" <address@hidden
<mailto:address@hidden>> wrote:
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";<address@hidden
<mailto:address@hidden>>;
*发送时间:* 2014年9月4日(星期四) 晚上11:45
*收件人:* "Tiankun Hu"<address@hidden
<mailto:address@hidden>>; __
*抄送:* "address@hidden
<mailto:address@hidden>"<address@hidden
<mailto:address@hidden>>; __
*主题:* Re: [Discuss-gnuradio] references using in
ofdm_equalizer_simpledfe
On Thu, Sep 4, 2014 at 11:29 AM, Tiankun Hu
<address@hidden <mailto:address@hidden>> 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
address@hidden <mailto:address@hidden>
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio