В этом примере показано, как реализовать беспроводной передатчик на основе OFDM в Simulink ®, оптимизированный для генерации кода HDL и реализации аппаратного обеспечения.
В этом примере показана пользовательская конструкция передатчика на основе мультиплексирования с ортогональным частотным разделением каналов (OFDM). Эта модель передатчика принимает полезные данные через входной порт. Он позволяет выбрать тип модуляции и скорость проколотого сверточного кода данных из набора значений. Эти два параметра управляют эффективной скоростью передачи данных и обеспечиваются через входные порты передатчика. Максимальная скорость передачи данных, поддерживаемая передатчиком, составляет 3 Мбит/с. Передатчик также принимает входной действительный сигнал для управления передачей.
Передатчик в этом примере работает совместно с приемником в примере приемника OFDM HDL. Передатчик имеет функцию эквивалента MATLAB ® с плавающей запятой, описанную в примере ссылок OFDM MATLAB.
В этом разделе поясняются спецификации передатчика, относящиеся к конфигурации и структуре кадра OFDM, полосе пропускания и частоте дискретизации.
Модель передатчика принимает два параметра, modTypeIndex и codeRateIndex, которые позволяют указать тип модуляции и скорость проколотого сверточного кода данных соответственно. Эти два параметра поясняются в следующих таблицах:
modTypeIndex
Value Represents Modulation Type
_____ __________________________
0 BPSK
1 QPSK
2 16QAM
3 64QAM
codeRateIndex
Value Represents Code Rate
_____ ____________________
0 1/2
1 2/3
2 3/4
3 5/6
Структура кадра OFDM
Каждая система OFDM имеет структуру кадра, которая показывает распределение выборок в частотной области по всем ее поднесущим. Структура рамы показана на рисунке. Каждый символ OFDM состоит из 72 поднесущих, и каждый кадр OFDM состоит из 36 символов OFDM. Длительность кадра составляет 3 мс Первый символ OFDM формируется последовательностью синхронизации (SS), второй и третий символы формируются опорными сигналами (RS), а четвертый символ формируется заголовком. Данные заполняются от пятого символа до последнего (36-го) символа. Пилот-сигналы вставляются между данными так, что имеется один пилот-сигнал на каждые пять поднесущих данных, как показано ниже. Эти пилоты помогают обнаруживать и исправлять фазовые ошибки в приемнике.

Параметры OFDM, используемые в модели, приведены ниже:
Parameter Value
________________________ _________
Sample rate 1.92 Msps
Subcarrier spacing 15 kHz
FFT Length 128
Bandwidth of OFDM signal 1.4 MHz
Active Subcarriers 72
Left guard subcarriers 28
Right guard subcarriers 27
Cyclic Prefix length 32
Data symbols per frame 32
Pilots per data symbol 12
На следующем рисунке показана высокоуровневая архитектура передатчика OFDM. Существует пять различных сигналов, которые формируют кадр OFDM: SS, RS, Header, Pilots и Data. SS, RS и пилоты одинаковы для каждого кадра. Они хранятся в отдельных таблицах поиска (LUT) и доступны при необходимости. Заголовки и данные изменяются в зависимости от входных данных датчика. Биты заголовка формируются на основе типа входной модуляции и значений кодовой скорости. Эти биты заголовка обрабатываются через цепочку заголовков, как показано на рисунке. Данные полезной нагрузки подаются на вход передатчика. Эти данные обрабатываются в цепочке данных на нескольких этапах. Отдельные этапы в цепочках заголовков и данных поясняются в последующих разделах.
Эти пять сигналов мультиплексируются на основе их действительных сигналов и сохраняются в ОЗУ. ОЗУ хранит эти сигналы в течение одного кадра. Данные, хранящиеся в ОЗУ, считываются и модулируются блоком модулятора OFDM. Модулированный сигнал OFDM фильтруется с частотой полосы пропускания 1,4 МГц и отправляется в качестве выходного сигнала передатчика.

Этот пример содержит две модели Simulink, сценарий инициализации и функцию MATLAB:
whdlOFDMTransmitter.slx - Это модель верхнего уровня в этом примере. Он имеет подсистему передатчика OFDM, которая ссылается на whdlOFDMTx.slx модель. Имеется схема внешнего интерфейса для подсистемы передатчика OFDM, которая обеспечивает входы и собирает выходные сигналы от подсистемы. При моделировании этой модели будут запущены оставшиеся три файла.
whdlexamples.OFDMTransmitterInit - Этот сценарий инициализирует whdlOFDMTransmitter.slx модель. Сценарий вызывается в InitFcn обратный вызов модели.
whdlOFDMTx.slx - Эта модель реализует датчик с полной конфигурируемостью.
whdlexamples.OFDMTxParameters - Эта функция генерирует параметры, необходимые для whdlOFDMTx.slx модель. Эта функция вызывается в рабочей области модели.
whdlOFDMTransmitter.slx модель показывает подсистему передатчика OFDM и ее интерфейс.

Входные данные модели:
modTypeIndex - выбирает тип модуляции символов для применения к данным полезной нагрузки, указанный как скаляр ufix2. Этот порт принимает значения 0, 1, 2, и 3, которые соответствуют типам модуляции BPSK, QPSK, 16QAM и 64QAM.
codeRateIndex - выбирает кодовую скорость проколотого сверточного кода для применения к данным полезной нагрузки, заданную как скаляр ufix2. Этот порт принимает значения 0, 1, 2, и 3, которые соответствуют кодовым скоростям 1/2, 2/3, 3/4 и 5/6.
data - входные данные полезной нагрузки, указанные как логический скаляр.
valid - действительный сигнал для входных данных, указанный как логический скаляр.
Все входные порты работают с частотой выборки 30,72 мс для поддержки различных конфигураций.
Выходные данные модели:
txData - выходной сигнал датчика, возвращаемый в виде сложного скаляра с типом данных fixdt (1,16,13), дискретизированным через 1,92 мс.
txValid - управляющий сигнал, проверяющий txData, возвращаемый как логический скаляр, дискретизированный на 1,92 мс.
ready - управляющий сигнал, который используется для выборки входных данных, значений modTypeIndex и codeRateIndex, заданных как логический скаляр, дискретизированный через 30,72 мс.
Селектор индекса
Подсистема выбора индекса выполняет выборку сигналов modTypeIndex и codeRateIndex на переднем крае сигнала готовности. Подсистема сохраняет предыдущие выходные сигналы, если в сигнале готовности отсутствует передний фронт.

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

whdlOFDMTx.slx модель вызывается в подсистеме передатчика OFDM. Он генерирует сигнал передатчика OFDM путем обработки входных сигналов в несколько каскадов, как показано ниже.
whdlOFDMTx

Контроллер кадров и входной дискретизатор
Подсистема Frame Controller и Input Sampler генерирует управляющие сигналы для более поздних этапов модели. Подсистема также генерирует готовый выходной сигнал, который используется для внешнего сопряжения. Эта подсистема выполняет выборку входных значений modTypeIndex и codeRateIndex вместе с первым допустимым входным образцом. Размер транспортного блока для текущего кадра выбирается из LUT размера транспортного блока на основе выборочных значений modTypeIndex и codeRateIndex. Подсистема также генерирует управляющие сигналы для генерации заголовка, за которыми следует генерация преамбулы вместе с первым действительным образцом. Генерация преамбулы относится к генерации сигналов SS, RS и пилот-сигналов. Управляющий сигнал для генерирования данных подается либо после 9562 (максимальный размер транспортного блока, соответствующий 64-QAM модуляции и 5/6 кодовой скорости) тактовых циклов из первой действительной выборки, либо после того, как длина транспортного блока действительных входных данных сохраняется для текущего кадра, в зависимости от того, что происходит позже. Наряду с сигналом управления данными подается сигнал ofdmModReady, который указывает на то, что блок модулятора OFDM начинает модуляцию.

Генератор рам
Подсистема генератора кадров генерирует сигналы SS, RS, Header, Pilot и Data, которые позже модулируются OFDM. Подсистема генерации сигналов управления преамбулой, которая находится в подсистеме генератора кадров, разделяет входной сигнал управления prebureSet на сигналы управления ss set, rs set и pilot set, которые генерируют сигналы SS, RS и Pilot соответственно.
Генератор кадров/последовательность синхронизации
Подсистема Synchronization Sequence принимает управляющий сигнал ss, генерируемый контроллером кадров и подсистемой входных выборок. Он формируется с учетом длины последовательности SS. Счетчик продолжает увеличиваться и возвращает SS из LUT. Как только аппарат ss становится неактивным, счетчик останавливается. Выход из LUT увеличивается в 2 раза для поддержания того же времени выборки, что и в подсистемах заголовка и данных. Подсистемы опорных сигналов и пилот-сигналов работают аналогичным образом, сохраняя последовательности в LUT и обращаясь к ним при необходимости.

Генератор рам/заголовок
Подсистема Header принимает в качестве входных данных modTypeIndex, codeRateIndex и fftLenIndex. Сигнал heaseSet запускает формирование заголовка. Функция формирования заголовка преобразует значения modTypeIndex и codeRateIndex в их двоичные эквиваленты. Например, значение modTypeIndex, равное 1 преобразуется в два бита 01. Аналогично, значения codeRateIndex преобразуются в два эквивалентных бита. Дополнительные сведения об этих индексах см. в спецификации датчика. fftLenIndex не конфигурируется, и его значение фиксируется 0. Он преобразуется в 000, которая представляет длину БПФ 128. fftLenIndex, modTypeIndex и codeRateIndex представлены с использованием 3, 2 и 2 битов, образуя в общей сложности 7 битов. Кроме того, добавлено 7 резервных битов, все в настоящее время установлены в 0, образуя в общей сложности 14 битов заголовка.
Эти 14 битов обрабатываются, как показано на рисунке. Для правильного обнаружения ошибок, General CRC Generator HDL Optimized block pad 16 CRC bits с [16 12 5 0] в качестве многочлена CRC. Блок сверточного кодера кодирует эти 30 битов, то есть 14 + 16, с помощью [171 133] в качестве полинома и длины ограничения 7. Кодирование обрабатывается в режиме завершения, добавляя 6 пустые биты, то есть 7 & endash; 1, к дополненным данным CRC. После кодирования эти 36 битов приводят к 72 битам из-за кодирования со скоростью 1/2. Выходной сигнал блока сверточного кодера является двухэлементным вектором, который сериализуется в сериализованной подсистеме с использованием блока Serializer1D (HDL Coder), что приводит к переходу скорости на коэффициент 2. Сериализованные данные перемежаются с использованием блока перемежителя с 72 в качестве максимального размера блока и 18 в качестве количества столбцов. Для получения дополнительной информации о блоке перемежителя см. пример перемежителя HDL и обращенного перемежителя. Перемеженные биты модулируются BPSK с использованием блока модулятора символов LTE для формирования символа заголовка.

Генератор кадров/данные
Подсистема Data хранит входные данные полезной нагрузки, dataIn и обрабатывает их через цепочку Data.

Генератор кадров/данных/данных и формирование управляющего сигнала
Подсистема генерации данных и управляющих сигналов состоит из оперативной памяти, в которой хранятся входные полезные данные dataIn. Сигнал dataSet считывает данные из этого ОЗУ. Эта подсистема генерирует начальные, конечные и действительные управляющие сигналы для данных ОЗУ. Он также выбирает вектор прокола на основе codeRateIndex.

Генератор кадров/данные/цепочка данных
Блок «General CRC Generator HDL Optimized» добавляет 32-битный CRC к данным полезной нагрузки из ОЗУ с помощью [32 26 23 22 16 12 11 10 8 7 5 4 2 1 0] в качестве многочлена CRC. Эти дополненные CRC данные скремблируются как
многочлен и [1 0 1 1 1 0 1] в качестве начального состояния. Блок сверточного кодера кодирует скремблированные данные в режиме завершения с помощью [171 133] как полином и длина ограничения как 7. Закодированный выходной сигнал прокалывается с использованием блока прокола с вектором прокола, выбранным в подсистеме генерации данных и управляющего сигнала. Выходной сигнал блока Puncturer является двухэлементным вектором и сериализуется с использованием блока Serializer1D (HDL Coder). Результирующие данные перемежаются в подсистеме перемежителя символов, где подсистема разделения данных на символы разбивает входные данные на символы, и каждый из этих символов перемежается в битах с использованием блока перемежителя с 360 в качестве максимального размера блока и 15 в качестве количества столбцов. Поддерживаемые размеры символов входных данных для блока перемежителя составляют 60, 120, 240 и 360 для модуляций BPSK, QPSK, 16-QAM и 64-QAM соответственно. Для получения дополнительной информации о блоке перемежителя см. пример перемежителя HDL и обращенного перемежителя. Блок модулятора символов LTE модулирует перемеженные данные с использованием шаблона модуляции, выбранного на основе входного значения modTypeIndex.

Мультиплексор
Подсистема мультиплексора мультиплексирует сигналы SS, RS и пилот-сигналы в подсистеме мультиплексных сигналов преамбулы и сигналы заголовка и данных в подсистеме мультиплексных сигналов заголовка и данных на основе действительных сигналов, генерируемых подсистемой генератора кадров.

Формирование кадра и модуляция OFDM
Подсистема формирования кадров и модуляции OFDM принимает сигналы преамбулы Data и данных, а затем мультиплексирует и записывает их в двухпортовое RAM (кодер HDL). Это ОЗУ считывает и записывает данные с различной скоростью. ОЗУ записывает данные через 61,44 мс. ОЗУ заполняется данными таким образом, что формирует структуру кадра OFDM, как показано в разделе «Спецификация передатчика».

Подсистема формирования достоверности модулятора OFDM генерирует действительный входной сигнал для блока модулятора OFDM с частотой дискретизации 1,92 мс и генерирует адрес ОЗУ для считывания данных из ОЗУ. Действительный сигнал синхронизирован с сигналом готовности модулятора OFDM. Подсистема Make OFDM Valid Continuous выбирает выходной сигнал модулятора OFDM на основе сигнала validIn. Он выдает действительный выход OFDM в присутствии сигнала validIn и фиктивного символа OFDM в отсутствие сигнала validIn.
Оптимизированный дискретный фильтр FIR HDL
Блок Discrete FIR Filter HDL Optimized (DSP System Toolbox) фильтрует выходные данные подсистемы Make OFDM Valid Continuous с частотой полосы пропускания 1,4 МГц. whdlexamples.OFDMTxParameters функция вычисляет коэффициенты фильтра. Выходной сигнал фильтра является конечным выходным сигналом передатчика.
Передатчик может быть соединен с приемником, что объясняется в примере приемника OFDM HDL. Для получения дополнительной информации о том, как использовать модели Simulink передатчика и приемника, см. пример ссылок на OFDM MATLAB HDL.
Для запуска модели датчика OFDMTxVerification.m В этом примере приводится сценарий. Сценарий выбирает пользовательскую конфигурацию кадра, полезные данные и моделирует модель. Сценарий также собирает выходные данные моделирования и проверяет их.
ПРИМЕЧАНИЕ: Эти файлы недоступны в пути поиска MATLAB. Чтобы скопировать эти файлы локально в путь пользователя, необходимо открыть этот пример.
В этом разделе модель Simulink передатчика OFDM проверяется путем сравнения ее выходного сигнала с эквивалентной функцией с плавающей запятой. whdlexamples.OFDMTx. Для получения дополнительной информации об этой функции MATLAB см. пример ссылок на OFDM MATLAB HDL. Для сравнения выходных данных модели Simulink с функцией MATLAB выполните команду OFDMTxVerification.m сценарий.
>> OFDMTxVerification
### Starting serial model reference simulation build ### Successfully updated the model reference simulation target for: whdlOFDMTx Build Summary Simulation targets built: Model Action Rebuild Reason ================================================================================ whdlOFDMTx Code generated and compiled whdlOFDMTx_msf.mexa64 does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 2m 49.3s



Для создания кода HDL в этом примере необходимо иметь Coder™ HDL. Использовать makehdl и makehdltb команды для генерации кода HDL и средства тестирования HDL для подсистемы передатчика OFDM. Время генерации Testbench зависит от времени моделирования.
Полученный код HDL синтезируется для платы оценки Xilinx ® Zynq ® -7000 ZC706. Данные об использовании ресурсов для размещения и маршрутизации приведены в таблице ниже. Максимальная частота работы - 230 МГц.
Resources Usage
_______________ _____
Slice Registers 6373
Slice LUT 4197
RAMB36 5
RAMB18 15
DSP48 24