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!
question about OFDM with perfect channel information
Started by ●March 23, 2006
Reply by ●March 23, 20062006-03-23
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
Reply by ●March 24, 20062006-03-24
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 ...
Reply by ●March 24, 20062006-03-24
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
Reply by ●March 26, 20062006-03-26
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!
Reply by ●March 27, 20062006-03-27
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
Reply by ●March 29, 20062006-03-29
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.
Reply by ●March 29, 20062006-03-29
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