100%(1)100% fanden dieses Dokument nützlich (1 Abstimmung)

616 Ansichten21 Seiten© Attribution Non-Commercial (BY-NC)

DOC, PDF, TXT oder online auf Scribd lesen

Attribution Non-Commercial (BY-NC)

Als DOC, PDF, TXT **herunterladen** oder online auf Scribd lesen

100%(1)100% fanden dieses Dokument nützlich (1 Abstimmung)

616 Ansichten21 SeitenAttribution Non-Commercial (BY-NC)

Als DOC, PDF, TXT **herunterladen** oder online auf Scribd lesen

Sie sind auf Seite 1von 21

scheme. In this post, lets us discuss the impact of having two antennas at the receiver. For the discussion, we will assume that the channel is a flat fading Rayleigh multipath channel and the modulation is BPSK.

The principle of space time block coding with 2 transmit antenna and one receive antenna is explained in the post on Alamouti STBC. With two receive antennas the system can be modeled as shown in the figure below.

Figure: 2 Transmit 2 Receive Alamouti STBC For discussion on the channel and noise model, please refer to the post on two transmit, one receive antenna Alamouti Space Time Block Coding (STBC) scheme. The received signal in the first time slot is, . Assuming that the channel remains constant for the second time slot, the received signal is in the second time slot is,

where

are the received information at time slot 2 on receive antenna 1, 2 respectively, is the channel from , receive antenna to transmit antenna,

are the noise at time slot 2 on receive antenna 1, 2 respectively. Combining the equations at time slot 1 and 2, . Let us define .

To solve for

We know, for a general m x n matrix, the pseudo inverse is defined as, . The term,

Since this is a diagonal matrix, the inverse is just the inverse of the diagonal elements, i.e

Simulation Model

The Matlab/Octave script performs the following (a) Generate random binary sequence of +1s and -1s.

(b) Group them into pair of two symbols (c) Code it per the Alamouti Space Time code, multiply the symbols with the channel and then add white Gaussian noise. (d) Equalize the received symbols (e) Perform hard decision decoding and count the bit errors (f) Repeat for multiple values of and plot the simulation and theoretical results.

Click here to download Matlab/Octave script for computing BER for 2 transmit 2 receive Alamouti STBC for BPSK modulation in flat fading Rayleigh channel

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % All rights reserved by Krishna Pillai, http://www.dsplog.com % The file may not be re-distributed without explicit authorization % from Krishna Pillai. % Checked for proper operation with Octave Version 3.0.0 % Author : Krishna Pillai % Email : krishna@dsplog.com % Version : 1.0 % Date : 15th March 2009 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Script for computing the BER for BPSK modulation in a % Rayleigh fading channel with Alamouti Space Time Block Coding % Two transmit antenna, Two Receive antenna clear N = 10^6; % number of bits or symbols Eb_N0_dB = [0:25]; % multiple Eb/N0 values nRx = 2;

for ii = 1:length(Eb_N0_dB) % Transmitter ip = rand(1,N)>0.5; % generating 0,1 with equal probability s = 2*ip-1; % BPSK modulation 0 -> -1; 1 -> 0 % Alamouti STBC sCode = 1/sqrt(2)*kron(reshape(s,2,N/2),ones(1,2)) ; % channel h = 1/sqrt(2)*[randn(nRx,N) + j*randn(nRx,N)]; % Rayleigh channel n = 1/sqrt(2)*[randn(nRx,N) + j*randn(nRx,N)]; % white gaussian noise, 0dB variance y = zeros(nRx,N); yMod = zeros(nRx*2,N); hMod = zeros(nRx*2,N); for kk = 1:nRx hMod = kron(reshape(h(kk,:),2,N/2),ones(1,2)); % repeating the same channel for two symbols hMod = kron(reshape(h(kk,:),2,N/2),ones(1,2)); temp = hMod; hMod(1,[2:2:end]) = conj(temp(2,[2:2:end])); hMod(2,[2:2:end]) = -conj(temp(1,[2:2:end])); % Channel and noise Noise addition y(kk,:) = sum(hMod.*sCode,1) + 10^(-Eb_N0_dB(ii)/20)*n(kk,:); % Receiver yMod([2*kk-1:2*kk],:) = kron(reshape(y(kk,:),2,N/2),ones(1,2)); % forming the equalization matrix hEq([2*kk-1:2*kk],:) = hMod; hEq(2*kk-1,[1:2:end]) = conj(hEq(2*kk-1,[1:2:end])); hEq(2*kk, [2:2:end]) = conj(hEq(2*kk, [2:2:end])); end % equalization hEqPower = sum(hEq.*conj(hEq),1); yHat = sum(hEq.*yMod,1)./hEqPower; % [h1*y1 + h2y2*, h2*y1 -h1y2*, ... ] yHat(2:2:end) = conj(yHat(2:2:end)); % receiver - hard decision decoding ipHat = real(yHat)>0; % counting the errors nErr(ii) = size(find([ip- ipHat]),2); end simBer = nErr/N; % simulated ber EbN0Lin = 10.^(Eb_N0_dB/10); theoryBer_nRx1 = 0.5.*(1-1*(1+1./EbN0Lin).^(-0.5)); p = 1/2 - 1/2*(1+1./EbN0Lin).^(-1/2); theoryBerMRC_nRx2 = p.^2.*(1+2*(1-p)); pAlamouti = 1/2 - 1/2*(1+2./EbN0Lin).^(-1/2); theoryBerAlamouti_nTx2_nRx1 = pAlamouti.^2.*(1+2*(1-pAlamouti)); close all figure

semilogy(Eb_N0_dB,theoryBer_nRx1,'bp-','LineWidth',2); hold on semilogy(Eb_N0_dB,theoryBerMRC_nRx2,'kd-','LineWidth',2); semilogy(Eb_N0_dB,theoryBerAlamouti_nTx2_nRx1,'c+-','LineWidth',2); semilogy(Eb_N0_dB,simBer,'mo-','LineWidth',2); axis([0 25 10^-5 0.5]) grid on legend('theory (nTx=1,nRx=1)', 'theory (nTx=1,nRx=2, MRC)', 'theory (nTx=2, nRx=1, Alamouti)', 'sim (nTx=2, nRx=2, Alamouti)'); xlabel('Eb/No, dB'); ylabel('Bit Error Rate'); title('BER for BPSK modulation with 2Tx, 2Rx Alamouti STBC (Rayleigh channel)');

In the recent past, we have discussed three receive diversity schemes Selection combining, Equal Gain Combining and Maximal Ratio Combining. All the three approaches used the antenna array at the receiver to improve the demodulation performance, albeit with different levels of complexity. Time to move on to a transmit diversity scheme where the information is spread across multiple antennas at the transmitter. In this post, lets discuss a popular transmit diversity scheme called Alamouti Space Time Block Coding (STBC). For the discussion, we will assume that the channel is a flat fading Rayleigh multipath channel and the modulation is BPSK.

Alamouti STBC

A simple Space Time Code, suggested by Mr. Siavash M Alamouti in his landmark October 1998 paper A Simple Transmit Diversity Technique for Wireless Communication, offers a simple method for achieving spatial diversity with two transmit antennas. The scheme is as follows: 1. Consider that we have a transmission sequence, for example 2. In normal transmission, we will be sending and so on. in the first time slot, in the second time slot,

3. However, Alamouti suggested that we group the symbols into groups of two. In the first time slot, send and from the first and second antenna. In second time slot send and from the first and second antenna. In the third time slot send and from the first and second antenna.In fourth time slot, send and from the first and second antenna and so on. 4. Notice that though we are grouping two symbols, we still need two time slots to send two symbols. Hence, there is no change in the data rate. 5. This forms the simple explanation of the transmission scheme with Alamouti Space Time Block coding.

Other Assumptions

1. The channel is flat fading In simple terms, it means that the multipath channel has only one tap. So, the convolution operation reduces to a simple multiplication. For a more rigorous discussion on flat fading and frequency selective fading, may I urge you to review Chapter 15.3 Signal TimeSpreading from [DIGITAL COMMUNICATIONS: SKLAR] 2. The channel experience by each transmit antenna is independent from the channel experienced by other transmit antennas. 3. For the transmit antenna, each transmitted symbol gets multiplied by a randomly varying complex number . As the channel under consideration is a Rayleigh channel, the real and imaginary parts of are Gaussian distributed having mean and variance .

4. The channel experienced between each transmit to the receive antenna is randomly varying in time. However, the channel is assumed to remain constant over two time slots. 5. On the receive antenna, the noise has the Gaussian probability density function with

with

and

7. The channel

In the first time slot, the received signal is,

. where , is the received symbol on the first and second time slot respectively, is the channel from transmit antenna to receive antenna, is the channel from transmit antenna to receive antenna, , are the transmitted symbols and is the noise on time slots. Since the two noise terms are independent and identically distributed, . For convenience, the above equation can be represented in matrix notation as follows: .

Let us define

. To solve for

We know, for a general m x n matrix, the pseudo inverse is defined as, . The term, . Since this is a digonal matrix, the inverse is just the inverse of the diagonal elements, i.e . The estimate of the transmitted symbol is, . If you compare the above equation with the estimated symbol following equalization in Maximal Ratio Combining, you can see that the equations are identical.

Since the estimate of the transmitted symbol with the Alamouti STBC scheme is identical to that obtained from MRC, the BER with above described Alamouti scheme should be same as that for MRC. However, there is a small catch. With Alamouti STBC, we are transmitting from two antennas. Hence the total transmit power in the Alamouti scheme is twice that of that used in MRC. To make the comparison fair, we need to make the total trannsmit power from two antennas in STBC case to be equal to that of power transmitted from a single antenna in the MRC case. With this scaling, we can see that BER performance of 2Tx, 1Rx Alamouti STBC case has a roughly 3dB poorer performance that 1Tx, 2Rx MRC case. From the post on Maximal Ratio Combining, the bit error rate for BPSK modulation in Rayleigh channel with 1 transmit, 2 receive case is, , where

Key points

The fact that is a diagonal matrix ensured the following: 1. There is no cross talk between , after the equalizer. 2. The noise term is still white. .

Simulation Model

The Matlab/Octave script performs the following (a) Generate random binary sequence of +1s and -1s. (b) Group them into pair of two symbols (c) Code it per the Alamouti Space Time code, multiply the symbols with the channel and then add white Gaussian noise. (d) Equalize the received symbols

(e) Perform hard decision decoding and count the bit errors (f) Repeat for multiple values of and plot the simulation and theoretical results.

Click here to download Matlab/Octave script for simulating BER for 2 transmit, 1 receive Alamouti STBC coding for BPSK modulation in Rayleigh fading channel

Figure: BER plot for BPSK in Rayleigh channel with 2 Transmit and 1 Receive Alamouti STBC

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % All rights reserved by Krishna Pillai, http://www.dsplog.com % The file may not be re-distributed without explicit authorization % from Krishna Pillai. % Checked for proper operation with Octave Version 3.0.0 % Author : Krishna Pillai % Email : krishna@dsplog.com % Version : 1.0 % Date : 16th October 2008 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Script for computing the BER for BPSK modulation in a % Rayleigh fading channel with Alamouti Space Time Block Coding % Two transmit antenna, 1 Receive antenna clear N = 10^6; % number of bits or symbols Eb_N0_dB = [0:25]; % multiple Eb/N0 values for ii = 1:length(Eb_N0_dB) % Transmitter ip = rand(1,N)>0.5; % generating 0,1 with equal probability s = 2*ip-1; % BPSK modulation 0 -> -1; 1 -> 0 % Alamouti STBC sCode = zeros(2,N); sCode(:,1:2:end) = (1/sqrt(2))*reshape(s,2,N/2); % [x1 x2

...]

sCode(:,2:2:end) = (1/sqrt(2))*(kron(ones(1,N/2),[1;1]).*flipud(reshape(conj(s),2,N/2))); % [-x2* x1* ....] h = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)]; % Rayleigh channel hMod = kron(reshape(h,2,N/2),ones(1,2)); % repeating the same channel for two symbols n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)]; % white gaussian noise, 0dB variance % Channel and noise Noise addition y = sum(hMod.*sCode,1) + 10^(-Eb_N0_dB(ii)/20)*n; % Receiver yMod = kron(reshape(y,2,N/2),ones(1,2)); % [y1 y1 ... ; y2 y2 ...] yMod(2,:) = conj(yMod(2,:)); % [y1 y1 ... ; y2* y2*...] % forming the equalization matrix hEq = zeros(2,N); hEq(:,[1:2:end]) = reshape(h,2,N/2); % [h1 0 ... ; h2 0...] hEq(:,[2:2:end]) = kron(ones(1,N/2),[1;-1]).*flipud(reshape(h,2,N/2)); % [h1 h2 ... ; h2 -h1 ...] hEq(1,:) = conj(hEq(1,:)); % [h1* h2* ... ; h2 -h1 .... ] hEqPower = sum(hEq.*conj(hEq),1); yHat = sum(hEq.*yMod,1)./hEqPower; % [h1*y1 + h2y2*, h2*y1 -h1y2*, ... ] yHat(2:2:end) = conj(yHat(2:2:end)); % receiver - hard decision decoding ipHat = real(yHat)>0; % counting the errors nErr(ii) = size(find([ip- ipHat]),2); end simBer = nErr/N; % simulated ber EbN0Lin = 10.^(Eb_N0_dB/10); theoryBer_nRx1 = 0.5.*(1-1*(1+1./EbN0Lin).^(-0.5)); p = 1/2 - 1/2*(1+1./EbN0Lin).^(-1/2); theoryBerMRC_nRx2 = p.^2.*(1+2*(1-p)); pAlamouti = 1/2 - 1/2*(1+2./EbN0Lin).^(-1/2); theoryBerAlamouti_nTx2_nRx1 = pAlamouti.^2.*(1+2*(1-pAlamouti)); close all figure semilogy(Eb_N0_dB,theoryBer_nRx1,'bp-','LineWidth',2); hold on semilogy(Eb_N0_dB,theoryBerMRC_nRx2,'kd-','LineWidth',2); semilogy(Eb_N0_dB,theoryBerAlamouti_nTx2_nRx1,'c+-','LineWidth',2); semilogy(Eb_N0_dB,simBer,'mo-','LineWidth',2); axis([0 25 10^-5 0.5]) grid on legend('theory (nTx=1,nRx=1)', 'theory (nTx=1,nRx=2, MRC)', 'theory (nTx=2, nRx=1, Alamouti)', 'sim (nTx=2, nRx=1, Alamouti)'); xlabel('Eb/No, dB'); ylabel('Bit Error Rate'); title('BER for BPSK modulation with Alamouti STBC (Rayleigh channel)');

MIMO with MMSE equalizer In a 22 MIMO channel, probable usage of the available 2 transmit antennas can be as follows: 1. Consider that we have a transmission sequence, for example 2. In normal transmission, we will be sending and so on. in the first time slot, in the second time slot,

3. However, as we now have 2 transmit antennas, we may group the symbols into groups of two. In the first time slot, send and from the first and second antenna. In second time slot, send and from the first and second antenna, send and in the third time slot and so on. 4. Notice that as we are grouping two symbols and sending them in one time slot, we need only time slots to complete the transmission data rate is doubled ! 5. This forms the simple explanation of a probable MIMO transmission scheme with 2 transmit antennas and 2 receive antennas.

Other Assumptions

1. The channel is flat fading In simple terms, it means that the multipath channel has only one tap. So, the convolution operation reduces to a simple multiplication. For a more rigorous discussion on flat fading and frequency selective fading, may I urge you to review Chapter 15.3 Signal TimeSpreading from [DIGITAL COMMUNICATIONS: SKLAR] 2. The channel experience by each transmit antenna is independent from the channel experienced by other transmit antennas.

3. For the transmit antenna to receive antenna, each transmitted symbol gets multiplied by a randomly varying complex number . As the channel under consideration is a Rayleigh channel, the real and imaginary parts of are Gaussian distributed having mean and variance . 4. The channel experienced between each transmit to the receive antenna is independent and randomly varying in time. 5. On the receive antenna, the noise has the Gaussian probability density function with

and

Let us now try to understand the math for extracting the two symbols which interfered with each other. In the first time slot, the received signal on the first receive antenna is,

. where , are the received symbol on the first and second antenna respectively, is the channel from is the channel from is the channel from is the channel from , transmit antenna to transmit antenna to transmit antenna to transmit antenna to receive antenna, receive antenna, receive antenna, receive antenna,

are the transmitted symbols and is the noise on receive antennas. and .

We assume that the receiver knows , , and . The receiver also knows For convenience, the above equation can be represented in matrix notation as follows:

. Equivalently,

The Minimum Mean Square Error (MMSE) approach tries to find a coefficient minimizes the criterion, . Solving, .

which

When comparing to the equation in Zero Forcing equalizer, apart from the term both the equations are comparable. Infact, when the noise term is zero, the MMSE equalizer reduces to Zero Forcing equalizer. Simulation Model The Matlab/Octave script performs the following (a) Generate random binary sequence of +1s and -1s. (b) Group them into pair of two symbols and send two symbols in one time slot (c) Multiply the symbols with the channel and then add white Gaussian noise. (d) Equalize the received symbols (e) Perform hard decision decoding and count the bit errors (f) Repeat for multiple values of and plot the simulation and theoretical results.

Click here to download Matlab/Octave script for simulating BER in a 22 MIMO channel with MMSE equalization for BPSK in Rayleigh channel

Figure: BER plot for 22 MIMO with MMSE equalization for BPSK in Rayleigh channel

Summary

Compared to the Zero Forcing equalizer case, at BER point, it can be seen that the Minimum Mean Square Error (MMSE) equalizer results in around 3dB of improvement.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % All rights reserved by Krishna Pillai, http://www.dsplog.com % The file may not be re-distributed without explicit authorization % from Krishna Pillai. % Checked for proper operation with Octave Version 3.0.0 % Author : Krishna Pillai % Email : krishna@dsplog.com % Version : 1.0 % Date : 02nd Novemeber 2008 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Script for computing the BER for BPSK modulation in a % Rayleigh fading channel with 2 Tx, 2Rx MIMO channel % Minimum Mean Square Error equalization clear N = 10^6; % number of bits or symbols Eb_N0_dB = [0:25]; % multiple Eb/N0 values nTx = 2; nRx = 2; for ii = 1:length(Eb_N0_dB) % Transmitter ip = rand(1,N)>0.5; % generating 0,1 with equal probability s = 2*ip-1; % BPSK modulation 0 -> -1; 1 -> 0 sMod = kron(s,ones(nRx,1)); % sMod = reshape(sMod,[nRx,nTx,N/nTx]); % grouping in [nRx,nTx,N/NTx ] matrix

h = 1/sqrt(2)*[randn(nRx,nTx,N/nTx) + j*randn(nRx,nTx,N/nTx)]; % Rayleigh channel n = 1/sqrt(2)*[randn(nRx,N/nTx) + j*randn(nRx,N/nTx)]; % white gaussian noise, 0dB variance % Channel and noise Noise addition y = squeeze(sum(h.*sMod,2)) + 10^(-Eb_N0_dB(ii)/20)*n; % Receiver % Forming the MMSE equalization matrix W = inv(H^H*H+sigma^2*I)*H^H % H^H*H is of dimension [nTx x nTx]. In this case [2 x 2] % Inverse of a [2x2] matrix [a b; c d] = 1/(ad-bc)[d -b;-c a] hCof = zeros(2,2,N/nTx) ; hCof(1,1,:) = sum(h(:,2,:).*conj(h(:,2,:)),1) + 10^(-Eb_N0_dB(ii)/10); hCof(2,2,:) = sum(h(:,1,:).*conj(h(:,1,:)),1) + 10^(-Eb_N0_dB(ii)/10);

term term

% d % a

term

hCof(2,1,:) = -sum(h(:,2,:).*conj(h(:,1,:)),1); % c term hCof(1,2,:) = -sum(h(:,1,:).*conj(h(:,2,:)),1); % b term hDen = ((hCof(1,1,:).*hCof(2,2,:)) - (hCof(1,2,:).*hCof(2,1,:))); % ad-bc %

hDen = reshape(kron(reshape(hDen,1,N/nTx),ones(2,2)),2,2,N/nTx); formatting for division hInv = hCof./hDen; % inv(H^H*H) hMod = yMod yMod yMod yHat reshape(conj(h),nRx,N); % H^H operation

= kron(y,ones(1,2)); % formatting the received symbol for equalization = sum(hMod.*yMod,1); % H^H * y = kron(reshape(yMod,2,N/nTx),ones(1,2)); % formatting = sum(reshape(hInv,2,N).*yMod,1); % inv(H^H*H)*H^H*y

% receiver - hard decision decoding ipHat = real(yHat)>0; % counting the errors nErr(ii) = size(find([ip- ipHat]),2); end simBer = nErr/N; % simulated ber EbN0Lin = 10.^(Eb_N0_dB/10); theoryBer_nRx1 = 0.5.*(1-1*(1+1./EbN0Lin).^(-0.5)); p = 1/2 - 1/2*(1+1./EbN0Lin).^(-1/2); theoryBerMRC_nRx2 = p.^2.*(1+2*(1-p)); close all figure semilogy(Eb_N0_dB,theoryBer_nRx1,'bp-','LineWidth',2); hold on semilogy(Eb_N0_dB,theoryBerMRC_nRx2,'kd-','LineWidth',2); semilogy(Eb_N0_dB,simBer,'mo-','LineWidth',2); axis([0 25 10^-5 0.5]) grid on legend('theory (nTx=2,nRx=2, ZF)', 'theory (nTx=1,nRx=2, MRC)', 'sim (nTx=2, nRx=2, MMSE)'); xlabel('Average Eb/No,dB'); ylabel('Bit Error Rate'); title('BER for BPSK modulation with 2x2 MIMO and MMSE equalizer (Rayleigh channel)');

We had discussed three Single Input Multiple Output (SIMO also known as receive diversity) schemes Selection combining, Equal Gain Combining, Maximal Ratio Combining and a Multiple Input Single Output (MISO, also known as transmit diversity) scheme Alamouti 21 STBC. Let us now discuss the case where there a multiple transmit antennas and multiple receive antennas resulting in the formation of a Multiple Input Multiple Output (MIMO) channel. In this post, we will restrict our discussion to a 2 transmit 2 receive antenna case (resulting in a 22 MIMO channel). We will assume that the channel is a flat fading Rayleigh multipath channel and the modulation is BPSK.

22 MIMO channel

In a 22 MIMO channel, probable usage of the available 2 transmit antennas can be as follows: 1. Consider that we have a transmission sequence, for example 2. In normal transmission, we will be sending and so on. in the first time slot, in the second time slot,

3. However, as we now have 2 transmit antennas, we may group the symbols into groups of two. In the first time slot, send and from the first and second antenna. In second time slot, send and from the first and second antenna, send and in the third time slot and so on. 4. Notice that as we are grouping two symbols and sending them in one time slot, we need only time slots to complete the transmission data rate is doubled ! 5. This forms the simple explanation of a probable MIMO transmission scheme with 2 transmit antennas and 2 receive antennas. Having said this, some of you will wonder the two transmitted symbols interfered with each other. Can we ever separate the two out? The rest of the post attempts to answer this question.

Other Assumptions

1. The channel is flat fading In simple terms, it means that the multipath channel has only one tap. So, the convolution operation reduces to a simple multiplication. For a more rigorous discussion on flat fading and frequency selective fading, may I urge you to review Chapter 15.3 Signal TimeSpreading from [DIGITAL COMMUNICATIONS: SKLAR] 2. The channel experience by each transmit antenna is independent from the channel experienced by other transmit antennas. 3. For the transmit antenna to receive antenna, each transmitted symbol gets multiplied by a randomly varying complex number . As the channel under consideration is a Rayleigh channel, the real and imaginary parts of are Gaussian distributed having mean and variance . 4. The channel experienced between each transmit to the receive antenna is independent and randomly varying in time. 5. On the receive antenna, the noise has the Gaussian probability density function with

and

Let us now try to understand the math for extracting the two symbols which interfered with each other. In the first time slot, the received signal on the first receive antenna is,

. where , are the received symbol on the first and second antenna respectively, is the channel from is the channel from is the channel from transmit antenna to transmit antenna to transmit antenna to receive antenna, receive antenna, receive antenna,

transmit antenna to

receive antenna,

We assume that the receiver knows , , and . The receiver also knows and . The unknown s are and . Two equations and two unknowns. Can we solve it? Answer is YES. For convenience, the above equation can be represented in matrix notation as follows: . Equivalently,

To solve for , we know that we need to find a matrix which satisfies Forcing (ZF) linear detector for meeting this constraint is given by, . This matrix is also known as the pseudo inverse for a general m x n matrix. The term, .

. The Zero

Note that the off diagonal terms in the matrix are not zero (Recall: The off diagonal terms where zero in Alamouti 21 STBC case). Because the off diagonal terms are not zero, the zero forcing equalizer tries to null out the interfering terms when performing the equalization, i.e when solving for the interference from is tried to be nulled and vice versa. While doing so, there can be amplification of noise. Hence Zero Forcing equalizer is not the best possible equalizer to do the job. However, it is simple and reasonably easy to implement. Further, it can be seen that, following zero forcing equalization, the channel for symbol transmitted from each spatial dimension (space is antenna) is a like a 11 Rayleigh fading channel (Refer Section 3.3 of [WIRELESS-TSE, VISWANATH] ). Hence the BER for 22 MIMO channel in Rayleigh fading with Zero Forcing equalization is same as the BER derived for a 11 channel in Rayleigh fading. For BPSK modulation in Rayleigh fading channel, the bit error rate is derived as,

Simulation Model

The Matlab/Octave script performs the following (a) Generate random binary sequence of +1s and -1s. (b) Group them into pair of two symbols and send two symbols in one time slot (c) Multiply the symbols with the channel and then add white Gaussian noise. (d) Equalize the received symbols (e) Perform hard decision decoding and count the bit errors (f) Repeat for multiple values of and plot the simulation and theoretical results.

Click here to download Matlab/Octave script for simulating BER plot for 22 MIMO channel with ZF equalizer (BPSK modulation in Rayleigh channel)

Figure: BER plot for 22 MIMO channel with ZF equalizer (BPSK modulation in Rayleigh channel)

Summary

1. As expected, the simulated results with a 22 MIMO system using BPSK modulation in Rayleigh channel is showing matching results as obtained in for a 11 system for BPSK modulation in Rayleigh channel. 2. As noted in Section 3.3 of [WIRELESS-TSE, VISWANATH], the Zero Forcing equalizer is not the best possible way to equalize the received symbol. The zero forcing equalizer helps us to achieve the data rate gain, but NOT take advantage of diversity gain (as we have two receive antennas).

3. We might not be able to achieve the two fold data rate improvement in all channel conditions. It can so happen that channels are correlated (the coefficients are almost the same). Hence we might not be able to solve for the two unknown transmitted symbols even if we have two received symbols. 4. It is claimed that there can be receiver structures which enables us to have both diversity gain and data rate gain. In future posts, the attempt will be to discuss receiver structures which hopefully enables us to find out approaches which will help us to keep the data rate gain, but still move from the 11 curve to 12 MRC curve.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % All rights reserved by Krishna Pillai, http://www.dsplog.com % The file may not be re-distributed without explicit authorization % from Krishna Pillai. % Checked for proper operation with Octave Version 3.0.0 % Author : Krishna Pillai % Email : krishna@dsplog.com % Version : 1.0 % Date : 23rd October 2008 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Script for computing the BER for BPSK modulation in a % Rayleigh fading channel with 2 Tx, 2Rx MIMO channel % Zero Forcing equalization clear N = 10^6; % number of bits or symbols Eb_N0_dB = [0:25]; % multiple Eb/N0 values nTx = 2; nRx = 2; for ii = 1:length(Eb_N0_dB) % Transmitter ip = rand(1,N)>0.5; % generating 0,1 with equal probability s = 2*ip-1; % BPSK modulation 0 -> -1; 1 -> 0 sMod = kron(s,ones(nRx,1)); % sMod = reshape(sMod,[nRx,nTx,N/nTx]); % grouping in [nRx,nTx,N/NTx ] matrix h = 1/sqrt(2)*[randn(nRx,nTx,N/nTx) + j*randn(nRx,nTx,N/nTx)]; % Rayleigh channel n = 1/sqrt(2)*[randn(nRx,N/nTx) + j*randn(nRx,N/nTx)]; % white gaussian noise, 0dB variance % Channel and noise Noise addition y = squeeze(sum(h.*sMod,2)) + 10^(-Eb_N0_dB(ii)/20)*n; % Receiver % Forming the Zero Forcing equalization matrix W = inv(H^H*H)*H^H % H^H*H is of dimension [nTx x nTx]. In this case [2 x 2] % Inverse of a [2x2] matrix [a b; c d] = 1/(ad-bc)[d -b;-c a] hCof = zeros(2,2,N/nTx) ; hCof(1,1,:) = sum(h(:,2,:).*conj(h(:,2,:)),1); % d term hCof(2,2,:) = sum(h(:,1,:).*conj(h(:,1,:)),1); % a term hCof(2,1,:) = -sum(h(:,2,:).*conj(h(:,1,:)),1); % c term hCof(1,2,:) = -sum(h(:,1,:).*conj(h(:,2,:)),1); % b term hDen = ((hCof(1,1,:).*hCof(2,2,:)) - (hCof(1,2,:).*hCof(2,1,:))); % ad-bc term hDen = reshape(kron(reshape(hDen,1,N/nTx),ones(2,2)),2,2,N/nTx); formatting for division hInv = hCof./hDen; % inv(H^H*H) %

= kron(y,ones(1,2)); % formatting the received symbol for equalization = sum(hMod.*yMod,1); % H^H * y = kron(reshape(yMod,2,N/nTx),ones(1,2)); % formatting = sum(reshape(hInv,2,N).*yMod,1); % inv(H^H*H)*H^H*y

% receiver - hard decision decoding ipHat = real(yHat)>0; % counting the errors nErr(ii) = size(find([ip- ipHat]),2); end simBer = nErr/N; % simulated ber EbN0Lin = 10.^(Eb_N0_dB/10); theoryBer_nRx1 = 0.5.*(1-1*(1+1./EbN0Lin).^(-0.5)); p = 1/2 - 1/2*(1+1./EbN0Lin).^(-1/2); theoryBerMRC_nRx2 = p.^2.*(1+2*(1-p)); close all figure semilogy(Eb_N0_dB,theoryBer_nRx1,'bp-','LineWidth',2); hold on semilogy(Eb_N0_dB,theoryBerMRC_nRx2,'kd-','LineWidth',2); semilogy(Eb_N0_dB,simBer,'mo-','LineWidth',2); axis([0 25 10^-5 0.5]) grid on legend('theory (nTx=1,nRx=1)', 'theory (nTx=1,nRx=2, MRC)', 'sim (nTx=2, nRx=2, ZF)'); xlabel('Average Eb/No,dB'); ylabel('Bit Error Rate'); title('BER for BPSK modulation with 2x2 MIMO and ZF equalizer (Rayleigh channel)');