Этот пример показывает, как реализовать беспроводной передатчик на основе OFDM в Simulink ®, который оптимизирован для генерации HDL-кода и аппаратной реализации.
Этот пример показывает пользовательский проект передатчика на основе ортогонального частотного разнесения (OFDM). Эта модель передатчика принимает данные полезной нагрузки через порт входа. Это позволяет вам выбрать тип модуляции и проколотую сверточную скорость кода данных из множества значений. Эти два параметра управляют эффективной скоростью передачи данных и предоставляются через входные порты передатчика. Максимальная скорость передачи данных, поддерживаемая передатчиком, составляет 3 Мбит/с. Передатчик также принимает вход действительный сигнал для управления передачей.
Передатчик в этом примере работает в сочетании с приемником в примере HDL OFDM Receiver. Передатчик имеет эквивалентную функцию MATLAB ® с плавающей точкой, описанную в примере HDL OFDM MATLAB References.
В этом разделе поясняются спецификации передатчика, связанные с строением и структурой системы координат 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 и данные. SS, RS и пилот-сигналы одинаковы для каждой системы координат. Они хранятся в отдельных интерполяционных таблицах (LUT) и доступны при необходимости. Заголовок и данные варьируются в зависимости от входов, предоставленных передатчику. Биты заголовка формируются на основе типа входа модуляции и значений кодовой скорости. Эти биты заголовка обрабатываются через цепь заголовков, как показано на рисунке. Данные полезной нагрузки предоставляются как вход передатчику. Эти данные обрабатываются на нескольких этапах в цепи данных. Отдельные этапы в цепях заголовков и данных описаны в следующих разделах.
Эти пять сигналов мультиплексируются на основе их действительных сигналов и сохраняются в ОЗУ. ОЗУ содержит эти сигналы в течение длительности одной системы координат. Данные, сохраненные в ОЗУ, считываются и модулируются блоком OFDM Modulator. Модулированный сигнал OFDM фильтруется с частотой полосы пропускания 1,4 МГц и отправляется как выход передатчика.
Этот пример содержит две модели Simulink, скрипт инициализации и функцию MATLAB:
whdlOFDMTransmitter.slx
- Это модель верхнего уровня в этом примере. Он имеет подсистему передатчика OFDM, которая ссылается на whdlOFDMTx.slx
модель. Существует схема внешнего интерфейса для подсистемы передатчика OFDM, которая обеспечивает входы и собирает выходы подсистемы. Симуляция этой модели запускает оставшиеся три файла.
whdlexamples.OFDMTransmitterInit
- Этот скрипт инициализирует whdlOFDMTransmitter.slx
модель. Скрипт вызывается в InitFcn
коллбэк модели.
whdlOFDMTx.slx
- Эта модель реализует передатчик с полной конфигурационностью.
whdlexamples.OFDMTxParameters
- Эта функция генерирует параметры, необходимые для whdlOFDMTx.slx
модель. Эта функция вызывается в Рабочем пространстве модели модели.
The whdlOFDMTransmitter.slx
модель показывает подсистему OFDM Transmitter и ее интерфейс.
Входные параметры модели:
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 Msps для поддержки различных строений.
Выходы модели:
txData - Выход передатчика, возвращаемый как комплексный скаляр с типом данных fixdt (1,16,13), выбранным в 1,92 Msps.
txValid - Управляющий сигнал, который проверяет txData, возвращаемый в виде логического скаляра, выбранного при 1.92 Msps.
ready - Управляющий сигнал, который используется для выборки входных данных, modTypeIndex и значений codeRateIndex, заданных как логический скаляр, дискретизированный при 30.72 Msps.
Селектор индексов
Подсистема выбора индексов дискретизирует сигналы modTypeIndex и codeRateIndex на восходящем ребре сигнала готовности. Подсистема сохраняет предыдущие выходы, если на сигнале готовности нет увеличивающегося ребра.
Данные и действительный селектор
Подсистема Data and Valid Selector выбирает входные полезные данные и входной допустимый сигнал на основе сигнала готовности.
The whdlOFDMTx.slx
модель вызывается в пределах Подсистемы передатчика OFDM. Он генерирует сигнал передатчика OFDM путем обработки входных сигналов в несколько этапов, как показано ниже.
whdlOFDMTx
Кадровый контроллер и входной дискретизатор
Подсистема Frame Controller и Input Sampler генерирует сигналы управления для последующих этапов модели. Подсистема также генерирует готовый выходной сигнал, который используется для внешнего взаимодействия. Эта подсистема производит выборку входных значений modTypeIndex и codeRateIndex вместе с первой допустимой входной выборкой. Размер транспортного блока для текущей системы координат выбирается из LUT размера транспортного блока на основе выборочных значений modTypeIndex и codeRateIndex. Подсистема также генерирует сигналы управления для генерации заголовка с последующей генерацией преамбулы вместе с первой действительной выборкой. Генерация преамбулы относится к генерации сигналов SS, RS и Pilot. Сигнал управления для генерации данных утверждается либо после тактовых циклов 9562 (максимальный размер транспортного блока, соответствующий 64-QAM модуляции и 5/6 кодовой скорости) из первой действительной выборки, либо после того, как длина транспортного блока действительных входных данных сохранена для текущей системы координат, в зависимости от того, что будет позже. Наряду с сигналом управления данными утверждается сигнал ofdmModReady, который указывает блок OFDM Modulator, чтобы начать модуляцию.
Система координат
Подсистема Системы координат Generator генерирует сигналы SS, RS, Header, Pilot и Данных, которые позже модулируются OFDM. Подсистема Generate Preamble Control Signals, которая находится в Подсистеме Генератора Систем координат, разделяет входной сигнал preambleSet управления на ss set, rs set и пилот-сигналы управления, которые генерируют SS, RS и Пилот сигналы, соответственно.
Система координат синхронизации
Подсистема последовательности синхронизации принимает сигнал управления ss set, сгенерированный из подсистемы Контроллер и Input Sampler. Он генерируется с учетом длины последовательности SS. Счетчик продолжает увеличиваться и возвращает SS из LUT. Когда ss set становится неактивным, счетчик останавливается. Выход от LUT увеличивается в 2 раза, чтобы сохранить тот же шаг расчета, что и у подсистем Header и данные. Опорные сигналы и подсистемы управления работают аналогичным образом, сохраняя последовательности в LUT и получая к ним доступ каждый раз, когда это необходимо.
Генератор система координат
Подсистема Header принимает modTypeIndex, codeRateIndex и fftLenIndex в входы. Сигнал headerSet начинает формирование заголовка. Функция Header Formation преобразует значения modTypeIndex и codeRateIndex в их двоичные эквиваленты. Для примера значение modTypeIndex 1
преобразуется в два бита 01
. Точно так же значения codeRateIndex преобразуются в два эквивалентных бита. Дополнительные сведения об этих индексах см. в Спецификации датчика. fftLenIndex не конфигурируется и его значение фиксируется на 0
. Преобразуется в 000
, который представляет длину БПФ 128. fftLenIndex, modTypeIndex и codeRateIndex представлены с использованием 3, 2 и 2 бит, образуя в общей сложности 7 биты. Кроме того, добавлено 7 резервных биты, все в данный момент установлено на 0
, образуя в общей сложности 14 биты заголовка.
Эти 14 биты обрабатываются, как показано на рисунке. Для правильного выявления ошибок, Общий Генератор CRC HDL Оптимизированный блок заполняет 16 биты CRC с [16 12 5 0]
как полином CRC. Блок Сверточного Энкодера кодирует эти 30 биты, то есть 14 + 16, с [171 133]
как полином и длина ограничения как 7. Кодировка обрабатывается в завершенном режиме, добавляя 6 заполненные CRC данные биты null 7, то есть 1 & endash;. После кодирования эти 36 битов приводят к 72 битам из-за кодирования скорости 1/2. Выходы блока Convolutional Encoder являются двухэлементным вектором, который сериализуется в Сериализованной Подсистеме с помощью блока Serializer1D (HDL Coder), приводя к переходу скорости в множитель 2. Сериализованные данные перемежаются с использованием блока Interleaver с 72 в качестве максимального размера блока и 18 в качестве количества столбцов. Для получения дополнительной информации о блоке Interleaver смотрите пример HDL-перемежителя и Deinterleaver. Перемеженные биты модулируются BPSK с использованием блока LTE Symbol Modulator для формирования символа заголовка.
Система координат
Подсистема данных хранит входные данные полезной нагрузки dataIn и обрабатывает их через цепь данных.
Система координат и генерация сигналов управления
Подсистема генерации сигналов данных и управления состоит из ОЗУ, где хранятся входные данные полезной нагрузки dataIn. Сигнал набор данных считывает данные из этой ОЗУ. Эта подсистема генерирует начальные, конечные и действительные сигналы управления для данных ОЗУ. Он также выбирает вектор прокола на основе 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]
как начальное состояние. Блок Convolutional Encoder кодирует скремблированные данные в завершенном режиме с [171 133]
как полином и длина ограничения как 7
. Закодированный выход прокалывается с помощью блока Puncturer с вектором прокола, выбранным в подсистеме Data and Control Signal Generation. Выход блока Puncturer является двухэлементным вектором и сериализуется с помощью Serializer1D (HDL Coder) блока. Результирующие данные перемежаются в Подсистеме Перемежителя Символов, где Подсистема Разделения Данных На Символы разделяет входные данные на символы, и каждый из этих символов перемежается по битам, используя блок Перемежителя с 360 в качестве максимального размера блока и 15 в качестве количества столбцов. Поддерживаемые размеры символа входных данных для блока перемежителя составляют 60, 120, 240 и 360 для BPSK, QPSK, 16-QAM и 64-QAM модуляций, соответственно. Для получения дополнительной информации о блоке Interleaver смотрите пример HDL-перемежителя и Deinterleaver. Блок LTE Symbol Modulator модулирует перемеженные данные с помощью шаблона модуляции, выбранного на основе входа modTypeIndex.
Мультиплексор
Подсистема мультиплексора мультиплексирует сигналы SS, RS и Пилот в подсистеме сигналов преамбулы мультиплексора и сигналы заголовка и данных в подсистеме заголовка мультиплексора и сигналов данных на основе действительных сигналов, генерируемых подсистемой генератора систем координат.
Формирование системы координат и OFDM-модуляция
Подсистема Системы координат Formation и OFDM Modulation принимает сигналы preambleData и данных, а затем мультиплексирует и записывает их в двухпортовую ОЗУ с двойной скоростью (HDL Coder). Эта ОЗУ считывает и записывает данные с разной скоростью. Оперативная память записывает данные в 61,44 Msps. ОЗУ заполняется данными, так что она формирует структуру системы координат OFDM, как показано в разделе «Спецификация передатчика».
Подсистема Generate OFDM Modulator Valid генерирует действительный входной сигнал для блока OFDM Modulator со скоростью дискретизации 1,92 Msps и генерирует адрес ОЗУ для чтения данных из ОЗУ. Действительный сигнал находится в синхронизации с сигналом готовности модулятора OFDM. Подсистема Make OFDM Valid Continuous выбирает выход модулятора OFDM на основе сигнала validIn. Выдает действительный выход OFDM при наличии сигнала validIn и фиктивного символа OFDM при отсутствии сигнала validIn.
Дискретный Конечная Импульсная Характеристика HDL оптимизирован
Блок Discrete FIR Filter HDL Optimized (DSP System Toolbox) фильтрует выход подсистемы Make OFDM Valid Continuous с частотой полосы пропускания 1,4 МГц. The whdlexamples.OFDMTxParameters
функция вычисляет коэффициенты фильтра. Выход фильтра является конечным выходом передатчика.
Передатчик может быть подключен назад к приемнику, что объяснено в примере HDL OFDM Receiver. Для получения дополнительной информации о том, как использовать модели Simulink передатчика и приемника, смотрите пример HDL OFDM MATLAB References.
Чтобы запустить модель передатчика, OFDMTxVerification.m
скрипт поставляется с этим примером. Скрипт выбирает пользовательское строение системы координат, данные полезной нагрузки и симулирует модель. Скрипт также собирает выходы симуляции и проверяет их.
ПРИМЕЧАНИЕ. Эти файлы недоступны в пути поиска файлов MATLAB. Чтобы скопировать эти файлы локально в пользовательский путь, необходимо открыть этот пример.
В этом разделе модель OFDM Transmitter Simulink проверяется путем сравнения ее выхода с эквивалентной функцией с плавающей точкой whdlexamples.OFDMTx
. Для получения дополнительной информации об этой функции MATLAB смотрите пример HDL OFDM MATLAB References. Чтобы сравнить выход модели 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-код для этого примера, вы должны иметь HDL- Coder™. Использование makehdl
и makehdltb
команды для генерации HDL-кода и HDL-теста для подсистемы передатчика OFDM. Время генерации теста зависит от времени симуляции.
Получившийся HDL-код синтезируется для платы оценки ZC706 Xilinx ® Zynq ® -7000. Информация об использовании почтовых и маршрутных ресурсов приводится в таблице ниже. Максимальная частота операции - 230 МГц.
Resources Usage _______________ _____ Slice Registers 6373 Slice LUT 4197 RAMB36 5 RAMB18 15 DSP48 24