Конкатенированный OSTBC с TCM

Этот пример показывает, что ортогональный пространственно-временной блочный код (OSTBC), конкатенированный с закодированной решеткой модуляцией (TCM) для информационной передачи по нескольким - ввел, несколько - выводят (MIMO), канал с 2 антеннами передачи и 1 получает антенну. Пример использует систему связи objects™, чтобы моделировать эту систему.

Введение

OSTBCs [1], [2] привлекательный метод для радиосвязей MIMO. Они используют полный пространственный порядок разнообразия и наслаждаются мудрым символом декодированием наибольшего правдоподобия (ML). Однако они не предлагают усиления кодирования. Объединитель для OSTBC в стороне получателя предоставляет мягкую информацию переданных символов, которые могут быть использованы для декодирования или демодуляции внешнего кода.

TCM [3] является пропускной способностью эффективная схема, которая интегрирует кодирование и модуляцию, чтобы обеспечить большое усиление кодирования. Конкатенация TCM с внутренним кодом будет обычно предлагать улучшенную производительность.

Этот пример иллюстрирует преимущества OSTBC и схемы конкатенации TCM: пространственное усиление разнообразия предложено OSTBC, и усиление кодирования предложено TCM. Для сравнения также обеспечиваются две ссылочных системы, содержащие только TCM или OSTBC. Разнообразие и усиления кодирования схемы конкатенации по эталонным моделям могут ясно наблюдаться от результатов симуляции. Больше дискуссий о конкатенации OSTBC и TCM может быть найдено в, например, [4], [5] и ссылки там.

configureTCMOSTBCDemo.m скрипт создает Системные объекты, используемые, чтобы моделировать конкатенированную систему OSTBC. Это также инициализирует некоторые параметры симуляции.

% Trellis structure of the TCM modulator
trellis = poly2trellis([2, 3], [1, 2, 0; 4, 1, 2]);

% Create System objects of the concatenated OSTBC system and set simulation
% parameters such as SNR and frame length.
configureTCMOSTBCDemo

PSK модулятор TCM и демодулятор

Системный объект модулятора TCM PSK модулирует случайные данные о сообщении к совокупности PSK, которая имеет модульную среднюю энергию. Свойство TrellisStructure принимает, что структура MATLAB® задает решетку TCM. Свойство ModulationOrder задает размер совокупности PSK. Этот пример использует схему Ungerboeck TCM совокупности 8-PSK с 8 состояниями решетки [3] и устанавливает соответствующее свойство TrellisStructure на результат poly2trellis ([2 3], [1 2 0; 4 1 2]). Этот объект имеет продолжительность вывода 50, когда каждые два входных бита производят один символ.

PSK Системный объект демодулятора TCM использует алгоритм Viterbi для TCM, чтобы декодировать сигналы от объединителя OSTBC. Пример устанавливает свойство TerminationMethod на 'Усеченный'; поэтому обработки каждый кадр независимо. Пример также устанавливает свойство TracebackDepth на 30, который по сравнению с продолжительностью ограничения TCM, достаточно длинно, чтобы гарантировать почти производительности без потерь.

psktcmMod = comm.PSKTCMModulator(trellis, ...
                'TerminationMethod', 'Truncated');
psktcmDemod = comm.PSKTCMDemodulator(trellis, ...
                'TerminationMethod', 'Truncated', ...
                'TracebackDepth', 30, ...
                'OutputDataType', 'logical');

Ортогональные пространственно-временные блочные коды (OSTBC)

Системный объект энкодера OSTBC кодирует информационные символы от Энкодера TCM при помощи кода [1] Alamouti для 2 антенн передачи. Вывод этого объекта 50x2 матрица, где записи на каждом столбце соответствуют данным, переданным от одной антенны.

Системный объект объединителя OSTBC использует одну антенну и декодирует полученный сигнал, использующий информацию о состоянии канала (CSI). Вывод метода шага этого объекта представляет оценки переданных символов, которые затем поданы в PSK демодулятор TCM. В этом примере CSI принят отлично известный в стороне получателя.

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

2x1 MIMO, исчезающий канал

2x1 MIMO, исчезающий, Системный объект канала моделирует пространственно независимый плоский Канал с релеевским замиранием от 2 антенн передачи до этого 1, получают антенну.

Пример устанавливает maximumDopplerShift свойство объекта канала к 30. Причина использования этого значения состоит в том, чтобы заставить канал MIMO вести себя как квазистатический исчезающий канал, т.е. это сохраняет постоянным во время одной передачи кадра и отличается вдоль нескольких кадров. Пример устанавливает свойство PathGainsOutputPort на истинный использовать значения усиления пути к каналу в качестве совершенных оценок CSI. Пример также устанавливает свойство RandomStream на 'mt19937ar с seed' так, чтобы объект использовал автономный генератор случайных чисел, чтобы сгенерировать повторяемые коэффициенты канала. 2x1 канал MIMO нормировал усиления пути.

mimoChan = comm.MIMOChannel(...
                'SampleRate', 1/Tsamp, ...
                'MaximumDopplerShift', maxDopp, ...
                'SpatialCorrelationSpecification', 'None', ...
                'NumReceiveAntennas', 1, ...
                'RandomStream', 'mt19937ar with seed', ...
                'PathGainsOutputPort', true);

Конкатенированный OSTBC с TCM

Этот раздел кода вызывает цикл обработки для конкатенированной системы OSTBC. Основной цикл обрабатывает покадровые данные, где передатчик модулирует случайные данные с помощью модулятора TCM 8-PSK и затем применяет кодирование Alamouti. Два переданных сигнала от энкодера OSTBC проходят 2x1 Канал с релеевским замиранием MIMO и также повреждаются AWGN. Объединитель OSTBC использует, каждый получает антенну, и предоставляет мягкие входные параметры демодулятору TCM 8-PSK. Пример сравнивает вывод демодулятора со сгенерированными случайными данными, чтобы получить коэффициент ошибок кадра (FER).

Потоковая обработка

fer = zeros(3,1);
while (fer(3) < maxNumFrms) && (fer(2) < maxNumErrs)
  data      = logical(randi([0 1], frameLen, 1)); % Generate data
  modData   = psktcmMod(data);                    % Modulate
  txSignal  = ostbcEnc(modData);                  % Apply Alamouti coding
  [chanOut, chanEst] = mimoChan(txSignal);        % 2x1 fading channel
  rxSignal  = awgnChan(chanOut);                  % Add receiver noise
  modDataRx = ostbcComb(rxSignal, ...
                   squeeze(chanEst));             % Decode
  dataRx    = psktcmDemod(modDataRx);             % Demodulate
  frameErr  = any(dataRx - data);                 % Check frame error
  fer       = FERData(false, frameErr);           % Update frame error rate
end

Метод шага объекта системы измерения коэффициента ошибок, FERData, выводит вектор 3 на 1, содержащий обновления измеренного значения FER, количество ошибок и общее количество передач кадра. Отобразите значения FER.

frameErrorRate = fer(1)
frameErrorRate =

    0.1481

TCM по плоскому исчезающему каналу

Этот раздел примера моделирует TCM в предыдущей схеме конкатенации по одно входу одно выводу (SISO) плоский Канал с релеевским замиранием без пространственно-временного кодирования. Исчезающий канал имеет ту же спецификацию как один подканал 2x1 MIMO, исчезающий канал в предыдущей системе. Таким образом, этот раздел примера устанавливает свойство NumTransmitAntennas исчезающего Системного объекта канала к 1 после выпуска его. Этот раздел примера также устанавливает свойство SignalPower Системного объекта канала AWGN к 1, когда существует только один символ, переданный на период символа.

Инициализируйте цикл обработки

release(mimoChan);
mimoChan.NumTransmitAntennas = 1;
awgnChan.SignalPower = 1;
reset(FERData)
fer = zeros(3,1);

Потоковый цикл обработки

while (fer(3) < maxNumFrms) && (fer(2) < maxNumErrs)
  data      = logical(randi([0 1], frameLen, 1)); % Generate data
  modData   = psktcmMod(data);                    % Modulate
  [chanOut, chanEst] = mimoChan(modData);         % SISO fading channel
  rxSignal  = awgnChan(chanOut);                  % Add receiver noise
  modDataRx = (rxSignal.*conj(chanEst)) / ...
              (chanEst'*chanEst);                 % Equalize
  dataRx    = psktcmDemod(modDataRx);             % Demodulate
  frameErr  = any(dataRx - data);                 % Check frame error
  fer       = FERData(false, frameErr);           % Update frame error rate
end

OSTBC по 2x1 плоский канал с релеевским замиранием

Этот раздел примера заменяет TCM в предыдущей схеме конкатенации модуляцией QPSK так, чтобы обе системы имели тот же символ (кадр) уровень. Это использует то же самое 2x1 плоский Канал с релеевским замиранием как в модели конкатенации TCM-OSTBC. Системный объект модулятора QPSK, qpskMod, сопоставляет информационные биты с совокупностью QPSK и Системным объектом демодулятора QPSK, QPSKDemod, демодулирует сигналы от Объединителя OSTBC.

Инициализируйте цикл обработки

release(mimoChan);
mimoChan.NumTransmitAntennas = 2;
awgnChan.SignalPower = 2;
reset(FERData)
fer = zeros(3,1);

Потоковый цикл обработки

while (fer(3) < maxNumFrms) && (fer(2) < maxNumErrs)
  data      = logical(randi([0 1], frameLen, 1)); % Generate data
  modData   = qpskMod(data);                      % Modulate
  txSignal  = ostbcEnc(modData);                  % Apply Alamouti coding
  [chanOut, chanEst] = mimoChan(txSignal);        % 2x1 fading channel
  rxSignal  = awgnChan(chanOut);                  % Add receiver noise
  modDataRx = ostbcComb(rxSignal, ...
                   squeeze(chanEst));             % Decode
  dataRx    = qpskDemod(modDataRx);               % Demodulate
  frameErr  = any(dataRx - data);                 % Check frame error
  fer       = FERData(false, frameErr);           % Update frame error rate
end

Можно добавить цикл for вокруг предыдущих циклов обработки, чтобы запустить симуляции для набора значений ОСШ. Симуляции были запущены оффлайн для значений ОСШ (10:2:24) дБ, целевое количество ошибок, равных 1 000, и максимальное количество передач, равных 5e6. Следующие данные показывают результаты этой симуляции.

Сводные данные

Этот пример использовал несколько Системных объектов, чтобы моделировать конкатенированный OSTBC с TCM по 2x1 плоский Канал с релеевским замиранием. Эта основная система была изменена, чтобы смоделировать систему TCM по плоскому исчезающему каналу SISO и систему OSTBC по тому же самому 2x1 плоский Канал с релеевским замиранием. Производительность системы была измерена с помощью кривых FER, полученных с объектом системы измерения коэффициента ошибок. Этот пример показал, что схема конкатенации обеспечивает значительное усиление разнообразия по схеме TCM и приблизительно 2 дБ, кодирующие усиление по коду Alamouti.

Приложение

Этот пример использует следующий скрипт и функцию помощника:

Выбранная библиография

  1. С. М. Аламоути, "Простой метод разнообразия передачи для радиосвязей", Журнал IEEE® на Выбранных областях в Коммуникациях, издании 16, № 8, стр 1451-1458, октябрь 1998.

  2. V. Tarokh, Х. Джэфархэми и А. Р. Колдербэнк, "Пространственно-временные блочные коды из ортогональных проектов", Транзакции IEEE на Теории информации, издании 45, № 5, стр 1456-1467, июль 1999.

  3. Г. Анджербоек, "Кодирование канала с многоуровневыми сигналами / сигналами фазы", Транзакции IEEE на Теории информации, издании IT-28, № 1, стр 55? 67, январь 1982.

  4. С. М. Аламоути, В. Тэрох и П. Пун, "Закодированная решеткой модуляция и разнообразие передачи: Критерии расчета и оценка результатов деятельности", в Продолжениях Международной конференции IEEE по вопросам Universal Personal Communications (ICUPC '98), Флоренция, Италия, издание 1, 5-9 октября 1998, стр 703-707.

  5. Y. Гонг и К. Б. Летэиф, "Конкатенированное пространственно-временное блочное кодирование с решеткой закодировало модуляцию в исчезающих каналах", Транзакции IEEE на Радиосвязях, издании 1, № 4, стр 580-590, октябрь 2002.