Передача OSTBC с антенной связью

Этот пример показывает, как антенна, взаимной связи влияет на эффективность передачи ортогонального пространственно-временного блочного кода (OSTBC) по каналу с несколькими входами, несколькими выходами (MIMO). Передатчик и приемник имеют два дипольных антенных элементов. BER по сравнению с кривыми ОСШ построены при различной корреляции и связывающихся сценариях. Чтобы запустить этот пример, вам нужен Antenna Toolbox™.

Системные параметры

QPSK модулированный Alamouti OSTBC моделируется по квазистатическому частотно-плоскому Релейному каналу 2x2 [1]. Система работает на частоте 2,4 ГГц. Моделируемая область значений ОСШ составляет от 0 до 10 дБ.

fc = 2.4e9;         % Center frequency
Nt = 2;             % Number of Tx antennas
Nr = 2;             % Number of Rx antennas
blkLen = 2;         % Alamouti code block length
snr = 0:10;         % SNR range
maxNumErrs = 3e2;   % Maximum number of errors
maxNumBits = 5e4;   % Maximum number of bits

Создайте объекты для выполнения QPSK модуляции и демодуляции, кодирования и объединения Аламути, канала AWGN, а также вычисления BER.

qpskMod = comm.QPSKModulator;
qpskDemod = comm.QPSKDemodulator; 
alamoutiEnc = comm.OSTBCEncoder( ...
    'NumTransmitAntennas', Nt);
alamoutiDec = comm.OSTBCCombiner( ...
    'NumTransmitAntennas', Nt, ...
    'NumReceiveAntennas',  Nr);
awgnChanNC = comm.AWGNChannel( ... % For no coupling case
    'NoiseMethod', 'Signal to noise ratio (SNR)',...
    'SignalPower', 1);
berCalcNC = comm.ErrorRate;       % For no coupling case

% Clone objects for mutual coupling case 
awgnChanMC = clone(awgnChanNC); 
berCalcMC  = clone(berCalcNC);

Антенные решетки и матрицы связи

Двухэлементный резонансный дипольный массив используется как на стороне передачи (Tx), так и на стороне приема (Rx). В Tx диполи разнесены на половину длины волны. В Rx интервал составляет десятую часть длины волны.

txSpacing = 0.5;
rxSpacing = 0.1;
lambda = physconst('lightspeed')/fc;
antElement = dipole( ...
    'Length', lambda/2, ...
    'Width',  lambda/100);
txArray = linearArray( ...
    'Element',        antElement,...
    'NumElements',    Nt,...
    'ElementSpacing', txSpacing*lambda);
rxArray = linearArray( ...
    'Element',        antElement,...
    'NumElements',    Nr,...
    'ElementSpacing', rxSpacing*lambda);

Матрица связи вычисляется на основе модели схемы массива согласно [2]. Вычисление s-параметра выполняется для передающих и приёмных массивов, и из этого выводится импедансное матричное представление массива.

txMCMtx = helperCalculateCouplingMatrix(txArray, fc, [1 Nt]);
rxMCMtx = helperCalculateCouplingMatrix(rxArray, fc, [1 Nr]);

Пространственные корреляционные матрицы

Матрицы пространственной корреляции передачи и приема захватывают окружение распространения канала. Без связи принято, что два элемента в Tx являются некоррелированными, а два элемента в Rx имеют высокую корреляцию. Комбинированная/общая матрица корреляции для всего канала является их продуктом Кронекера.

txCorrMtx = eye(2);
rxCorrMtx = [1 0.9; 0.9 1];
combCorrMtx = kron(txCorrMtx, rxCorrMtx);

С помощью связывания мы используем подход в [3], чтобы модифицировать матрицы корреляции Tx и Rx путем предварительного и последующего умножения их на соответствующие матрицы связывания. Это справедливо при предположении, что корреляция и связывание могут быть смоделированы независимо.

txMCCorrMtx = txMCMtx * txCorrMtx * txMCMtx';
rxMCCorrMtx = rxMCMtx * rxCorrMtx * rxMCMtx';

Комбинированная пространственная корреляция с связыванием kron(txMCCorr, rxMCCorr). В качестве альтернативы мы можем обработать матрицу связи Tx/Rx как «поглощенную» в матрицу корреляции Tx/Rx и вывести комбинированную матрицу корреляции следующим образом:

txSqrtCorrMtx = txMCMtx * sqrtm(txCorrMtx);
rxSqrtCorrMtx = rxMCMtx * sqrtm(rxCorrMtx);
combMCCorrMtx = kron(txSqrtCorrMtx, rxSqrtCorrMtx);
combMCCorrMtx = combMCCorrMtx * combMCCorrMtx';

Моделирование канала MIMO

Создайте два comm.MIMOChannel объекты для моделирования каналов MIMO 2x2 с соединением и без него. Комбинированная матрица пространственной корреляции назначается в каждом случае. The MaximumDopplerShift свойство объектов установлено в 0, чтобы смоделировать квазистатический канал.

mimoChanNC = comm.MIMOChannel( ...  % For no coupling case 
    'MaximumDopplerShift',             0, ...
    'SpatialCorrelationSpecification', 'Combined', ...
    'SpatialCorrelationMatrix',        combCorrMtx,...
    'PathGainsOutputPort',             true);

% Clone objects for mutual coupling case 
mimoChanMC = clone(mimoChanNC);
mimoChanMC.SpatialCorrelationMatrix = combMCCorrMtx;

Симуляции

Симулируйте модулированный QPSK код Аламути для каждого значения ОСШ с антенной связью и без нее. Один код Аламути моделируется через канал MIMO в каждой итерации. Чтобы смоделировать квазистатический канал, мы сбрасываем comm.MIMOChannel объект для получения нового набора коэффициентов усиления канала для каждой передачи кода (итерации).

% Set up a figure to visualize BER results
h1 = figure; grid on; hold on;
ax = gca;
ax.YScale = 'log';
xlim([snr(1), snr(end)]); ylim([1e-3 1]);
xlabel('SNR (dB)'); ylabel('BER'); 
h1.NumberTitle = 'off';
h1.Name = 'Orthogonal Space-Time Block Coding';
h1.Renderer = 'zbuffer';
title('Alamouti-coded 2x2 System - High Coupling, High Correlation');

s = rng(108);  % For repeatability
[berNC, berMC] = deal(zeros(3,length(snr)));

% Loop over SNR values
for idx = 1:length(snr)
    awgnChanNC.SNR = snr(idx); 
    awgnChanMC.SNR = snr(idx); 
    reset(berCalcNC); 
    reset(berCalcMC);    
    
    while min(berNC(2,idx),berMC(2,idx)) <= maxNumErrs && (berNC(3,idx) <= maxNumBits)    
        % Generate random data
        txData = randi([0 3], blkLen, 1);
        
        % Perform QPSK modulation and Alamouti encoding
        txSig = alamoutiEnc(qpskMod(txData)); 
        
        % Pass through MIMO channel
        reset(mimoChanNC); reset(mimoChanMC);
        [chanOutNC, estChanNC] = mimoChanNC(txSig);
        [chanOutMC, estChanMC] = mimoChanMC(txSig);
        
        % Add AWGN
        rxSigNC = awgnChanNC(chanOutNC);
        rxSigMC = awgnChanMC(chanOutMC);
        
        % Perform Alamouti decoding with known channel state information
        decSigNC = alamoutiDec(rxSigNC, squeeze(estChanNC));
        decSigMC = alamoutiDec(rxSigMC, squeeze(estChanMC));
                        
        % Perform QPSK demodulation 
        rxDataNC = qpskDemod(decSigNC);
        rxDataMC = qpskDemod(decSigMC);
        
        % Update BER
        berNC(:, idx) = berCalcNC(txData, rxDataNC);
        berMC(:, idx) = berCalcMC(txData, rxDataMC);
    end 

    % Plot results
    semilogy(snr(1:idx), berNC(1,1:idx), 'r*');
    semilogy(snr(1:idx), berMC(1,1:idx), 'bo');
    legend({'Channel Without Coupling', 'Channel With Coupling'});
    drawnow;
end

% Perform curve fitting
fitBERNC = berfit(snr, berNC(1,:));
fitBERMC = berfit(snr, berMC(1,:));
semilogy(snr, fitBERNC, 'r', snr, fitBERMC, 'b');
legend({'Channel Without Coupling', 'Channel With Coupling'});

Figure Orthogonal Space-Time Block Coding contains an axes. The axes with title Alamouti-coded 2x2 System - High Coupling, High Correlation contains 24 objects of type line. These objects represent Channel Without Coupling, Channel With Coupling.

rng(s); % Restore RNG

Дальнейшие исследования

Эффект корреляции и взаимной связи на эффективность BER может быть дополнительно изучено путем изменения коэффициента корреляции и/или путем изменения интервала между элементами. Чем меньше расстояние, тем выше сцепление. Аналогично тому, что было сделано выше для высокой корреляции (0,9) и высокой связи (интервал = 0.1λ) в Rx, теперь мы показываем результаты BER по сравнению с ОСШ для низкой корреляции (0,1) и/или низкой связи (интервал = 0.5λ).

  • Высокая связь (интервал = 0.1λ), низкая корреляция (0,1)

  • Низкая муфта (интервал = 0.5λ), высокая корреляция (0,9)

  • Низкая муфта (интервал = 0.5λ), низкая корреляция (0,1)

Заключение

Результаты моделирования аналогичны результатам, представленным в [1]. Интервал 0.5λ оказывает незначительное влияние на BER как в условиях высокой, так и в условиях низкой корреляции. Для случая с высокой связью, т.е., 0.1λ интервалы между элементами, результатами указывают, что в зависимости от условий корреляции BER может быть либо выше, либо ниже, чем если бы связь не рассматривалась.

Приложение

В этом примере используются следующие вспомогательные функции:

Ссылки

1 - А. А. Абуда, Х. М. Эль-Саллаби, и С. Г. Хаггман, «Эффект взаимной связи на эффективность BER схемы Аламути», Международный симпозиум IEEE по антеннам и распространению, июль 2006 года.

2 - И. Я. Гупта и А. А. Ксиенски, «Эффект взаимной связи на эффективность адаптивных массивов», IEEE Trans. на антенны и распространение, том 31, № 5, стр. 785-791, 1989.

3 - Y. Wu, J. P. Linnartz, J. W. M. Bergmans, and S. Attallah, «Effects of Antenna Mutual Coupling on the Performance of MIMO Systems», Proc. 29-й симпозиум по теории информации в Бенилюксе, май 2008.

Для просмотра документации необходимо авторизоваться на сайте