В этом примере показано, как реализовать основанный на OFDM беспроводной передатчик в Simulink®, который оптимизирован для генерации HDL-кода и аппаратной реализации.
Этот пример показывает индивидуальный проект основанного на ортогональном мультиплексировании деления частоты (OFDM) передатчика. Эта модель передатчика принимает данные о полезной нагрузке через входной порт. Это позволяет вам выбрать тип модуляции и проколотый уровень сверточного кода данных из множества значений. Эти два параметра управляют эффективной скоростью передачи данных передачи и обеспечиваются через входные порты передатчика. Максимальная скорость передачи данных, поддержанная передатчиком, составляет 3 Мбит/с. Передатчик также принимает вход допустимый сигнал управлять передачей.
Передатчик в этом примере работает в сочетании с приемником в HDL пример Приемника OFDM. Передатчик имеет плавающую точку MATLAB® эквивалентная функция, описанная в HDL 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, Заголовок, Пилоты и Данные. SS, RS и Пилоты - то же самое для каждой системы координат. Они хранятся в отдельном ищите таблицы (LUT) и получили доступ каждый раз, когда требуется. Заголовок и Данные варьируются на основе входных параметров, данных передатчику. Биты заголовка формируются на основе входного типа модуляции и значений уровня кода. Эти биты заголовка обрабатываются через цепь Заголовка как показано на рисунке. Данные о полезной нагрузке предоставляются как вход передатчику. Эти данные обрабатываются через несколько этапов в цепи Данных. Отдельные этапы в цепях Заголовка и Данных объяснены в дальнейших разделах.
Эти пять сигналов мультиплексируются на основе их допустимых сигналов и хранятся в RAM. RAM содержит эти сигналы на срок одной системы координат. Данные, хранимые в RAM, определяются и модулируются блоком OFDM Modulator. 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.
данные — Входные данные о полезной нагрузке в виде булева скаляра.
допустимый — Допустимый сигнал для входных данных в виде булева скаляра.
Все входные порты, запущенные на уровне частоты дискретизации 30.72 членов Шотландского парламента, чтобы поддержать различные настройки.
Выходные параметры модели:
txData — Transmitter выходной параметр, возвращенный как комплексный скаляр с fixdt (1,16,13) тип данных, производится в 1.92 членах Шотландского парламента.
txValid — Управляющий сигнал, который подтверждает txData, возвратился как булев скаляр, произведенный в 1.92 членах Шотландского парламента.
готовый — Управляющий сигнал, который используется к демонстрационным входным данным, modTypeIndex, и codeRateIndex значениям в виде булева скаляра, произведенного в 30.72 членах Шотландского парламента.
Селектор индекса
Подсистема Селектора индекса производит modTypeIndex и сигналы codeRateIndex в возрастающем ребре готового сигнала. Подсистема сохраняет предыдущие выходные параметры, если никакое возрастающее ребро не существует на готовом сигнале.
Данные и допустимый селектор
Данные и Допустимая Селекторная подсистема выбирают входные данные о полезной нагрузке и вводят допустимый сигнал на основе готового сигнала.
whdlOFDMTx.slx
модель называется в подсистеме Передатчика OFDM. Это генерирует форму волны передатчика OFDM путем обработки входных сигналов на нескольких этапах как показано ниже.
whdlOFDMTx
Структурируйте сэмплер контроллера и входа
Подсистема Сэмплера Контроллера и Входа Системы координат генерирует управляющие сигналы для более поздних этапов модели. Подсистема также генерирует готовый выходной сигнал, который используется для внешнего взаимодействия через интерфейс. Эта подсистема производит вход modTypeIndex и codeRateIndex значения наряду с первой допустимой входной выборкой. Транспортный размер блока для текущей системы координат выбран из Транспортного LUT Размера блока на основе произведенного modTypeIndex и codeRateIndex значений. Подсистема также генерирует управляющие сигналы для генерации заголовка, сопровождаемой генерацией преамбулы наряду с первой допустимой выборкой. Генерация преамбулы относится к генерации SS, RS и Экспериментальных сигналов. Управляющий сигнал для генерации данных утверждается любой после 9562 (максимальный транспортный размер блока, соответствующий 64-QAM модуляции и 5/6 уровню кода) такты от первой допустимой выборки или после того, как транспортная длина блока допустимых входных данных хранится для текущей системы координат, какой бы ни позже. Наряду с управляющим сигналом данных, утверждается сигнал ofdmModReady, который указывает на блок OFDM Modulator, чтобы запустить модуляцию.
Структурируйте генератор
Подсистема Генератора Системы координат генерирует SS, RS, Заголовок, Пилота и сигналы Данных, которые позже OFDM-модулируются. Сгенерировать подсистема Управляющих сигналов Преамбулы, которая находится в подсистеме Генератора Системы координат, разделяет вход preambleSet управляющий сигнал в набор ss, RS установил, и экспериментальные управляющие сигналы набора, которые генерируют SS, RS и Экспериментальные сигналы, соответственно.
Структурируйте Последовательность Генератора/Синхронизации
Подсистема Последовательности Синхронизации принимает управляющий сигнал набора ss, сгенерированный от подсистемы Сэмплера Контроллера и Входа Системы координат. Это сгенерировано, рассмотрев длину последовательности SS. Счетчик продолжает постепенно увеличиваться и возвращает SS в LUT. Однажды ss набор становится неактивным, встречные остановки. Выход от LUT сверхдискретизирован на коэффициент 2, чтобы обеспечить тот же шаг расчета как та из подсистем Заголовка и Данных. Опорные сигналы и Экспериментальные подсистемы действуют похожим способом путем хранения последовательностей в LUTs и доступа к ним каждый раз, когда требуется.
Структурируйте генератор/Заголовок
Подсистема Заголовка принимает modTypeIndex, codeRateIndex и fftLenIndex как входные параметры. headerSet сигнал запускает формирование заголовка. Функция Формирования Заголовка преобразует 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 заполняет 16 битов CRC [16 12 5 0]
как полином CRC. Блок Convolutional Encoder кодирует эти 30 битов, который равняется 14 + 16 с [171 133]
как полином и продолжительность ограничения как 7. Кодирование обрабатывается в отключенном режиме, добавляя 6 пустых битов, который является 7&endash; 1, к CRC дополнил данные. После кодирования, эти результат на 36 битов в 72 битах из-за 1/2 кодирования уровня. Выход блока Convolutional Encoder является двухэлементным вектором, который сериализируется в Сериализированной подсистеме с помощью блока Serializer1D (HDL Coder), ведя к переходу уровня фактором 2. Сериализированные данные чередованы с помощью блока Interleaver с 72 как максимальный размер блока и 18 как количество столбцов. Для получения дополнительной информации о блоке Interleaver смотрите HDL пример Deinterleaver и Interleaver. Чередованные биты модулируются BPSK с помощью блока LTE Symbol Modulator, чтобы сформировать символ Заголовка.
Структурируйте генератор/Данные
Подсистема Данных хранит входные данные о полезной нагрузке, dataIn, и обрабатывает их через цепь Данных.
Структурируйте Генерацию Генератора/Данных/Данных и Управляющего сигнала
Подсистема Генерации Данных и Управляющего сигнала состоит из RAM, где входные данные о полезной нагрузке, dataIn, хранятся. Сигнал набора данных считывает данные из этого RAM. Эта подсистема генерирует, запускаются, заканчиваются, и допустимые управляющие сигналы для данных RAM. Это также выбирает вектор прокола на основе codeRateIndex.
Структурируйте Цепь Генератора/Данных/Данных
Блок General CRC Generator HDL Optimized добавляет 32-битный CRC к данным о полезной нагрузке из RAM с [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 с вектором прокола, выбранным в подсистеме Генерации Данных и Управляющего сигнала. Выход блока Puncturer является двухэлементным вектором и сериализируется с помощью блока Serializer1D (HDL Coder). Результирующие данные чередованы в Символе подсистема Interleaver, где Разделение данных В подсистему Символов разделяет входные данные в символы, и каждый из этих символов использование с чередованием битов блока Interleaver с 360 как максимальный размер блока и 15 как количество столбцов. Поддерживаемые размеры символа входных данных с блоком Interleaver равняются 60, 120, 240, и 360 для BPSK, QPSK, 16-QAM, и 64-QAM модуляций, соответственно. Для получения дополнительной информации о блоке Interleaver смотрите HDL пример Deinterleaver и Interleaver. Блок LTE Symbol Modulator модулирует чередованные данные с помощью шаблона модуляции, выбранного на основе входа modTypeIndex.
Мультиплексор
Подсистема Мультиплексора мультиплексирует SS, RS, и Экспериментальные сигналы в Мультиплексной подсистеме Сигналов Преамбулы и сигналы Заголовка и Данных в Мультиплексной подсистеме Сигналов Заголовка и Данных на основе допустимых сигналов, сгенерированных подсистемой Генератора Системы координат.
Структурируйте формирование и модуляцию OFDM
Формирование Системы координат и подсистема Модуляции OFDM принимают preambleData и сигналы данных, и затем мультиплексируют и пишут им в Двойной Уровень Двухпортовый RAM (HDL Coder). Этот RAM читает и записывает данные на различных уровнях. RAM записывает данные в 61.44 членах Шотландского парламента. RAM заполнен данными, таким образом, что это формирует структуру системы координат OFDM как показано в разделе Transmitter Specification.
Генерировать Модулятор OFDM Допустимая подсистема генерирует допустимый входной сигнал для блока OFDM Modulator на уровне частоты дискретизации 1.92 членов Шотландского парламента и генерирует адрес RAM, чтобы считать данные из RAM. Допустимый сигнал находится в синхронизации с готовым сигналом Модулятора OFDM. Делать OFDM Допустимая Непрерывная подсистема выбирает OFDM Modulator выход на основе сигнала validIn. Это выделяет допустимый OFDM выход в присутствии сигнала validIn и фиктивного символа OFDM в отсутствие сигнала validIn.
Дискретный КИХ-оптимизированный HDL фильтра
Блок Discrete FIR Filter HDL Optimized (DSP System Toolbox) фильтрует выход Того, чтобы делать OFDM Допустимая Непрерывная подсистема с частотой полосы пропускания 1,4 МГц. whdlexamples.OFDMTxParameters
функция вычисляет коэффициенты фильтра. Выход фильтра является окончательным результатом передатчика.
Передатчик может быть соединен спина к спине с приемником, который объяснен в HDL пример Приемника OFDM. Для получения дополнительной информации о том, как использовать модели Simulink передатчика и приемника спина к спине, отошлите к HDL OFDM пример Ссылок MATLAB.
Запускать модель передатчика, OFDMTxVerification.m
скрипту предоставляют этот пример. Скрипт выбирает пользовательскую настройку системы координат, данные о полезной нагрузке, и симулирует модель. Скрипт также собирает симуляцию выходные параметры и подтверждает их.
ПРИМЕЧАНИЕ: Эти файлы не доступны на пути поиска файлов MATLAB. Чтобы скопировать эти файлы локально в пользовательский путь, необходимо открыть этот пример.
В этом разделе модель OFDM Transmitter Simulink подтверждена путем сравнения ее выхода с ее эквивалентной функцией с плавающей точкой, whdlexamples.OFDMTx
. Для получения дополнительной информации об этой функции MATLAB смотрите HDL OFDM пример Ссылок MATLAB. Чтобы сравнить выход модели 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-код синтезируется для оценочной платы Xilinx® Zynq®-7000 ZC706. Место сообщения и использование ресурса маршрута показывают в приведенной ниже таблице. Максимальная частота операции составляет 230 МГц.
Resources Usage _______________ _____ Slice Registers 6373 Slice LUT 4197 RAMB36 5 RAMB18 15 DSP48 24