Для тех у кого MIMO прошло мимо…

в 17:55, , рубрики: Matlab, MIMO, OFDM, WiMAX, Беспроводные технологии, радиосвязь, связь, телекоммуникации, метки: , , , ,

Доброго времени суток! Разбирая тему технологии MIMO (Multiple input-multiple output), которая сейчас используется повсеместно, я обнаружил насколько мало материала по этой тематике представлено в отечественной литературе. Хабр регулярно читаю около 3 лет и полного ликбеза по этому вопросу я здесь тоже не видел. Постараюсь исправить эту ситацию. Как ЭТО работает и почему это актуально именно сегодня, а также история развития этой технологии. Кого заинтересовало прошу под кат.

Немножко истории

У большого числа технологий, которые имеют место в сегодняшней телекоммуникационной среде «ноги растут» из военных наработок. Технология ортогонального частотного мультиплексирования (OFDM), например, была предложена ещё в 80-х годах нашими американскими друзьями, но реализовать её удалось совсем недавно лишь потому, что она чрезвычайно требовательна к вычислительной мощности системы (всему виной пресловутое БПФ).

MIMO раньше представлялась только лишь как технология разнесенного приема (имеем одну передающую и N приемных антенн). Реализуя эту идею было выпущено несколько серий военных тропосферных станций (может кому и довелось послужить на таких) и в принципе на том этапе, расходы на разворачивание дополнительных антенн себя оправдывали.

Принцип обработки был прост как лопата: в двух приемных ветках сравнивалось отношение сигнал/шум и в соответствии с оценкой этого значения каждой ветке обработки назначались весовые коэффициенты, играющие роль при принятии решения, грубо говоря, что было передано: 0 или 1. Эта нехитрая система так и была названа критерием оптимального весового сложения (MRC).

Дальше-больше. В 1997 году ирано-американец Аламоути предлагает новинку основанную на уже известных тезисах, назвав её пространственно-временным блоковым кодом (STBC). После этого год от года увеличивается вал публикаций на тему MIMO и тема стает очень актуальной на фоне того, что частотно-энергетическую эффективность систем связи повышать стало все сложнее и сложнее (уже продуманы максимально эффективные сигнально-кодовые конструкции). А дальше пошло-поехало: пространственно-временное решетчатое кодирование, пространственное мультиплексирование, а также большое количество алгоритмов декодирования от простейшего «максимального правдоподобия (ML- max likehood)» до сферического турбодекодирования на GPU и т.д.

Как это работает

И ещё немного теории

Радиоканалы

Вообще эта классификация огромна и её обзор достоен отдельной статьи, но мы остановимся лишь на нескольких моментах.

Проходя путь от передатчика (T) к приемника ( R) наша радиоволна затухает (теряет в энергетике), причем то насколько она потеряет зависит то, есть ли между нашими T и R прямая видимость. Если она есть, то основная вина за потери ложится на потери среды распространения (path loss), если прямой видимости нет, то начинается самое интересное. Сталкиваясь с различными препятствиями волна идет к пункту назначения несколькими путями (многолучевое распространение) и соответственно каждый луч проходит разное расстояние. На приеме все эти лучи могут складывать с противофазе, что дополнительно снижает интенсивность сигнала, что заставляет уровень сигнала постоянно «плавать». Поэтому в зоне неуверенного приема ваши мобильники никак не могут определиться сколько «палочек сигнала» показывать.

Все это безобразие назвали замираниями. Бывают они разными и могут описывать разными законами. При наличии постоянной компоненты (наличии прямой видимости) подойдет распределение Райса, а при её отсутствии — Релеевское (частный вариант). Формул не буду приводить умышленно, они большие и страшные.

MIMO вот ОНО

Разбор того, как ЭТО работает проведем на самом простом примере. У нас есть 2 антенны на передаче и одна на приеме.

image

k — так называемая комплексная передаточная функция канала (определяющая его ФЧХ и АЧХ), причем различная для каждого момента времени для каждого из принятых сигналов. Главная изюминка как раз и заключается в том, что сигналы для каждой из приемных антенн проходят разные пути.

В соответствии с методом ПВБК, входной поток данных разбивается на пары [с1, с2], причем, на первом полутактовом интервале символ c1 передается через антенну Т1 и символ c2 передается через антенну Т2. На втором полутактовом интервале порядок передачи изменяется: через антенну Т1 передается инверсия символа c2 (на рисунке обозначен как (–c*2), а символ c1 передается через антенну Т2 (на рисунке обозначен как (c*1). Данный алгоритм удобно представить в виде матрицы, где номер строки будет соответствовать номеру передатчика, а номер столбца – номер полутакта (в общем случае – шаг такта) передачи. Символ "*" как уже многие догадались-комплексное сопряжение.

image

В итоге на входе мы получаем 2 сигнала (мультипликативные отклики за первый и второй такт), проведя ряд занимательных математических преобразований мы получаем исходный сигнал, а точнее пару этих сигналов. Собственно вся фишка и заключается в том, что каждый из этих сигналов передавался 2 раза.

Почему это возможно? Потому что k разный для каждого луча, а матрица Аламоути (рисунок выше) является ортогональной.

Практика

А теперь проведем моделирование и посмотрим выигрыш MIMO перед SISO(single in single out).

image

Все свои расчеты и моделирование я провожу в Matlab'e потому, что это самая лучшая в мире очень удобная для таких экспериментов среда.

Вот собственно кусок для расчета кривой Аламоути:

 numOfBlk = 1e6;     % число блоков для передачи
    qampoz = 4;      % выбираем позиционность сигнала КАМ
    SNRdB    = 6:1:40; %пределы изменения отношения сигнал/шум
    linColor = 'b'; % цвет 1
    linSym   = 'o'; % цвет 2
errRate = zeros(size(SNRdB)); %пустышка
% Аламоути
for i = 1 : length(SNRdB)
    txData = randint(numOfBlk*2,1,qampoz);%формируем инф поток
    temp = reshape(txData,numOfBlk,2); %разбиваем на подпотоки
    temp = qammod(temp,qampoz); %модулируем
        H  = 1/sqrt(2) * (randn(numOfBlk,2) + sqrt(-1)*randn(numOfBlk,2)); %задаем канал(он релеевский)
        txMod(:,1) =  H(:,1).* 1/sqrt(2).*temp(:,1)     + H(:,2).* 1/sqrt(2).*temp(:,2)     ; %обработка на приеме
    txMod(:,2) = -H(:,1).*(1/sqrt(2).*temp(:,2)').' + H(:,2).*(1/sqrt(2).*temp(:,1)').' ;
    txMod = awgn(txMod,SNRdB(i),'measured');
       temp(:,1) = sqrt(2)*(H(:,1)'.' .* txMod(:,1) + H(:,2) .* txMod(:,2)'.')./(abs(H(:,1)).^2 + abs(H(:,2)).^2);
    temp(:,2) = sqrt(2)*(H(:,2)'.' .* txMod(:,1) - H(:,1) .* txMod(:,2)'.')./(abs(H(:,1)).^2 + abs(H(:,2)).^2);
        rxData(:,1) = qamdemod(temp(:,1),qampoz); %демодуляция
    rxData(:,2) = qamdemod(temp(:,2),qampoz);
        [numErr errRate(i)] = symerr(rxData,reshape(txData,numOfBlk,2)); %считаем ошибки
end

Эта часть для классической схемы:

%SISO
for i = 1 : length(SNRdB)
    temp = qammod(txData,qampoz);
    H  = 1/sqrt(2) * (randn(numOfBlk*2,1) + sqrt(-1)*randn(numOfBlk*2,1));%тот же канал
    txMod = H.*temp;
    txMod = awgn(txMod,SNRdB(i),'measured');
    temp = txMod./H;
    rxData = qamdemod(temp,qampoz);
        [numErr errRate(i)] = symerr(rxData,txData);
end

Из графика видно что выигрыш для вероятности ошибки Pош=10^(-3) примерно 12 [дБ]. И это просто огромная величина.

В качестве заключения

Спасибо тем, кто дочитал, хочу отметить, что:

  • Одночастотный сигнал это хорошо, но в расчетах я принимал идеальный вариант когда точно известна КПФ канала на приеме, а как провести его оценку в реальности? Тут-то идеален OFDM сигнал в структуру которого можно встроить пилот-сигналы и по ним построить профиль канала (узнать КПФ для каждой поднесущей). Кстати они использовались ещё до MIMO (см. DVB-T например) для оценки помехоустойчивости
  • Модель канала выбрана самая легкая и от реального далековата
  • Модель сигнала выбрана самая простая, если брать сигнал OFDM, то его формирование само по себе непростое занятие + тогда должны быть другие условия к модели канала (канал-то частотно-селективный нужен)
  • ПВБК не единственный и не самый эффективный из методов применяемых в технологии MIMO, но самый простой и легко реализуемый
  • Выигрыш для КАМ-16,64 уменьшается с ростом позиционности, все дело в энергетике (причина — меньшее Евклидово расстояние между сигнальным точками)
Заключение №2

Все эти изыскания — часть моей ВКР. Остальное уже касается MIMO-OFDM и это тема отдельной статьи.

Автор: netcitizen


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js