В этом примере показан способ цифровой связи с синхронизацией OFDM на основе стандарта IEEE ® 802.11a™. Системные objects™ из панели инструментов связи используются для обеспечения модуляции и демодуляции OFDM и поддержки функциональных возможностей синхронизации. В частности, этот пример иллюстрирует способы решения реальных проблем беспроводной связи, таких как восстановление несущей частоты, восстановление синхронизации и выравнивание частотной области.
В этом примере описывается реализация MATLAB ® синхронизации OFDM на основе стандарта IEEE 802.11a [3].
Стандарт IEEE 802.11a описывает передачу сигнала, модулированного OFDM, для обмена информацией между системами в локальных и городских сетях. В этом примере используется физический уровень, обозначенный этим стандартом, в частности символы преамбулы и структура сетки OFDM.
Цель этого примера:
Для моделирования общей системы беспроводной связи OFDM, которая способна успешно восстановить сообщение, которое было повреждено различными моделируемыми нарушениями канала.
Для иллюстрации использования ключевых средств Communications Toolbox™ для проектирования системы OFDM и синхронизации символов OFDM
Для иллюстрации преимуществ производительности MATLAB Coder™
Регулируемые параметры передатчика, включающие в себя полезное сообщение в каждом кадре, которое состоит из нескольких символов OFDM и количества переданных кадров.
message = 'Live long and prosper, from the Communications Toolbox Team at MathWorks!'; numFrames = 1e2; % Adjustable channel parameters EbN0dB = 12; % Channel noise level (dB) frequencyOffset = 1e4; % Frequency offset (Hz) phaseOffset = 15; % Phase offset (Degrees) delay = 80; % Initial sample offset for entire data stream (samples) % Display recovered messages displayRecoveredMsg = false; % Enable scope visualizations useScopes = true; % Check for MATLAB Coder license useCodegen = checkCodegenLicense; if useCodegen fprintf(['--MATLAB Coder license found. ',... 'Transmitter and receiver functions will be compiled for ',... 'additional simulation acceleration.--\n']); end % By default the transmitter and receiver functions will be recompiled % between every run, which is not always necessary. To disable receiver % compilation, change "compileIt" to false. compileIt = useCodegen;
--MATLAB Coder license found. Transmitter and receiver functions will be compiled for additional simulation acceleration.--
В этом примере моделируется цифровая система связи на основе стандарта IEEE 802.11a [3]. Система разбита на четыре функции: generateOFDMSignal, applyOFDMChannel, receiveOFDMSignal и calculatOFDMBER.
1) generateOFDMSignal: настройка и шаг объекта OFDMTransmitter System. Объект преобразует сообщение полезной нагрузки в битовый поток, который сначала модулируется PSK, затем модулируется OFDM и, наконец, дополняется символами OFDM преамбулы для формирования отдельного кадра. Передатчик повторяет этот кадр numFrames времена.
2) applyOFDMChannel: моделирует канал со смещением несущей, сдвигом синхронизации и аддитивным белым гауссовым шумом (AWGN).
3) receiveOFDMSignal: настройка и шаг объекта OFDMReceiver System. Объект моделирует ряд компонентов в приемнике, включая восстановление синхронизации, восстановление несущей частоты, выравнивание канала и демодуляцию. Объект также может быть сконфигурирован для отображения нескольких областей для визуализации обработки приемника. Выходной сигнал способа шага объекта OFDMReceiver представляет собой декодированный битовый поток из этих обнаруженных кадров.
4) calculateOFDMBER: вычислить частоту ошибок системного кадра (FER) и частоту ошибок в битах (BER) на основе исходного сообщения полезной нагрузки в каждом кадре и битовых выходных данных объекта OFDMReceiver System.
Передатчик
Объект OFDMTrmitter System генерирует сигнал OFDM на основе стандарта IEEE 802.11a с поставляемой полезной нагрузкой ASCII. Каждый кадр передачи состоит из нескольких OFDM символов, включая преамбулу и символы данных. Идентичные кадры повторяются передатчиком на основе введенного значения. Кадры заполняются для заполнения сетки OFDM, когда это необходимо.
Канал
Этот компонент моделирует эффекты передачи по воздуху. Он ухудшает качество передаваемого сигнала как с фазовым, так и с частотным сдвигом, задержку для имитации задержки канала между передатчиком и приемником и AWGN. Уровень шума AWGN задается в дБ.
Приемник
Этот объект OFDMReceiver System восстанавливает исходное переданное сообщение полезной нагрузки. Она разделена на четыре основные операции в следующем порядке:
1) Восстановление синхронизации: этот компонент отвечает за определение местоположения выборки начала данного кадра. Более конкретно, он использует известную последовательность преамбулы в принятом кадре, найденном посредством взаимной корреляции. Перекрестно коррелированные данные будут содержать конкретное расположение пиков/интервал, который позволяет идентифицировать. Сама преамбула предназначена для создания этой специфической формы во временной области. Этот способ идентификации основан на [1]. locatePreamble метод объекта, который ответственен за эту операцию, использует нормализованную минимальную пиковую высоту и минимальное количество необходимых пиков, чтобы обеспечить возможный матч преамбулы.
2) Восстановление несущей частоты: Оценка частоты выполняется путем вычисления разности фаз во временной области между половинами длинной части преамбулы 802.11a. Эта разность Phi фаз затем преобразуется в сдвиг частоты. Это обычная методика, первоначально опубликованная Шмидлем и Коксом [2]. Эта реализация фазового измерения предполагает, что истинный сдвиг находится в пределах pi или одного частотного бина БПФ. В случае 802.11a ячейка имеет 312.5kHz ширину.
3) Уравнение частотной области: Поскольку оценка частоты может быть неточной, дополнительное вращение фазы будет существовать на уровне поднесущей символа OFDM. Как и фазовые повороты, замирание канала также будет влиять на принятый сигнал. Оба этих нарушения корректируются корректором частотной области. Эквалайзер имеет два этапа, используя данные преамбулы и пилот-сигнала. Во-первых, принимаемая полезная нагрузка выравнивается посредством использования отводов, генерируемых из принятых длинных выборок преамбулы. Затем пилотные поднесущие извлекаются и интерполируются по частоте для обеспечения полной оценки канала. Затем полезная нагрузка выравнивается с использованием этих контрольных оценок.
4) Декодер данных: Наконец подперевозчики OFDM демодулируются и затем, PSK, демодулируемый в биты, от которых может быть восстановлено оригинальное сообщение полезного груза.
Расчет BER
Этот компонент вычисляет ЧОК и ЧОК системы на основе исходного сообщения полезной нагрузки и декодированного битового потока из обнаруженных кадров в приемнике. Необнаруженные кадры не учитываются при вычислении.
Отображение восстановленного сообщения
Восстановленное сообщение в приемнике отображается для каждого обнаруженного кадра. Поскольку исходная длина сообщения не посылается приемнику, дополненные биты в каждом кадре также восстанавливаются в символы и отображаются. Таким образом, вы можете видеть до 7 бессмысленных символов в конце каждого восстановленного сообщения.
Объемы
диаграммы созвездий, показывающие принятый сигнал до и после выравнивания частотной области
векторный график отводов эквалайзера, используемых для данного кадра
анализатор спектра, отображающий обнаруженные кадры данных
график времени, отображающий начало обнаруженных кадров
график времени, отображающий оценку частоты смещения несущей передатчика для обнаруженных кадров
Большой вектор данных регенерируется для заданного значения EbN0 функцией generateOFDMSignal. Эти данные затем передаются через функцию applyOFDMChannel, которая вносит несколько общих нарушений канала. Наконец, данные передаются в приемник для восстановления. Функция receiveOFDMSignal работает путем обработки данных на покадровой основе. Этот механизм обработки является автономным для преимуществ производительности при использовании генерации кода и для простоты кода. Этот сценарий по умолчанию генерирует код для функций передатчика и приемника; это осуществляется с помощью команды codegen, предоставляемой продуктом MATLAB Coder™. Команда codegen преобразует функции MATLAB ® в статическую или динамическую библиотеку C++, исполняемую, или в файл MEX, создавая код для ускоренного выполнения. Сгенерированный код C выполняется в несколько раз быстрее, чем исходный код MATLAB.
Во время работы приемник отображает ряд графиков, иллюстрирующих определенные результаты синхронизации и эффекты на сигнал.
% Compile transmitter with MATLAB Coder if compileIt codegen generateOFDMSignal -args {coder.Constant(message), coder.Constant(numFrames)} end % Generate transmission signal if useCodegen [txSig, frameLen] = generateOFDMSignal_mex(message, numFrames); else [txSig, frameLen] = generateOFDMSignal(message, numFrames); end % Pass signal through channel rxSig = applyOFDMChannel(txSig, EbN0dB, delay, frequencyOffset, phaseOffset); % Compile receiver with MATLAB Coder if compileIt codegen receiveOFDMSignal -args {rxSig, coder.Constant(frameLen), coder.Constant(displayRecoveredMsg), coder.Constant(useScopes)} end % Recover signal if useCodegen [decMsgInBits, numFramesDetected] = receiveOFDMSignal_mex(rxSig, frameLen, displayRecoveredMsg, useScopes); else [decMsgInBits, numFramesDetected] = receiveOFDMSignal(rxSig, frameLen, displayRecoveredMsg, useScopes); end % Calculate average BER [FER, BER] = calculateOFDMBER(message, decMsgInBits, numFramesDetected); fprintf('\nAt EbNo = %5.2fdB, %d frames detected among the %d transmitted frames with FER = %f and BER = %f\n', ... EbN0dB, numFramesDetected, numFrames, FER, BER);
Code generation successful. Code generation successful. At EbNo = 12.00dB, 100 frames detected among the 100 transmitted frames with FER = 0.010000 and BER = 0.000098





Этот пример использует несколько объектов системы MATLAB для моделирования цифровой связи с OFDM по каналу AWGN. Он показывает, как моделировать несколько частей системы OFDM, таких как модуляция, оценка частоты, восстановление синхронизации и выравнивание. Моделирование также отображает информацию о работе алгоритмов синхронизации через ряд графиков. В этом примере также используется генерация кода, позволяющая выполнять моделирование в несколько раз быстрее, чем исходный код MATLAB.
В этом примере используются следующие системные объекты:
В этом примере используются следующие вспомогательные функции:
Минн, Х.; Цзэн, М.; Бхаргава, В.К., «Об оценке смещения по времени для систем OFDM», Communications Letters, IEEE, vol.4, no.7, pp.242244, июль 2000 г.
Шмидль, Т.М.; Кокс, округ Колумбия, «Надежная синхронизация частоты и синхронизации для OFDM», Communications, IEEE Transactions on, vol.45, no.12, pp.1613.1621, Dec 1997
IEEE Std 802.11a, «Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического уровня (PHY)», 1999.