Приемник OFDM HDL

Этот пример показывает, как реализовать беспроводной приемник на основе 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 Transmitter. Приемник в этом примере имеет эквивалентную функцию MATLAB ® с плавающей точкой, описанную в примере HDL OFDM MATLAB References.

Архитектура модели

Следующий рисунок показывает архитектуру приемника OFDM. Приемник дискретизирует вход на 1.92 Msps. Эти выборки поступают в Rx-фильтр. Выход из потока Rx-фильтра в Frequency Estimator и Frequency Corrector. Оценщик Частоты и Корректор Частоты оценивают и корректируют CFO соответственно и поток выборок в Детектор Синхронизирующей Последовательности (SS). Для синхронизации во времени используется выход SS Detector. Поток синхронизированных по времени выборок в демодулятор OFDM, который демодулирует вход и генерирует поднесущие частотного диапазона. Анализатор поднесущей анализирует опорные поднесущие канала, поднесущие заголовка и поднесущие данных. Поток поднесущих ссылок канала в блок оценки канала, который оценивает частотную характеристику канала. Выравниватель канала использует эти оценки, чтобы выровнять поднесущие заголовка и данных в частотный диапазон. Восстановление заголовка восстанавливает информацию заголовка с помощью выравниваемых по каналу поднесущих заголовка. Оценщик CPE оценивает общую фазовую ошибку (CPE) в поднесущих данных, которые исправляются корректором CPE. Data Recovery использует информацию заголовка и исправленные CPE поднесущие данных для декодирования бит данных.

Структура файла

Для создания этого примера используются две модели Simulink и три файла MATLAB.

  • whdlOFDMReceiver.slx - Модель приемника OFDM верхнего уровня Simulink

  • whdlOFDMRx.slx - Образец модели, используемая whdlOFDMReceiver.slx модель

  • whdlexamples.OFDMReceiverInit.m - Скрипт инициализации для whdlOFDMReceiver.slx инициализированный в InitFcn модели коллбэк.

  • whdlexamples.OFDMRxParameters.m - Функция инициализации для whdlOFDMRx.slx инициализированы в Рабочем пространстве Модели и InitFcn модели коллбэк

  • whdlexamples.OFDMTx.m - функция эквивалентного передатчика MATLAB с плавающей точкой для генерации формы волны передатчика. Сгенерированный сигнал передатчика используется в whdlexamples.OFDMReceiverInit.m скрипт

Интерфейс приемника

Этот рисунок показывает модель верхнего уровня в этом примере.

Входные параметры модели:

  • dataIn - Входные данные, заданные как комплексный 16-битный сигнал со знаком дискретизации на 1.92 Msps.

  • validIn - Управляющий сигнал для проверки dataIn, заданный как логический скаляр.

  • devairmentControl - сигнал шины для управления нарушениями канала.

Шина devairmentControl содержит следующие сигналы:

  • frequencyOffsetCorrectionType - Управляющий сигнал для указания, следует ли выбирать Use internally estimated frequency offset или Use externally provided frequency offset опция для коррекции смещения, заданная как логический скаляр.

  • externalFrequencyOffset - Real signed 14-bit CFO с областью значений от -7400 Гц до 7400 Гц предоставляется внешне для коррекции CFO.

  • channelEqualizerControl - сигнал управления для указания, включать или отключать эквализацию канала, заданную как логический скаляр.

  • CPECorrectionControl - сигнал управления, указывающий, следует ли включать или отключать коррекцию CPE, заданную как логический скаляр.

Выходы модели:

  • dataOut - декодированные выходные биты данных, возвращенные как логический скаляр.

  • validOut - Управляющий сигнал для проверки dataOut, возвращаемый как логический скаляр.

  • diagBus - сигнал состояния с диагностическими выходами, возвращаемый как сигнал шины.

Структура Приемника

Подсистема приемника OFDM выполняет набор операций в последовательности. Эта подсистема использует whdlOFDMRx.slx образец модели. Этот образец модели инициализируется в своем Рабочем пространстве Модели и в модели InitFcn коллбэк с помощью whdlexamples.OFDMRxParameters функция. Следующий рисунок показывает подсистемы верхнего уровня в образце модели.

Синхронизация и демодуляция OFDM

Подсистема синхронизации и демодуляции OFDM выполняет частотную и временную синхронизацию и демодуляцию OFDM.

Подсистема частотной и временной синхронизации содержит Подсистему Коррекции Времени, Подсистему Оценки и Коррекции CFO и Подсистему Обнаружения SS.

Подсистема оценки и коррекции CFO и обнаружения SS содержит Подсистему оценки и обнаружения SS и Подсистему коррекции частоты Nx, которые выполняют коррекцию частоты для входного сигнала. Оценка из подсистемы оценки CFO и обнаружения SS используется для коррекции частоты, если сигнал frequencyOffsetCorrectionType на интерфейсе модели верхнего уровня установлен в Use internally estimated frequency offset. ExternalFrequencyOffset используется для коррекции частоты, если для сигнала frequencyOffsetCorrectionType задано значение Use externally provided frequency offset.

Подсистема оценки CFO и обнаружения SS содержит подсистему оценки CFO, подсистему контроллера запуска, подсистему поиска сигнала синхронизации и подсистему коррекции частоты 1x, которые выполняют коррекцию частоты входного сигнала.

Подсистема оценки CFO использует метод циклической префиксной корреляции, чтобы оценить CFO входного сигнала. Подсистема CyclicPrefixCorrelator оценивает одно значение CFO для каждые шести символов OFDM путем усреднения всех оценок в шести символах OFDM. Подсистема AngleAtMaximum выбирает самый сильный пик корреляции для каждые шести символов OFDM и записывает его угол фазы. Подсистема AngleFilter реализует фильтр усреднения для усреднения всех зарегистрированных углов фазы в течение длительности 12 мс. Полученный угол фазы служит конечной оценкой CFO.

Подсистема Sync Signal Search реализует корреляцию SS. Обнаружение SS выполняется путем непрерывной перекрестной корреляции принимаемого сигнала с сигналом SS во временном интервале. В сложение энергия сигнала в диапазоне коррелятора вычисляется на каждом временном шаге и затем масштабируется, чтобы сгенерировать порог. Подсистема Max Peak Searcher начинает поиск максимального пика корреляции после 12 мс и ищет каждые 3 мс временного окна. Подсистема регистрирует смещение синхронизации по времени. Функциональный блок Start Controller указывает подсистеме Max Peak Searcher конец длительности 12 мс.

Смещение синхронизации, записанное максимальным значением корреляции с помощью Max Peak Searcher, передается в подсистему Timing Adjust для синхронизации синхронизации.

Блок демодулятора OFDM демодулирует синхронизированные выборки и генерирует поднесущие.

Оценка и коррекция канала и CPE

Подсистема оценки и коррекции канала и CPE оценивает частотную характеристику канала, выравнивает канал, выполняет оценку CPE и корректирует CPE.

Функциональный блок MATLAB разбора опорного сигнала разделяет символы OFDM, зарезервированные для вычисления оценок канала.

Символы OFDM, зарезервированные для вычисления оценок канала, передаются через подсистему оценки канала. Блок оценки канала OFDM усредняет оценки из двух символов и выводит окончательные оценки канала. Оценки направляются в Подсистему Эквализации Канала, которая хранит оценки в ОЗУ и выполняет эквализацию канала частотного диапазона, используя блок Уравнения OFDM для всех остальных символов OFDM в системе координат.

Функциональный блок Header и Data Parsing MATLAB разделяет символы OFDM, соответствующие символам заголовка и данных.

Поток поднесущих данных, выравниваемых по частотному диапазону каналу, через подсистему оценки и коррекции общих Фаз ошибок. В процессе оценки частоты всегда существует небольшая ошибка расчета из-за нарушений канала. Эта ошибка расчета приводит к смещению остаточной частоты в выравниваемых по каналу поднесущих. Это приводит к CPE во всех поднесущих в символе OFDM и изменяется с символа на символ. Подсистема оценки CPE оценивает CPE на каждом символе OFDM, используя 12 пилот-поднесущих. Пилот-сигналы являются известными поднесущими, и любое вращение фазы в принятых символах оценивается с помощью пилот-сигналов. Оценки, взятые из того же символа, усредняются, чтобы получить окончательную оценку. Символ сохранен в функциональном блоке MATLAB буфера символов во время оценки. Когда оценка готова, символ считывается из этого буферного блока, и подсистема коррекции CPE корректирует CPE в поднесущих данных с этой оценкой.

Восстановление заголовков и данных

Подсистема Header и Data Recovery восстанавливает информацию заголовка и биты данных.

Подсистема восстановления заголовка восстанавливает информацию заголовка для декодирования бит данных. Поток частотных диапазонов поднесущих заголовка, уравненных по каналу, в подсистему восстановления заголовка. Блок демодулятора символа LTE выполняет демодуляцию мягкого символа BPSK. Подсистема кодирования канала оснащена подсистемой Deinterleaver и блоком Viterbi Decoder. Подсистема Deinterleaver выполняет перемежение с максимальным размером блока 72 и количество столбцов по 18. Блок Viterbi Decoder выполняет декодирование 1/2 скорости viterbi. Дополнительные сведения о подсистеме Deinterleaver см. в примерах HDL-перемежителя и Deinterleaver. Блок General CRC Syndrome Detector HDL Optimized использует 16-битную контрольную сумму CRC, чтобы подтвердить декодированные биты из блока Viterbi Decoder. Если контрольная сумма CRC прекращает работать, блок General CRC Syndrome Detector HDL Optimized генерирует сигнал ошибки.

Подсистема восстановления данных использует информацию заголовка для декодирования бит данных. Информация о заголовке хранится в регистрах. Эти регистры используются для доступа к информации заголовка. Блок демодулятора символов LTE выполняет мягкий бит BPSK, QPSK, 16-QAM или 64-QAM демодуляцию символов, сопоставленную с типом модуляции, извлеченным из информации заголовка. Подсистема кодирования канала оснащена блоками Deinterleaver, Depuncturer и Viterbi Decoder. Каждой кодовой скорости назначается предопределенный проколотый векторный шаблон. Основываясь на скорости кода, извлеченной из информации заголовка, Подсистема Кодирования Канала выполняет перемежение и декодирование с последующим декодированием viterbi. Для получения дополнительной информации о блоке Deinterleaver смотрите пример HDL-перемежителя и Deinterleaver. Декодированные биты передаются через подсистему Descrambler. Блок General CRC Syndrome Detector HDL Optimized использует 32-битную контрольную сумму CRC для проверки дескремблированных бит. Если контрольная сумма CRC прекращает работать, блок General CRC Syndrome Detector HDL Optimized генерирует сигнал ошибки.

Формирование диагностической шины

Подсистема формирования диагностической шины создает сигнал шины для некоторых сигналов состояния приемника. Эта шина может использоваться для анализа приемника при развертывании на оборудовании.

Биты данных декодируются в Подсистеме Восстановления Данных. Поток декодированных бит из приемника и сохранен в рабочей области в подсистеме Capture Data Bits в модели приемника верхнего уровня. Подсистема декодера диагностики декодирует кодированную источником информацию заголовка и подсчитывает количество синхронизированных систем координат, количество проходов CRC заголовка и отказов, а также количество проходов CRC данных и отказы в сигнале шины, сформированном в подсистеме формирования диагностической шины. Блоки отображения Simulink отображают информацию о декодере диагностики.

Запуск приемника

Соедините приемник назад к передатчику в примере HDL OFDM Transmitter и запустите модель Simulink. Для получения дополнительной информации о том, как соединить передатчик и модели приемника Simulink назад-назад, смотрите пример HDL OFDM MATLAB References.

Следующие файлы описывают процедуру, чтобы инициализировать, сгенерировать входы, запустить и проверить whdlOFDMReceiver.slx модели с использованием whdlexamples.OFDMReceiverInit.m скрипт инициализации. Вы можете выбрать пользовательскую форму волны передатчика и ухудшение канала по вашему выбору из раздела Custom Frame Configuration в этих файлах.

  • OFDMRxRealTimeSimulationDisplay.m - Этот скрипт имитирует канал в сценарии реального времени. Можно выбрать любое доступное ухудшение канала и запустить скрипт. Скрипт отображает выходы и генерирует графики предполагаемого смещения частоты и корреляции SS.

  • OFDMRxFadingChannelResponseDisplay.m - Этот скрипт имитирует только канал с замираниями. Можно выбрать только затухающее ухудшение канала и запустить скрипт. Скрипт отображает выходы и генерирует графики импульсной характеристики канала и сравнения оцененной частотной характеристики с частотной характеристикой, полученной из импульсной характеристики.

Примечание.Эти файлы недоступны в пути поиска файлов MATLAB. Чтобы скопировать эти файлы локально в пользовательский путь, необходимо открыть этот пример.

Верификация и результаты

The whdlexamples.OFDMRx.m скрипт является эквивалентом образца модели с плавающей точкой MATLAB whdlOFDMRx.slx. Модель Simulink и эквивалентный скрипт MATLAB с плавающей точкой сравниваются в примере HDL OFDM MATLAB References.

Запуск 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.mexa64 does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 7m 49.951s

 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 3m 24.336s

 Number of header CRC failed = 0 per 1

 Number of bit errors = 0 per 3162

Вы можете увидеть созвездие график на возможностях созвездий. Активировать возможности можно при помощи кнопки Control Возможностей в whdlOFDMReceiver.slx модель.

Генерация HDL-кода

Чтобы сгенерировать HDL-код для этого примера, вы должны иметь HDL- Coder™. Использование makehdl и makehdltb команды для генерации HDL-кода и HDL-теста для подсистемы приемника OFDM. Время генерации теста зависит от времени симуляции.

Получившийся HDL-код синтезируется для платы оценки ZC706 Xilinx ® Zynq ® -7000. Заполнение должностей и распределение ресурсов показаны в таблице ниже. Максимальная частота операции - 202 МГц.

       Resources       Usage
    _______________    _____

    Slice Registers    46642
    Slice LUT          38457
    RAMB36             14   
    RAMB18             12   
    DSP48              88   

См. также

Блоки

Похожие темы