Sunteți pe pagina 1din 11

Introduccin a los sistemas MIMO

Prubalo en MATLAB
Este ejemplo muestra sistemas MIMO (Multiple-Input-Multiple-Output), que utilizan
mltiples antenas en los extremos de transmisor y receptor de un sistema de
comunicacin inalmbrico. Los sistemas MIMO se estn adoptando cada vez ms en los
sistemas de comunicacin para las ganancias potenciales en capacidad que realizan al
usar antenas mltiples. Las antenas mltiples utilizan la dimensin espacial adems de
las de tiempo y frecuencia, sin cambiar los requisitos de ancho de banda del sistema.
Para un enlace de comunicaciones genrico, este ejemplo se centra en la diversidad de
transmisin en lugar de la diversidad de recepcin tradicional. Usando el canal de
Rayleigh de desvanecimiento plano, ilustra el concepto de Codificacin de Bloque de
Espacio Espacial Ortogonal, que es empleable cuando se utilizan mltiples antenas de
transmisor. Se supone aqu que el canal sufre un desvanecimiento independiente entre
los mltiples pares de antenas de transmisin-recepcin.
Para un sistema elegido, tambin proporciona una medida de la degradacin del
rendimiento cuando el canal est imperfectamente estimado en el receptor, en
comparacin con el caso de conocimiento de canal perfecto en el receptor.
PARTE 1: Transmitir Diversidad vs. Recibir Diversidad
El uso de la recepcin de diversidad es una tcnica bien conocida para mitigar los
efectos del desvanecimiento sobre un enlace de comunicaciones. Sin embargo, ha sido
relegado al final del receptor. En [ 1 ], Alamouti propone un esquema de diversidad de
transmisin que ofrece ganancias de diversidad similares, utilizando mltiples antenas
en el transmisor. Esto fue concebido para ser ms prctico, ya que, por ejemplo, solo
requerira mltiples antenas en la estacin base en comparacin con mltiples antenas
para cada mvil en un sistema de comunicaciones celulares.
Esta seccin resalta esta comparacin de la transmisin contra la diversidad de
recepcin mediante la simulacin de la modulacin de cambio de fase binaria coherente
(BPSK) sobre canales de Rayleigh de desvanecimiento plano. Para la diversidad de
transmisin, utilizamos dos antenas de transmisin y una antena de recepcin (2x1
notacin), mientras que para la diversidad de recepcin empleamos una antena de
transmisin y dos antenas de recepcin (1x2 notationally).
La simulacin cubre un sistema extremo a extremo que muestra la seal codificada y / o
transmitida, el modelo de canal y la recepcin y demodulacin de la seal
recibida. Tambin proporciona el enlace de no-diversidad (caso de antena de
transmisin-recepcin nica) y el rendimiento terico del enlace de diversidad de
segundo orden para la comparacin. Se supone aqu que el canal se conoce
perfectamente en el receptor para todos los sistemas. Ejecutamos la simulacin sobre
una serie de puntos Eb / No para generar resultados de BER que nos permitan comparar
los diferentes sistemas.
Comenzamos por definir algunos parmetros de simulacin comunes
frmLen = 100; % longitud del marco
numPackets = 1000; % nmero de paquetes
EbNo = 0: 2: 20; % Eb / No variando hasta 20 dB
N = 2; % nmero mximo de antenas Tx
M = 2; % nmero mximo de antenas Rx
y configurar la simulacin.
% Crear comm.BPSKModulator y comm.BPSKDemodulator Objetos del sistema
P = 2; Orden de modulacin%
bpskMod = comm.BPSKModulator;
bpskDemod = comm.BPSKDemodulator ( 'OutputDataType' , 'double' );

% Crear objetos comm.OSTBCEncoder y comm.OSTBCCombiner System


ostbcEnc = comm.OSTBCEncoder;
ostbcComb = comm.OSTBCCombiner;

% Crear dos comm.AWGNChannel Los objetos del sistema para uno y dos reciben
% de antenas, respectivamente. Ajuste la propiedad NoiseMethod del canal a
% 'Relacin de seal a ruido (Eb / No)' para especificar el nivel de ruido
usando la
relacin de densidad espectral de energa de% por bit a ruido (Eb / No). El
% de
salida del modulador BPSK genera seales de potencia unitarias; establezca la
propiedad% SignalPower a 1 vatio.
awgn1Rx = comm.AWGNChannel ( 'NoiseMethod' , 'Relacin seal / ruido (Eb /
No)' , ...
'SignalPower' , 1);
awgn2Rx = clon (awgn1Rx);

% Crear objetos de sistema de la calculadora comm.ErrorRate para evaluar BER.


errorCalc1 = comm.ErrorRate;
errorCalc2 = comm.ErrorRate;
errorCalc3 = comm.ErrorRate;

% Puesto que los objetos del sistema comm.AWGNChannel as como la funcin


RANDI
% utilizan la secuencia aleatoria predeterminada, los siguientes comandos se
ejecutan de tal manera
que los resultados sern repetibles, es decir, se obtendrn los mismos
resultados
% para cada ejecucin del ejemplo. El flujo predeterminado se restaurar en
el
extremo% del ejemplo.
s = RandStream.create ( 'mt19937ar' , 'semilla' , 55408);
prevStream = RandStream.setGlobalStream (s);

% Pre-asignar variables para velocidad


H = ceros (frmLen, N, M);
ber_noDiver = ceros (3, longitud (EbNo));
ber_Alamouti = ceros (3, longitud (EbNo));
ber_MaxRatio = ceros (3, longitud (EbNo));
ber_thy2 = ceros (1, longitud (EbNo));
% Establecer una cifra para visualizar los resultados del BER
fig = figura;
rejilla en ;
mantener en ;
ax = fig.CurrentAxes;
ax.YScale = 'log' ;
xlim ([EbNo (1), EbNo (fin)]);
ylim ([1e - 4 1]);
xlabel ( Eb / No (dB) );
ilabel ( "BER" );
fig.NumberTitle = 'off' ;
fig.Renderer = 'zbuffer' ;
fig.Name = 'Transmitir vs. Recibir Diversidad' ;
ttulo ( 'Transmitir vs. Recibir Diversidad' );
set (fig, 'DefaultLegendAutoUpdate' , 'off' );

% Loop sobre varios puntos EbNo


para idx = 1: length (EbNo)
reset (errorCalc1);
reset (errorCalc2);
reset (errorCalc3);
% Establezca la propiedad EbNo de los objetos AWGNChannel System
awgn1Rx.EbNo = EbNo (idx);
awgn2Rx.EbNo = EbNo (idx);
% Loop sobre el nmero de paquetes
para packetIdx = 1: numPackets
% Generar vector de datos por trama
datos = randi ([0P-1], frmLen, 1);

% Modular datos
modData = bpskMod (datos);

% Alamouti Encoder de Bloque Espacio-Tiempo


encData = ostbcEnc (modData);

% Crear la matriz de respuesta de canal distribuido de Rayleigh


% para dos antenas de transmisin y dos antenas de recepcin
H (1: N: end,:, :) = (randn (frmLen / 2, N, M) + ...
1i * randn (frmLen / 2, N, M)) / sqrt (2);
% se mantiene constante durante 2 perodos de smbolo
H (2: N: fin,:, :) = H (1: N: fin,:, :);

% Extraer parte de H para representar los canales 1x1, 2x1 y 1x2


H _ {11} = H (1,1);
H ^ {21} = H (:,:, 1) / sqrt (2);
H _ {12} = apretn (H (:, 1, :));

% Pasar a travs de los canales


chanOut11 = H11. * modData;
chanOut21 = suma (H21. * encData, 2);
chanOut12 = H12. * repmat (modData, 1, 2);

% Aadir AWGN
rxSig11 = awgn1Rx (chanOut11);
rxSig21 = awgn1Rx (chanOut21);
rxSig12 = awgn2Rx (chanOut12);

% Alamouti Space-Time Block Combiner


decData = ostbcComb (rxSig21, H21);

% ML Detector (distancia euclidiana mnima)


demod11 = bpskDemod (rxSig11. * conj (H11));
demod21 = bpskDemod (decData);
demod12 = bpskDemod (suma (rxSig12. * conj (H12), 2));

% Calcular y actualizar el BER para el valor EbNo actual


% para el sistema 1x1 no codificado
ber_noDiver (:, idx) = errorCalc1 (datos, demod11);
% para el sistema Alamouti codificado 2x1
ber_Alamouti (:, idx) = errorCalc2 (datos, demod21);
% para el sistema 1x2 combinado de relacin mxima
ber_MaxRatio (:, idx) = errorCalc3 (datos, demod12);

end % end del bucle FOR para numPackets

% Calcular la diversidad terica de segundo orden BER para la corriente


EbNo
ber_thy2 (idx) = berfading (EbNo (idx), 'psk' , 2, 2);

% Resultados Plot
semilogy (EbNo (1: IDX), ber_noDiver (1,1: IDX), 'r *' , ...
EbNo (1: IDX), ber_Alamouti (1,1: IDX), 'ir' , . ..
EbNo (1: idx), ber_MaxRatio (1,1: idx), 'bs' , ...
EbNo (1: idx), ber_thy2 (1: idx), 'm' );
leyenda ( 'No Diversity (1Tx, 1Rx)' , 'Alamouti (2Tx, 1Rx)' , ...
'Combinacin de Relacin Mxima (1Tx, 2Rx)' , ...
'Diversidad Terica de Segundo Orden' );

dibujado
end % end de for loop para EbNo

% Realice el ajuste de la curva y replantee los resultados


fitBER11 = berfit (EbNo, ber_noDiver (1, :));
fitBER21 = berfit (EbNo, ber_Alamouti (1, :));
fitBER12 = berfit (EbNo, ber_MaxRatio (1, :));
semiloga (EbNo, fitBER11, 'r' , EbNo, fitBER21, 'g' , EbNo, fitBER12, 'b' );
mantener fuera ;

% Restaurar flujo predeterminado


RandStream.setGlobalStream (prevStream);

El sistema de diversidad de transmisin tiene una complejidad de clculo muy similar a


la del sistema de diversidad de recepcin.
Los resultados de simulacin resultantes muestran que el uso de dos antenas de
transmisin y una antena de recepcin proporciona el mismo orden de diversidad que el
sistema combinado de mxima relacin (MRC) de una antena de transmisin y dos
antenas de recepcin.
Observe tambin que la diversidad de transmisin tiene una desventaja de 3 dB en
comparacin con la diversidad de recepcin del MRC. Esto se debe a que modelamos la
potencia total transmitida para que sea la misma en ambos casos. Si calibramos la
potencia transmitida de tal manera que la potencia recibida para estos dos casos sea la
misma, entonces el rendimiento sera idntico. El rendimiento terico del enlace de
diversidad de segundo orden coincide con el sistema de diversidad de transmisin, ya
que normaliza la potencia total en todas las ramas de diversidad.
Los guiones funcionales adjuntos, MRC1M.m y OSTBC2M.m, ayudan a explorar ms a
los usuarios interesados.
PARTE 2: Codificacin de bloques espacio-tiempo con estimacin de canales
Basndose en la teora de los diseos ortogonales, Tarokh et al. [ 2 ] generaliz el
esquema de diversidad de transmisin de Alamouti a un nmero arbitrario de antenas
transmisoras, llevando al concepto de Cdigos de Bloque Espacio-Tiempo. Para
complejas constelaciones de seales, mostraron que el esquema de Alamouti es el nico
esquema de tasa completa para dos antenas de transmisin.
En esta seccin, se estudia el rendimiento de dicho esquema con dos antenas de
recepcin (es decir, un sistema 2x2) con y sin estimacin de canal. En el escenario
realista en el que la informacin de estado del canal no se conoce en el receptor, esto
tiene que ser extrado de la seal recibida. Suponemos que el estimador de canal realiza
esto utilizando seales piloto ortogonales que se aaden a cada paquete [ 3 ]. Se supone
que el canal permanece inalterado para la longitud del paquete (es decir, sufre una
decoloracin lenta).
Aqu se emplea una simulacin similar a la descrita en la seccin anterior, lo que nos
lleva a estimar el rendimiento de BER para un sistema codificado en bloques espacio-
tiempo utilizando dos antenas de transmisin y dos antenas de recepcin.
Nuevamente comenzamos definiendo los parmetros de simulacin comunes
frmLen = 100; % longitud del cuadro
maxNumErrs = 300; % nmero mximo de errores
maxNumPackets = 3000; % nmero mximo de paquetes
EbNo = 0: 2: 12; % Eb / No variando a 12 dB
N = 2; % nmero de antenas Tx
M = 2; % nmero de antenas Rx
pLen = 8; % nmero de smbolos piloto por cuadro
W = hadamard (pLen);
pilotos = W (:, 1: N); % conjunto ortogonal por antena de transmisin

y configurar la simulacin.
% Crear un objeto Sistema comm.MIMOChannel para simular el 2x2 espacialmente
% independiente canal de desvanecimiento de Rayleigh plana
chan = comm.MIMOChannel ( 'MaximumDopplerShift' , 0, ...
'SpatialCorrelation' , falso, ...
'NumTransmitAntennas' , N, ...
'NumReceiveAntennas' , M, ...
'PathGainsOutputPort' , verdadero);
% Cambie el valor de la propiedad NumReceiveAntennas del
objeto de sistema hAlamoutiDec % a M que es 2
liberacin (ostbcComb);
ostbcComb.NumReceiveAntennas = M;

% Libere el objeto System hAWGN2Rx


liberacin (awgn2Rx);

% Establece el flujo aleatorio global para la repetibilidad


s = RandStream.create ( 'mt19937ar' , 'seed' , 55408);
prevStream = RandStream.setGlobalStream (s);

% Pre-asignar variables para velocidad


HEst = ceros (frmLen, N, M);
ber_Estimate = ceros (3, longitud (EbNo));
ber_Known = ceros (3, longitud (EbNo));
% Establecer una cifra para visualizar los resultados del BER
clf (fig.);
rejilla en ;
mantener en ;
ax = fig.CurrentAxes;
ax.YScale = 'log' ;
xlim ([EbNo (1), EbNo (fin)]);
ylim ([1e - 4 1]);
xlabel ( Eb / No (dB) );
ilabel ( "BER" );
fig.NumberTitle = 'off' ;
fig.Name = 'Codificacin de bloques espacio-tiempo ortogonales' ;
fig.Renderer = 'zbuffer' ;
ttulo ( Sistema 2x2 codificado por Alamouti );

% Loop sobre varios puntos EbNo


para idx = 1: length (EbNo)
reset (errorCalc1);
reset (errorCalc2);
awgn2Rx.EbNo = EbNo (idx);

% Loop hasta que el nmero de errores exceda de 'maxNumErrs'


% o el nmero mximo de paquetes se han simulado
while (ber_Estimate (2, idx) <maxNumErrs) && ...
(ber_Known (2, idx) <maxNumErrs) && ...
(ber_Estimate (3, idx) / frmLen <maxNumPackets)
% Generar vector de datos por fotograma
datos = randi ([0P-1], frmLen, 1);

% Modular datos
modData = bpskMod (datos);

% Alamouti Encoder de Bloque Espacio-Tiempo


encData = ostbcEnc (modData);

% Prepuntar smbolos piloto para cada trama


txSig = [pilotos; encData];

% Pasar por el canal 2x2


reset (chan);
[chanOut, H] = chan (txSig);

% Aadir AWGN
rxSig = awgn2Rx (chanOut);

% Estimacin del canal


% Para cada enlace => N * M estimaciones
HEst (1,:, :) = pilotos (:, :). ' * rxSig (1: pLen, :) / pLen;
% asumen mantenido constante para todo el cuadro
HEst = HEst (unos (frmLen, 1),:, :);

% Combinador usando el canal estimado


decDataEst = ostbcComb (rxSig (pLen + 1: end, :), HEst);

% Combiner usando el canal conocido


decDataKnown = ostbcComb (rxSig (pLen + 1: end, :), ...
squeeze (H (pLen + 1: end,:,:, :)));

% ML Detector (distancia euclidiana mnima)


demodEst = bpskDemod (decDataEst); % estimado
demodKnown = bpskDemod (decDataKnown); % conocido

% Calcular y actualizar el BER para el valor EbNo actual


% para el canal estimado
ber_Estimate (:, idx) = errorCalc1 (datos, demodEst);
% para el canal conocido
ber_Known (:, idx) = errorCalc2 (datos, demodKnown);

end % end del bucle FOR para numPackets

% Resultados del
trazado semiloga (EbNo (1: idx), ber_Estimate (1,1: idx), 'ro' );
semiloga (EbNo (1: idx), ber_Known (1,1: idx), 'g *' );
leyenda ([ 'Canal estimado con' num2str (pLen) 'smbolos piloto / marco'
], ...
'Canal conocido' );
dibujado
end % end de for loop para EbNo

% Realice el ajuste de la curva y replantee los resultados


fitBEREst = berfit (EbNo, ber_Estimate (1, :));
fitBERKnown = berfit (EbNo, ber_Known (1, :));
semiloga (EbNo, fitBEREst, 'r' , EbNo, fitBERK conocido, 'g' );
mantener fuera ;

% Restaurar flujo predeterminado


RandStream.setGlobalStream (prevStream);
Para el sistema simulado 2x2, el orden de diversidad es diferente al observado para
sistemas 1x2 o 2x1 en la seccin anterior.
Tenga en cuenta que con 8 smbolos piloto para cada 100 smbolos de datos, la
estimacin de canal causa aproximadamente una degradacin de 1 dB en el rendimiento
para el rango Eb / No seleccionado. Esto mejora con un aumento en el nmero de
smbolos piloto por cuadro, pero se agrega a la sobrecarga del enlace. En esta
comparacin, mantenemos el SNR transmitido por smbolo para ser el mismo en ambos
casos.
El guin funcional adjunto, OSTBC2M_E.m ayuda a la experimentacin adicional para
los usuarios interesados.
PARTE 3: Codificacin de bloques espacio-tiempo ortogonales y
exploraciones posteriores
En esta seccin final, presentamos algunos resultados de rendimiento para la
codificacin del bloque espacio-tiempo ortogonal usando cuatro antenas de transmisin
(sistema 4x1) usando un cdigo de media velocidad, G4, segn [ 4 ].
Esperamos que el sistema ofrezca un orden de diversidad de 4 y lo comparar con
sistemas 1x4 y 2x2, que tienen el mismo orden de diversidad. Para permitir una
comparacin equitativa, usamos PSK cuaternario con el cdigo G4 de velocidad media
para lograr la misma velocidad de transmisin de 1 bit / seg / Hz.
Estos resultados llevan algn tiempo para generar en un solo ncleo. Si no tiene
instalado Parallel Computing Toolbox (PCT), cargamos los resultados de una
simulacin anterior. Se incluye el guin funcional ostbc4m.m que, junto
con mrc1m.m y ostbc2m.m , se utiliz para generar estos resultados. Si se instala PCT,
estas simulaciones se realizan en paralelo. En este caso se utilizan los scripts
funcionales ostbc4m_pct.m , mrc1m_pct.m y ostbc2m_pct.m . Se insta al usuario a
utilizar estos guiones como punto de partida para estudiar otros cdigos y sistemas.
[licensePCT, ~] = licencia ( 'checkout' , 'Distrib_Computing_Toolbox' );
if (licensePCT && ~ isempty (ver ( 'distcomp' )))
EbNo = 0: 2: 20;
[ber11, ber14, ber22, ber41] = mimoOSTBCWithPCT (100,4e3, EbNo);
else
cargar ostbcRes.mat ;
fin

% Establecer una cifra para visualizar los resultados del BER


clf (fig.);
rejilla en ;
mantener en ;
fig.Renderer = 'zbuffer' ;
ax = fig.CurrentAxes;
ax.YScale = 'log' ;
xlim ([EbNo (1), EbNo (fin)]);
ylim ([1e - 5 1]);
xlabel ( Eb / No (dB) );
ilabel ( "BER" );
fig.NumberTitle = 'off' ;
fig.Name = 'Codificacin de bloques espacio-tiempo ortogonal (2)' ;
ttulo ( Sistema 4x1 codificado en G4 y otras comparaciones );

% Rendimiento terico de la diversidad de cuarto orden para QPSK


BERthy4 = berfading (EbNo, 'psk' , 4, 4);

% Plot results
semilogy (EbNo, ber11, 'r *' , EbNo, ber41, 'ms' , EbNo, ber22, 'c ^' , ...
EbNo, ber14, 'ko' , EbNo, BERthy4, 'g' ) ;
leyenda ( 'No Diversidad (1TX, 1RX), BPSK' , 'OSTBC (4Tx, 1RX), QPSK' , ...
'Alamouti (2TX, 2RX), BPSK' , 'Maximal Ratio Combinando (1TX, 4rx),
BPSK ' , ...
' Diversidad terica del 4 orden, QPSK ' );

% Realizacin de ajuste de curva


fitBER11 = berfit (EbNo, ber11);
fitBER41 = berfit (EbNo (1: 9), ber41 (1: 9));
fitBER22 = berfit (EbNo (1: 8), ber22 (1: 8));
fitBER14 = berfit (EbNo (1: 7), ber14 (1: 7));
semilogy (EbNo, fitBER11, 'r' , EbNo (1: 9), fitBER41, 'm' , ...
EbNo (1: 8), fitBER22, 'c' , EbNo (1: 7), fitBER14, 'k ' );
mantener fuera ;
Iniciar la agrupacin paralela (parpool) utilizando el perfil 'local' ...
conectado a 12 trabajadores.
Como era de esperar, las pendientes similares de las curvas BER para los sistemas 4x1,
2x2 y 1x4 indican un orden de diversidad idntico para cada sistema.
Tambin observe la penalizacin de 3 dB para el sistema 4x1 que se puede atribuir a la
misma suma total de potencia transmitida hecha para cada uno de los tres sistemas. Si
calibramos la potencia transmitida de tal manera que la potencia recibida para cada uno
de estos sistemas sea la misma, entonces los tres sistemas funcionarn de manera
idntica. Una vez ms, el rendimiento terico coincide con el rendimiento de simulacin
del sistema 4x1 como la potencia total se normaliza a travs de las ramas de diversidad.
Apndice
Este ejemplo utiliza las siguientes funciones auxiliares:
mrc1m.m
ostbc2m.m
ostbc4m.m
mimoOSTBCWithPCT.m
mrc1m_pct.m
ostbc2m_pct.m
ostbc4m_pct.m
Referencias
1. SM Alamouti, "Una tcnica simple de transmisin de la diversidad para las
comunicaciones inalmbricas", IEEE Journal sobre Selected Areas in
Communications, vol. 16, N 8, octubre de 1998, pgs. 1451 - 1458.
2. V. Tarokh, H. Jafarkhami y AR Calderbank, "Cdigos de bloques espacio-tiempo de
diseos ortogonales", IEEE Transactions on Information Theory, vol. 45, N 5, julio
de 1999, pgs. 1456-1467.
3. AF Naguib, V. Tarokh, N. Seshadri, y AR Calderbank, "Los cdigos espacio-tiempo
para la comunicacin inalmbrica de alta velocidad de datos: Anlisis de
incompatibilidad", Proceedings of IEEE International Conf. sobre las
comunicaciones, pgs. 309-313, junio de 1997.
4. V. Tarokh, H. Jafarkhami, y AR Calderbank, "Los cdigos de bloque espacio-
tiempo para las comunicaciones inalmbricas: resultados de rendimiento", IEEE
Journal sobre reas seleccionadas en las comunicaciones, Vol. 17, N 3, Mar. 1999,
pgs. 451-460.

S-ar putea să vă placă și