半个苹果's Blog

Happy coding

MIMO with ZF SIC and optimal ordering

半个苹果 posted @ 2010年11月15日 19:49 in MIMO仿真 with tags MIMO ZF-SIC , 1564 阅读

MIMO with ZF SIC and optimal ordering

by Krishna Sankar on November 29, 2008

In previous posts, we had discussed equalization of a 2×2 MIMO channel with Zero Forcing (ZF) equalization and later, Zero Forcing equalization with successive interference cancellation (ZF-SIC). In this post, we will explore a variant of ZF-SIC called Zero Forcing Successive Interference Cancellation with optimal ordering. We will assume that the channel is a flat fading Rayleigh multipath channel and the modulation is BPSK.

 

Brief description of 2×2 MIMO transmission, assumptions on channel model and the noise are detailed in the post on Zero Forcing equalization with successive interference cancellation

Zero forcing equalizer for 2×2 MIMO channel

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,

.

The received signal on the second receive antenna is,

.

where

, are the received symbol on the first and second antenna respectively,

is the channel from transmit antenna to receive antenna,

is the channel from transmit antenna to receive antenna,

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 receive antennas.

For convenience, the above equation can be represented in matrix notation as follows:

.

Equivalently,

To solve for , The Zero Forcing (ZF) linear detector for meeting this constraint . is given by,

.

Using the Zero Forcing (ZF) equalization, the receiver can obtain an estimate of the two transmitted symbols , , i.e.

.

Successive Interference Cancellation with optimal ordering

In classical Successive Interference Cancellation, the receiver arbitrarily takes one of the estimated symbols, and subtract its effect from the received symbol and . However, we can have more intelligence in choosing whether we should subtract the effect of first or first. To make that decision, let us find out the transmit symbol (after multiplication with the channel) which came at higher power at the receiver. The received power at the both the antennas corresponding to the transmitted symbol is,

.

The received power at the both the antennas corresponding to the transmitted symbol is,

.

If then the receiver decides to remove the effect of from the received vector and and then re-estimate .

.

Expressing in matrix notation,

,

Optimal way of combining the information from multiple copies of the received symbols in receive diversity case is to apply Maximal Ratio Combining (MRC). The equalized symbol is,

.

Else if the receiver decides to subtract effect of from the received vector and , and then re-estimate

.

Expressing in matrix notation,

,

Optimal way of combining the information from multiple copies of the received symbols in receive diversity case is to apply Maximal Ratio Combining (MRC). The equalized symbol is,

.

Doing successive interference cancellation with optimal ordering ensures that the reliability of the symbol which is decoded first is guaranteed to have a lower error probability than the other symbol. This results in lowering the chances of incorrect decisions resulting in erroneous interference cancellation. Hence gives lower error rate than simple successive interference cancellation. :)

Simulation Model

The Matlab/Octave script performs the following

(a) Generate random binary sequence of +1’s and -1’s.

(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 with Zero Forcing criterion

(e) Find the power of received symbol from both the spatial dimensions.

(f) Take the symbol having higher power, subtract from the received symbol

(f) Perform Maximal Ratio Combining for equalizing the new received symbol

(g) Perform hard decision decoding and count the bit errors

(h) Repeat for multiple values of and plot the simulation and theoretical results.

Click here to download Matlab/Octave script for computing BER for 2×2 MIMO channel equalized by ZF-SIC with optimal ordering

2x2 MIMO equalized by ZF-SIC with optimal ordering

Figure: BER plot for BPSK in 2×2 MIMO equalized by ZF-SIC with optimal ordering

Observations

Compared to Zero Forcing equalization with successive interference cancellation case, addition of optimal ordering results in around 2.0dB of improvement for BER of .

References

[DIG-COMM-BARRY-LEE-MESSERSCHMITT] Digital Communication: Third Edition, by John R. Barry, Edward A. Lee, David G. Messerschmitt

 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 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          : 09 Novemeber 2008
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Script for computing the BER for BPSK modulation in a
% Rayleigh fading channel with 2 Tx, 2Rx MIMO channel 
% Zero Forcing Equalization with Successive Interference 
% Cancellation (ZF-SIC) with optimal ordering

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 ZF 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
    

    % Sorting the equalization matrix based on the channel power on each dimension
    % since the second spatial dimension is equalized first, the channel
    % with higher power assigned to second dimension
    normSS1 = squeeze(hCof(2,2,:));
    normSS2 = squeeze(hCof(1,1,:));
    sortIdx = find(normSS2 < normSS1);
   
    % sorting the H^H*H matrix 
    hCofSort = hCof;
    hCofSort(2,2,sortIdx) = hCof(1,1,sortIdx);
    hCofSort(1,1,sortIdx) = hCof(2,2,sortIdx);
    hCofSort(1,2,sortIdx) = hCof(2,1,sortIdx);
    hCofSort(2,1,sortIdx) = hCof(1,2,sortIdx);
    hDen = ((hCofSort(1,1,:).*hCofSort(2,2,:)) - (hCofSort(1,2,:).*hCofSort(2,1,:))); % ad-bc term
    hDen = reshape(kron(reshape(hDen,1,N/nTx),ones(2,2)),2,2,N/nTx);  % formatting for division
    hInvSort = hCofSort./hDen; % inv(H^H*H)

    % sorting the H matrix
    hSort = h;
    hSort(:,2,sortIdx) = h(:,1,sortIdx);
    hSort(:,1,sortIdx) = h(:,2,sortIdx);

    % Equalization - Zero forcing
    hModSort =  reshape(conj(hSort),nRx,N); % H^H operation
    
    yModSort = kron(y,ones(1,2)); % formatting the received symbol for equalization
    yModSort = sum(hModSort.*yModSort,1); % H^H * y 
    yModSort =  kron(reshape(yModSort,2,N/nTx),ones(1,2)); % formatting
    yHatSort = sum(reshape(hInvSort,2,N).*yModSort,1); % inv(H^H*H)*H^H*y

    % receiver - hard decision decoding on second spatial dimension
    ipHat2SS = real(yHatSort(2:2:end))>0;
    ipHatMod2SS = 2*ipHat2SS-1;
    ipHatMod2SS = kron(ipHatMod2SS,ones(nRx,1));
    ipHatMod2SS = reshape(ipHatMod2SS,[nRx,1,N/nTx]);

    % new received symbol - removing the effect from second spatial dimension
    h2SS = hSort(:,2,:); % channel in the second spatial dimension
    r = y - squeeze(h2SS.*ipHatMod2SS);

    % maximal ratio combining - for symbol in the first spatial dimension
    h1SS = squeeze(hSort(:,1,:));
    yHat1SS = sum(conj(h1SS).*r,1)./sum(h1SS.*conj(h1SS),1);
    yHatSort(1:2:end) = yHat1SS;
  
    yHatSort = reshape(yHatSort,2,N/2) ;
    yHatSort(:,sortIdx) = flipud(yHatSort(:,sortIdx));
    yHat = reshape(yHatSort,1,N);

    % 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, ZF-SIC-Sort)');
xlabel('Average Eb/No,dB');
ylabel('Bit Error Rate');
title('BER for BPSK modulation with 2x2 MIMO and ZF-SIC-Sorted equalizer (Rayleigh channel)');


Avatar_small
Ruby Melocco 说:
2019年6月03日 18:54

The MIMO is the optimal platform of the making obvious status by the huge grant and the updating the file offer. The MIMO blog is for edusson.com reviews for offering the zero system review by making the files of their own choice.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter