1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5 out of 5)
Loading ... Loading ...
Print Print

BER for BPSK in ISI channel with Zero Forcing equalization

by Krishna Sankar on November 29, 2009

In the past, we had discussed BER for BPSK in flat fading Rayleigh channel. In this post, lets discuss a frequency selective channel with the use of Zero Forcing (ZF) equalization to compensate for the inter symbol interference (ISI). For simplifying the discussion, we will assume that there is no pulse shaping at the transmitter. The ISI channel is assumed to be a fixed 3 tap channel.

Transmit symbol

Let the transmit symbols be modeled as

, where

is the symbol period,

is the symbol to transmit,

is the transmit filter,

is the symbol index and

is the output waveform.

For simplicity, lets assume that the transmit pulse shaping filter is not present, i.e .

So the transmit symbols can be modeled by the discrete time equivalent

Figure: Transmit symbols

Channel Model

Lets us assume the channel to be a 3 tap multipath channel with spacing i.e.

3 tap multipath channel

Figure: Channel model (3 tap multipath)

In addition to the multipath channel, the received signal gets corrupted by noise , typically referred to as Additive White Gaussian Noise (AWGN). The values of the noise follows the Gaussian probability distribution function, with

mean and

variance .

The received signal is

, where

is the convolution operator.

Zero Forcing Equalization

Objective of Zero Forcing Equalization is to find a set of filter coefficients which can make .

After equalization

.

Note:

The term causes noise amplification resulting poorer bit error rate performance.

Deriving the equalization coefficients

From the post on toeplitz matrix,we know that convolution operation can be represented as matrix multiplication.

% Matlab code for using Toeplitz matrix for convolution
clear all
x = [1:3];
h = [4:6];
xM = toeplitz([x zeros(1,length(h)-1) ], [x(1) zeros(1,length(h)-1) ]);
y1 = xM*h';
y2 = conv(x,h);
diff = y1'-y2
diff = [  0   0   0   0   0 ]

Using similar matrix algebra and assuming that the coefficients has 3 taps, the equation can be equivalently represented as,

Solving for , we have

.

If we assume that has 5 taps,

Solving for , we have

.

Example

% Assuming a 3 tap channel as follows
ht = [0.2 0.9 0.3];
L = length(ht);
kk = 1;
hM = toeplitz([ht([2:end]) zeros(1,2*kk+1-L+1)], [ ht([2:-1:1]) zeros(1,2*kk+1-L+1) ]);
d  = zeros(1,2*kk+1);
d(kk+1) = 1;
c  = [inv(hM)*d.'].';

The frequency response of the channel and the equalizer are shown below:
Frequency response Zero Forcing equalizer

Figure: Frequency response of the channel and the equalizer

Simulation Model

Click here to download: Matlab/Octave script for computing BER for BPSK with 3 tap ISI channel with Zero Forcing Equalization

The attached Matlab/Octave simulation script performs the following:

(a) Generation of random binary sequence

(b) BPSK modulation i.e bit 0 represented as -1 and bit 1 represented as +1

(c) Convolving the symbols with a 3-tap fixed fading channel.

(d) Adding White Gaussian Noise

(e) Computing the equalization filter at the receiver – the equalization filter is 3, 5, 7, 9 taps in length

(f) Demodulation and conversion to bits

(g) Counting the number of bit errors

(h) Repeating for multiple values of Eb/No

The simulation results are as shown in the plot below.

Figure: BER plot for BPSK in a 3 tap ISI channel with Zero Forcing equalizer

Observations

1. Increasing the equalizer tap length from 3 to 5 showed reasonable performance improvement.

2. Diminishing returns from improving the equalizer tap length above 5.

3. The results are poorer compared to the AWGN no multipath results. This is due to the noise amplification (see the frequency response above) by the zero forcing equalization filter.

Next step is to discuss the zero forcing equalizer in the presence of transmit pulse shaping and then move on to minimum mean square error equalizer.

Related posts

  1. BER for BPSK in ISI channel with MMSE equalization
  2. MIMO with Zero Forcing Successive Interference Cancellation equalizer
  3. MIMO with Zero Forcing equalizer
  4. BER with Matched Filtering
  5. MIMO with MMSE SIC and optimal ordering

D id you like this article? Make sure that you do not miss a new article by subscribing to RSS feed OR subscribing to e-mail newsletter. Note: Subscribing via e-mail entitles you to download the free e-Book on BER of BPSK/QPSK/16QAM/16PSK in AWGN.

{ 1 trackback }

BER for BPSK in ISI channel with MMSE equalization
January 24, 2010 at 3:00 pm

{ 19 comments… read them below or add one }

1 Wig November 30, 2009 at 10:13 am

Wow~~ New topic, I like it~!

thank you so much!!

Reply

2 Communications Engineer December 1, 2009 at 8:15 pm

Fantastic work! really. Can’t wait for MMSE equalization (I think that would be next)

Krishna, would you please help me with the two questions I have with respect to your posts on OFDM and EGC. I have provided the link below

For OFDM:
http://www.dsplog.com/2008/08/26/ofdm-rayleigh-channel-ber-bpsk/#comment-15910

For EGC:
http://www.dsplog.com/2008/09/19/equal-gain-combining/#comment-16350

I’d appreciate your help

Reply

3 Krishna Sankar December 7, 2009 at 5:03 am

@communications_engineer: Thanks. Hope my reply to both the comments addressed some of your concerns. Good luck.

Reply

4 Ayhem December 3, 2009 at 1:18 am

Very nice work , AMAZING

Keep Goning

Reply

5 Krishna Sankar December 7, 2009 at 5:07 am

@Ayhem: Thanks :)

Reply

6 Puripong December 7, 2009 at 8:37 am

Hi Krishna

Thank you for very nice post

May I ask you about the basic question

From the script below
10^(-Eb_N0_dB(ii)/20)*n; % additive white gaussian noise

I know that
10log10(A_power) = A_power dB —- (1)
20log10(A_voltage) = A_voltage dB —– (2)

when we try to convert Eb_N0 into dB we use formula (1)
10log10(Eb_N0) = Eb_N0_dB

Why does the division factor equal to 20 ?

Thanks

Reply

7 Krishna Sankar December 8, 2009 at 5:24 am

@Puripong: We want to convert scale the noise voltage by a factor corresponding to Eb_N0_dB. To convert dB to voltage we have the 1/20 term (as you have pointed out in (2)). Helps?

Reply

8 Puripong December 8, 2009 at 7:45 am

You mean….
We want to convert Eb_N0_dB into noise voltage.
sqrt(voltage) = Eb_N0_dB
voltage = Eb_N0_dB^2
10log10(Eb_N0_dB^2) = 20log10(Eb_N0_dB)
So, we have the division factor equal to 20

Ohhh, Surely I missed.
Thank you very much

Reply

9 Krishna Sankar December 10, 2009 at 5:32 am

@Puripong: Glad to help

Reply

10 Sohbet December 10, 2009 at 4:16 am

Thanks A Lot For This

Reply

11 Cronaldo January 3, 2010 at 11:09 am

Thanks for your post!

When I saw some old posts, many red “X” appear where the formula or symbol should be. How can I solve it ? Is something wrong with my browser?

Reply

12 Alif January 12, 2010 at 7:21 am

hi,
In your code,
ht = [0.4 0.9 0.3];
I tried another value like ht = [0.6 0.9 0.3];
then BER increased dramatically, it doesn;t make sense
Can you tell me what’s the problem? THX

Reply

13 rajesh neelakandan January 27, 2010 at 8:08 pm

Thanks for your post!

When I saw some old posts, many red “X” appear where the formula or symbol should be. How can I solve it ? Is something wrong with my browser?

Reply

14 Krishna Sankar January 28, 2010 at 5:22 am

@rajesh: Can you please list the posts where you saw this error. This is not expected. Anyhow once you give the list, I will take a look.

Reply

15 Ananthi January 28, 2010 at 3:12 pm

It’s a useful one for me

Reply

16 j.ravindra babu February 2, 2010 at 1:20 pm

please send me multi-user detectors in ds-cdma

Reply

17 Andrew February 2, 2010 at 5:40 pm

hello, Krishna Sankar, I have a question on ZF for ISI channel.
As your example, I have ISI channel with three taps [h1 h2 h3], then the signal [S1 S2 S3 S4 S5 S6 S7 ...] passes through the channel. At the receiver, the received signal denoted by [R1 R2 R3 R4 R5 R6 R7...]. For example, I want to detect symbol R6, we can readily find that R6=h1*S6+h2*S5+h3*S4, then this signal passes through ZF equalizer with coefficients [C1 C2 C3]. Then the estimated symbol for R6 will be :
^R6=C1*R6+C2*R5+C3*R4=C1h1S6+(C1h2+C1h1)S5+(C1h3+C2h2+C3h1)S4+(C2h3+C3h2)S3+c3h3S2

Why it’s different from your derivation results. Can you tell where I’m wrong.

Reply

18 Ishwinder February 11, 2010 at 7:28 am

Hi Krishna,

Request you to please explain the below mentioned part of your code.

K=4; What is the significance of this K and why is it equal to 4?

for kk = 1:K

L = length(ht);
hM = toeplitz([ht([2:end]) zeros(1,2*kk+1-L+1)], [ ht([2:-1:1]) zeros(1,2*kk+1-L+1) ]);
d = zeros(1,2*kk+1);
d(kk+1) = 1;
c = [inv(hM)*d.'].’;

% mathched filter
yFilt = conv(y,c);
yFilt = yFilt(kk+2:end);
yFilt = conv(yFilt,ones(1,1)); % convolution
ySamp = yFilt(1:1:N); % sampling at time T

Can we not perform the above operations using just conv or filter functions in Matlab?

Please provide your comments.

Thanks
Ishwinder

Reply

19 Ahmed February 18, 2010 at 12:29 pm

Hi Krishna,
One question about the channel coeffecients. They are real number as I we find here. But in case of Rayleigh channel they are complex where both real are imaginary parts are samples from Gaussain distribution. My question is if we consider a static ISI channel with complex coeffcients, is there anything wrong with it?Since the co-efficients refer to the gain of each tap, I feel complex values are also possible where the imaginary parts refers to the phase.
Waiting for your response.
Ahmed

Reply

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Previous post: dspLog turns two! Happy Birthday!

Next post: Happy New Year 2010