Этот пример показывает основанный на OFDM беспроводной приемник, реализованный с помощью блоков Simulink®, оптимизированных для генерации HDL-кода и аппаратной реализации.
Модель, показанная в этом примере, получает данные и декодирует его на основе ортогонального мультиплексирования деления частоты (OFDM). Основная цель этого примера состоит в том, чтобы смоделировать пользовательский HDL приемник радиосвязи OFDM, который может восстановить информацию в сценарии в реальном времени и поддерживает скорости передачи данных до 3 Мбит/с. Эта модель позволяет вам сконфигурировать параметры: типы модуляции символа, такие как BSPK, QPSK, 16-QAM, и 64-QAM и уровни кода 1/2, 2/3, 3/4 и 5/6 посредством проколотого кодирования свертки. Эта модель позволяет вам управлять нарушениями, такими как несущая частота возмещена (CFO), фаза поставщика услуг возмещена (CPO) и канал с релеевским замиранием, которые значительно влияют на основанную на OFDM систему связи.
Приемник в этом примере работает в сочетании с передатчиком в HDL пример Передатчика OFDM. Для получения дополнительной информации о передатчике и переданном формате системы координат, смотрите HDL пример Передатчика OFDM. Приемник в этом примере имеет плавающую точку MATLAB® эквивалентная функция, описанная в HDL OFDM пример Ссылок MATLAB.
Следующий рисунок показывает архитектуру Приемника OFDM. Приемник производит вход в 1.92 членах Шотландского парламента. Эти выборки поток в Фильтр Rx. Выход от потока Фильтра Rx в Средство оценки Частоты и Корректор Частоты. Средство оценки Частоты и Корректор Частоты оценивают и правильный CFO соответственно и демонстрационный поток в Детектор Синхронизации последовательности (SS). Выход Детектора SS используется для синхронизации времени. Время синхронизировало демонстрационный поток в Демодулятор OFDM, который демодулирует вход и генерирует поднесущие частотного диапазона. Синтаксический анализатор Поднесущей анализирует поднесущие ссылки канала, поднесущие заголовка и поднесущие данных. Поток поднесущих ссылки канала в Средство оценки Канала, которое оценивает частотную характеристику канала. Эквалайзер Канала использует эти оценки, чтобы компенсировать заголовок и поднесущие данных в частотном диапазоне. Восстановление Заголовка восстанавливает информацию о заголовке с помощью компенсируемых каналом поднесущих заголовка. Средство оценки CPE оценивает общую ошибку фазы (CPE) в данных sub поставщики услуг, которые корректируются Корректором CPE. Восстановление данных использует информацию о заголовке и поднесущие CPE-исправленных-данных, чтобы декодировать биты данных.
Две модели Simulink и три файла MATLAB используются, чтобы создать этот пример.
whdlOFDMReceiver.slx
— Верхний уровень модель Simulink приемника OFDM
whdlOFDMRx.slx
— Образец модели используется whdlOFDMReceiver.slx
whdlexamples.OFDMReceiverInit.m
— Скрипт инициализации для whdlOFDMReceiver.slx
инициализированный в коллбэке InitFcn модели.
whdlexamples.OFDMRxParameters.m
— Функция инициализации для whdlOFDMRx.slx
инициализированный в Рабочем пространстве модели и коллбэке InitFcn модели
whdlexamples.OFDMTx.m
— Плавающая точка MATLAB эквивалентный передатчик функционирует, чтобы сгенерировать форму волны Tx в whdlexamples.OFDMReceiverInit.m
Этот рисунок показывает модель верхнего уровня в этом примере.
Входные параметры модели:
dataIn — Входные данные в виде комплекса подписали 16-битный сигнал, произведенный в 1.92 членах Шотландского парламента.
validIn — Управляющий сигнал подтвердить dataIn в виде булева скаляра.
impairmentControl — Соедините шиной сигнал управлять нарушениями канала.
Шина impairmentControl включает следующие сигналы:
frequencyOffsetCorrectionType — Управляющий сигнал указать, ли к use internally estimated frequency offset
или use externally provided frequency offset
для коррекции смещения в виде булева скаляра.
externalFrequencyOffset — Действительный 14-битный CFO со знаком с диапазоном от-7400 Гц до 7 400 Гц, обеспеченных внешне для коррекции CFO.
channelEqualizerControl — Управляющий сигнал указать, разрешить ли или отключить эквализацию канала в виде булева скаляра.
CPECorrectionControl — Управляющий сигнал указать, разрешить ли или отключить коррекцию CPE в виде булева скаляра.
Выходные параметры модели:
выходные данные — Декодируемые биты выходных данных, возвращенные как булев скаляр.
validOut — Управляющий сигнал подтвердить выходные данные, возвращенные как булев скаляр.
diagBus — Сигнал состояния с диагностическими выходными параметрами, возвращенными как сигнал Шины.
OFDM Rx подсистема выполняет набор операций в последовательности. Эта подсистема использует whdlOFDMRx.slx
образец модели. Этот образец модели инициализируется в его Рабочем пространстве модели и коллбэке InitFcn модели с помощью whdlexamples.OFDMRxParameters
функция. Следующий рисунок показывает подсистемы верхнего уровня в образце модели.
Синхронизация и демодуляция OFDM
Синхронизация и подсистема Демодуляции OFDM выполняют частоту и синхронизации времени и демодуляцию OFDM.
Подсистема Синхронизации Частоты и Времени включает, Синхронизация Настраивают блок MATLAB function и Оценку CFO и Коррекцию и подсистему Обнаружения SS.
Оценка CFO и Коррекция и подсистема Обнаружения SS включают Оценку CFO и подсистему Обнаружения SS и Коррекцию Частоты подсистема Nx, которые выполняют коррекцию частоты для входного сигнала. Оценка от Оценки CFO и подсистемы Обнаружения SS используется для коррекции частоты, если сигнал frequencyOffsetCorrectionType на интерфейсе модели верхнего уровня установлен в use internally estimated frequency offset
. externalFrequencyOffset используется для коррекции частоты, если сигнал frequencyOffsetCorrectionType установлен в use externally provided frequency offset
.
Оценка CFO и подсистема Обнаружения SS включают подсистему Оценки CFO, Запустите блок MATLAB function Контроллера, Синхронизирующую Поисковую подсистему Сигнала и Коррекцию Частоты 1x подсистема, которая выполняет коррекцию частоты на входном сигнале.
Подсистема Оценки CFO использует циклический префиксный метод корреляции, чтобы оценить CFO входного сигнала. Подсистема CyclicPrefixCorrelator оценивает одно значение CFO для каждых шести символов OFDM путем усреднения всех оценок в шести символах OFDM. Подсистема AngleAtMaximum выбирает самый сильный пик корреляции для каждых шести символов OFDM и записывает его угол фазы. Подсистема AngleFilter реализует фильтр усреднения, чтобы составить в среднем все записанные углы фазы на срок 12 мс. Получившийся угол фазы служит итоговой оценкой CFO.
Синхронизирующая Поисковая подсистема Сигнала реализует корреляцию SS. Обнаружение SS выполняется путем непрерывной перекрестной корреляции полученного сигнала с сигналом SS во временном интервале. Кроме того, энергия сигнала в промежутке коррелятора вычисляется на каждом временном шаге и затем масштабируется, чтобы сгенерировать порог. Подсистема Искателя Пика Max начинает искать максимальный пик корреляции после 12 мс и ищет каждое окно времени на 3 мс и записывает смещение синхронизации. Контроллер Запуска функциональный блок указывает на конец длительности на 12 мс к подсистеме Искателя Пика Max.
Смещение синхронизации, зарегистрированное в максимальном значении корреляции Искателем Пика Max, передается Синхронизации, Настраивают блок MATLAB function, чтобы синхронизировать синхронизацию.
Блок OFDM Demodulator демодулирует синхронизируемые выборки и генерирует поднесущие.
Образуйте канал и оценка CPE и коррекция
Канал и подсистема Оценки и Коррекции CPE оценивают частотную характеристику канала, компенсируют канал, выполняют оценку CPE и корректируют CPE.
Блок MATLAB function Парсинга Опорного сигнала разделяет символы OFDM, зарезервированные для вычисления оценок канала.
Символы OFDM, зарезервированные для вычисления оценок канала, передаются потоком через подсистему Оценки Канала. Блок OFDM Channel Estimator составляет в среднем оценки от этих двух символов и выводит итоговые оценки канала. Оценки передаются потоком в подсистему Эквализации Канала, которая хранит оценки в RAM и выполняет эквализацию канала частотного диапазона для всех остающихся символов OFDM в системе координат.
Блок MATLAB function Парсинга Заголовка и Данных разделяет символы OFDM, соответствующие символы данных и заголовок.
Частотный диапазон компенсируемый каналом поток поднесущих данных через Общую подсистему Оценки погрешности и Коррекции Фазы. В процессе оценки частоты всегда существует маленькая ошибка расчета из-за нарушений канала. Эта ошибка расчета приводит к остаточной частоте, возмещенной в компенсируемых каналом поднесущих. Это приводит CPE ко всем поднесущим в символе OFDM и изменениях от символа до символа. Подсистема Оценки CPE оценивает CPE на каждом символе OFDM с помощью 12 экспериментальных поднесущих. Пилоты являются известными поднесущими, и любое вращение фазы в полученных символах оценивается при помощи пилотов. Оценки, чертившие от того же символа, усреднены, чтобы получить итоговую оценку. Символ хранится в Буферном блоке MATLAB function Символа во время оценки. Если оценка готова, символ читается из этого буферного блока, и подсистема Коррекции CPE корректирует CPE в поднесущих данных с той оценкой.
Заголовок и восстановление данных
Подсистема Заголовка и Восстановления данных восстанавливает информацию о заголовке и биты данных.
Подсистема Восстановления Заголовка восстанавливает информацию о заголовке, чтобы декодировать биты данных. Частотный диапазон компенсируемый каналом поток поднесущих заголовка в подсистему Восстановления Заголовка. Блок LTE Symbol Demodulator выполняет BPSK мягкая демодуляция символа. Подсистема Кодирования Канала оборудована блоком Viterbi Decoder, который выполняет 1/2 уровень viterbi декодирование. Блок General CRC Syndrome Detector HDL Optimized выполняет 8-битную контрольную сумму CRC и подтверждает декодируемые биты от блока Viterbi Decoder. Блок детектора синдрома CRC генерирует сигнал ошибки, если контрольная сумма CRC перестала работать.
Подсистема Восстановления данных использует информацию о заголовке, чтобы декодировать биты данных. Информация о заголовке хранится в регистрах. Эти регистры используются, чтобы получить доступ к информации о заголовке. Блок LTE Symbol Demodulator выполняет мягкий битный BPSK, QPSK, 16-QAM или 64-QAM демодуляция символа, сопоставленная с типом модуляции, полученным из информации о заголовке. Подсистема Кодирования Канала оборудована блоками Depuncturer и Viterbi Decoder. Каждый уровень кода присвоен предопределенный проколотый векторный шаблон. На основе уровня кода, полученного из информации о заголовке, подсистема Кодирования Канала выполняет depuncturing, сопровождаемый декодированием viterbi. Декодируемые биты передаются потоком через подсистему Дескремблера. Блок General CRC Syndrome Detector HDL Optimized выполняет 32-битную контрольную сумму CRC и подтверждает дескремблированные биты. Блок детектора синдрома CRC генерирует сигнал ошибки, если контрольная сумма CRC перестала работать.
Диагностическое формирование шины
Диагностическая подсистема Формирования Шины создает сигнал шины для некоторых сигналов состояния приемника. Эта шина может использоваться, чтобы анализировать приемник, когда развернуто на оборудование.
Биты данных декодируются в подсистеме Восстановления данных и потоке битов из приемника и хранятся к рабочей области в подсистеме Битов данных Получения в модели приемника верхнего уровня. Подсистема Декодера Диагностики декодирует закодированную источником информацию о заголовке и считает количество синхронизируемых систем координат, количество передач CRC заголовка и отказов, и количество передач CRC данных и отказов в сигнале шины сформированными в Диагностической подсистеме Формирования Шины. Блоки отображения Simulink отображают информацию о Декодере Диагностики.
Соедините приемник спина к спине с передатчиком в HDL пример Передатчика OFDM и запустите модель Simulink. Для получения дополнительной информации о том, как соединить передатчик, и модели Simulink приемника спина к спине видят HDL OFDM пример Ссылок MATLAB.
Следующие файлы описывают процедуру, чтобы инициализировать, сгенерировать входные параметры, запуститься и проверить whdlOFDMReceiver.slx
модель с помощью whdlexamples.OFDMReceiverInit.m
скрипт инициализации. Можно выбрать пользовательскую форму волны Tx и нарушение канала по вашему выбору от раздела Custom Frame Configuration в этих файлах.
OFDMRxRealTimeSimulationDisplay.m
- Этот скрипт подражает каналу в сценарии в реальном времени. Можно выбрать любое доступное нарушение канала и запустить скрипт. Скрипт отображает выводы и генерирует графики предполагаемого смещения частоты и корреляции SS.
OFDMRxFadingChannelResponseDisplay.m
- Этот скрипт подражает только исчезающему каналу. Можно выбрать только исчезающее нарушение канала и запустить скрипт. Скрипт отображает выводы и генерирует графики импульсной характеристики канала и сравнение предполагаемой частотной характеристики с частотной характеристикой, выведенной из импульсной характеристики.
ПРИМЕЧАНИЕ: Эти файлы не доступны на пути поиска файлов MATLAB. Чтобы скопировать эти файлы локально в пользовательский путь, необходимо открыть этот пример.
whdlexamples.OFDMRx.m
скрипт является плавающей точкой MATLAB, эквивалентной из образца модели whdlOFDMRx.slx
. Модель Simulink и плавающая точка MATLAB эквивалентный скрипт сравнены в HDL OFDM пример Ссылок MATLAB.
Запустите OFDMRxRealTimeSimulationDisplay.m
скрипт, чтобы запустить приемник.
>> OFDMRxRealTimeSimulationDisplay
### Starting serial model reference simulation build ### Successfully updated the model reference simulation target for: whdlOFDMRx Build Summary Simulation targets built: Model Action Rebuild Reason ================================================================================ whdlOFDMRx Code generated and compiled whdlOFDMRx_msf.mexw64 does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 7m 34.747s Number of header CRC failed = 0 per 4 Number of bit errors = 0 per 15208
Запустите OFDMRxFadingChannelResponseDisplay.m
скрипт, чтобы запустить приемник.
>> OFDMRxFadingChannelResponseDisplay
### Starting serial model reference simulation build Build Summary 0 of 1 models built (1 models already up to date) Build duration: 0h 2m 44.917s Number of header CRC failed = 0 per 1 Number of bit errors = 0 per 3162
Вы видите график созвездия на осциллографе созвездия. Осциллографы могут быть активированы при помощи кнопки Control Scope в whdlOFDMReceiver.slx
модель.
Чтобы сгенерировать HDL-код для этого примера, у вас должен быть HDL Coder™. Используйте makehdl
и makehdltb
команды, чтобы сгенерировать HDL-код и испытательный стенд HDL для OFDM Rx подсистема. Время генерации испытательного стенда зависит от времени симуляции.
Получившийся HDL-код синтезируется для оценочной платы Xilinx® Zynq®-7000 ZC706. Место сообщения и использование ресурса маршрута и показывают в приведенной ниже таблице. Максимальная частота операции составляет 192 МГц.
Resources Usage _______________ _____ Slice Registers 45122 Slice LUT 36246 RAMB36 8 RAMB18 9 DSP48 95