Конкатенированный 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 свойство на true, чтобы использовать значения усиления пути к каналу в качестве совершенных оценок 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.