DSPRelated.com
Forums

question about OFDM with perfect channel information

Started by matrix March 23, 2006
I want to calculate the BER performance for the case of Perfect Channel
Information in OFDM. Below is the block diagram that I used:

Binary gen --> insert pilot --> zero padding ---> ifft ---> CP
insertion --> conv. with CIR ---> Remove CP ---> Add AWGN noise --> rx

The pilots will be used for channel estimation later.
My question is: From (rx), how can I get the demodulated binary data? I
used (i) FFT(deconv(rx,h)) and (ii) FFT(rx)/FFT(h) but neither is
correct.

Do I make a mistake somewhere in the block diagram?

Thank you very much!

matrix wrote:
> I want to calculate the BER performance for the case of Perfect Channel > Information in OFDM. Below is the block diagram that I used: > > Binary gen --> insert pilot --> zero padding ---> ifft ---> CP > insertion --> conv. with CIR ---> Remove CP ---> Add AWGN noise --> rx > > The pilots will be used for channel estimation later. > My question is: From (rx), how can I get the demodulated binary data? I > used (i) FFT(deconv(rx,h)) and (ii) FFT(rx)/FFT(h) but neither is > correct. >
When you say they're not correct, what do you mean? What are you actually getting? Using deconv() isn't necessarily reliable, as it can be numerically unstable. FFT(rx)./FFT(h) should work. Try it with something simple first, e.g. h[n] as a delta function (which should give FFT(h)[k] = 1 for all k), to test the priniciple. -- Oli
I mean the BER curve is not the same as reference. Even using the AWGN
channel, the BER is a line. Do you know where the errors come from?
Below is the code that I used:

% QPSK Mod
data_qpsk = my_qpsk_mod(N,1); % My own function

% TX
tx_data = ifft(data_qpsk);
tx_data_cp = [tx_data(N-Ng+1:N) tx_data]

% Noise
noise_source = randn(N,1) + j*randn(N,1) ;
n_std = 10^(-SNRdB(SNR_index)/20);
noise = n_std*noise_source/sqrt(2);

% RX
rx = tx_data_cp + noise;
rx_data = rx(Ng+1:Ng+N);
rx_data_fft = fft(rx_data);

% Demod
data_demod = my_qpsk_demod(rx_data_fft);

% Compare and calculate BER
...

matrix said the following on 24/03/2006 11:19:
> I mean the BER curve is not the same as reference. Even using the AWGN > channel, the BER is a line.
By a "line", do you mean a horizontal line, i.e. the same BER for all SNR? If you take out the channel completely, as in the modified code below, does it work?
> % QPSK Mod > data_qpsk = my_qpsk_mod(N,1); % My own function > > % TX > tx_data = ifft(data_qpsk); > rx_data_fft = fft(tx_data); > > % Demod > data_demod = my_qpsk_demod(rx_data_fft); > > % Compare and calculate BER > ... >
-- Oli
Thank you for your suggestions! I will check again, maybe there are
some mistakes in my code.
Anyway, firstly, I want to simulate OFDM in AWGN channel, and then with
Rayleigh Fading channel. Can you suggest me a paper, I would like to
compare the results?
There are lots of terms related to the channel, such as multipath
channel, fading channel...it makes me confused. Is there a paper with
simple explaination about it?

Thank you very much!

matrix wrote:
> I mean the BER curve is not the same as reference. Even using the AWGN > channel, the BER is a line. Do you know where the errors come from? > Below is the code that I used: > > % QPSK Mod > data_qpsk = my_qpsk_mod(N,1); % My own function > > % TX > tx_data = ifft(data_qpsk); > tx_data_cp = [tx_data(N-Ng+1:N) tx_data] > > % Noise > noise_source = randn(N,1) + j*randn(N,1) ; > n_std = 10^(-SNRdB(SNR_index)/20); > noise = n_std*noise_source/sqrt(2); > > % RX > rx = tx_data_cp + noise; > rx_data = rx(Ng+1:Ng+N); > rx_data_fft = fft(rx_data); > > % Demod > data_demod = my_qpsk_demod(rx_data_fft); > > % Compare and calculate BER > ...
Hi, Can you supply your functions .. i did something like this a few days back and got results that agree with the curves given in proakis' book. does you qpsk demod. gives out bits (1/0) or bpsk modulated data (-1/1). Also make sure to have a normalization factor in qpsk modulation so that the transmitted power is 1. If you provide the code, I can make a better guess at whats going wrong Regards PMD
Hi,
After all, I got the answer. I used the wrong formula to calculate the
noise variance. Since I used QPSK mapping (+1,-1,+j,-j) then the
transmit power is 1. Hence I must divide square root of 2 in the noise
variance. Anyway, thank you very much for your helps.
If I want to simulate the OFDM system with 2 transmit antenna using
Alamouti scheme, after I got the received signal then what should I do
to combiner and demodulate? Since I used the time domain simulation
(that means I didn't diagonalize the channel), then it will be a little
bit complex in the receiver.

Was reading this today. You can send a known codeword over the channel,
and estimate the channel function after the OFDM demodulator. Once you
got the channel response, use the technique in this paper to decode STC
code.

http://www.ehb.itu.edu.tr/~ozguroruc/pdf/Space-Time%20Coding%20for%20Wireless%20Communication-%20A%20survey.pdf

channel estimation is below

http://primo.ismb.it/firb/docs/icc04_final.pdf