Этот пример показывает, что ортогональный пространственно-временной блочный код (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
Системный объект модулятора 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 кодирует информационные символы от Энкодера TCM при помощи кода [1] Alamouti для 2 антенн передачи. Вывод этого объекта 50x2 матрица, где записи на каждом столбце соответствуют данным, переданным от одной антенны.
Системный объект объединителя OSTBC использует одну антенну и декодирует полученный сигнал, использующий информацию о состоянии канала (CSI). Вывод метода шага этого объекта представляет оценки переданных символов, которые затем поданы в PSK демодулятор TCM. В этом примере CSI принят отлично известный в стороне получателя.
ostbcEnc = comm.OSTBCEncoder; ostbcComb = comm.OSTBCCombiner;
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 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 в предыдущей схеме конкатенации по одно входу одно выводу (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
Этот раздел примера заменяет 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.
Этот пример использует следующий скрипт и функцию помощника:
С. М. Аламоути, "Простой метод разнообразия передачи для радиосвязей", Журнал IEEE® на Выбранных областях в Коммуникациях, издании 16, № 8, стр 1451-1458, октябрь 1998.
V. Tarokh, Х. Джэфархэми и А. Р. Колдербэнк, "Пространственно-временные блочные коды из ортогональных проектов", Транзакции IEEE на Теории информации, издании 45, № 5, стр 1456-1467, июль 1999.
Г. Анджербоек, "Кодирование канала с многоуровневыми сигналами / сигналами фазы", Транзакции IEEE на Теории информации, издании IT-28, № 1, стр 55? 67, январь 1982.
С. М. Аламоути, В. Тэрох и П. Пун, "Закодированная решеткой модуляция и разнообразие передачи: Критерии расчета и оценка результатов деятельности", в Продолжениях Международной конференции IEEE по вопросам Universal Personal Communications (ICUPC '98), Флоренция, Италия, издание 1, 5-9 октября 1998, стр 703-707.
Y. Гонг и К. Б. Летэиф, "Конкатенированное пространственно-временное блочное кодирование с решеткой закодировало модуляцию в исчезающих каналах", Транзакции IEEE на Радиосвязях, издании 1, № 4, стр 580-590, октябрь 2002.