Этот пример показывает основанный на OFDM беспроводной передатчик, реализованный в Simulink®, который оптимизирован для генерации HDL-кода и аппаратной реализации.
Этот пример показывает индивидуальный проект основанного на ортогональном мультиплексировании деления частоты (OFDM) передатчика. Эта модель передатчика принимает данные о полезной нагрузке через входной порт. Это позволяет вам выбирать тип модуляции и проколотый уровень сверточного кода данных из множества значений. Эти два параметра управляют эффективной скоростью передачи данных передачи, и им можно предоставить через входные порты передатчика. Максимальная скорость передачи данных, поддержанная передатчиком, составляет 3 Мбит/с. Передатчик также принимает вход packetValid сигнал управлять передачей.
Передатчик в этом примере работает в сочетании с приемником в 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 Tx подсистема, которая относится к whdlOFDMTx.slx
модель. Существует внешняя интерфейсная схема для OFDM Tx подсистема, которая обеспечивает входные параметры и собирает выходные параметры из подсистемы. Выполнение этой модели запускает остающиеся три файла.
whdlexamples.OFDMTransmitterInit
— Этот скрипт инициализирует whdlOFDMTransmitter.slx
модель. Скрипт называется в коллбэке InitFcn модели.
whdlOFDMTx.slx
— Эта модель реализует передатчик с общей конфигурируемостью. whdlOFDMTransmitter.slx
модель обращается к этой модели, как объяснено выше.
whdlexamples.OFDMTxParameters
— Функция, которая генерирует параметры, требуемые для whdlOFDMTx.slx
модель. Эта функция вызвана в Рабочем пространстве модели модели.
Верхний уровень whdlOFDMTransmitter.slx
модель показывает OFDM Tx подсистема и ее интерфейс.
Входные параметры модели:
modTypeIndex — Выбирает тип модуляции символа, которая будет применена к данным о полезной нагрузке в виде ufix2 скаляра. Этот порт принимает значения 0
, 1, 2
, и
3
то, которые соответствуют модуляции, вводит BPSK, QPSK, 16QAM, и 64QAM.
codeRateIndex — Выбирает уровень кода проколотого сверточного кода, который будет применен к данным о полезной нагрузке в виде ufix2 скаляра. Этот порт принимает значения 0
, 1, 2
, и
3
которые соответствуют уровням кода 1/2, 2/3, 3/4, и 5/6.
packetValid — Передача средств управления систем координат в виде булева скаляра. Если packetValid равняется 1, передатчик выводит допустимую систему координат OFDM для данных входных данных о полезной нагрузке, modTypeIndex и codeRateIndex значений. Если packetValid 0, передатчик выводит фиктивную систему координат без данной входной настройки и данных.
dataIn — Входные данные о полезной нагрузке в виде булева скаляра.
Все входные порты, запущенные на уровне частоты дискретизации 30.72 членов Шотландского парламента, чтобы поддержать различные настройки.
Выходные параметры модели:
txData — Transmitter выходной параметр, возвращенный как комплексный скаляр с fixdt (1,16,13) тип данных, производится в 1.92 членах Шотландского парламента.
txValid — Управляющий сигнал, который подтверждает txData, возвратился как булев скаляр, произведенный в 1.92 членах Шотландского парламента.
sampleInParam — Управляющий сигнал раньше производил modTypeIndex, codeRateIndex и входные параметры packetValid в виде булева скаляра, произведенного в 30.72 членах Шотландского парламента.
dataReady — Управляющий сигнал, что выборки вводят данные о полезной нагрузке, dataIn в виде булева скаляра, произведенного в 30.72 членах Шотландского парламента.
Демонстрационные входные сигналы
Демонстрационные выборки подсистемы Входных сигналов modTypeIndex, codeRateIndex и packetValid сигнализируют на основе сигнала sampleInParam. Эта подсистема обеспечивает выходные параметры только, когда существует активный сигнал sampleInParam и сохраняет предыдущие выходные параметры, если сигнал sampleInParam неактивен. Подсистема хранит данный, вводит modOrder и codeRateIndex значения в двух LUTs как показано на рисунке. Если packetValid равняется 1, соответствующий modOrder и codeRateIndex значения выбраны из LUTs. Функция Кодирования источника сопоставляет modOrder значения 2
, 4, 16
, и
64
к соответствующим modTypeIndex значениям 0
, 1, 2
, и
3
и наборы 1
(QPSK) как значение по умолчанию. Это также берет codeRateIndex значениям 0
, 1, 2
, и
3
от LUT и наборов 0
(1/2 уровень кода) как значение по умолчанию. Если packetValid 0, LUTs проигнорированы.
Выберите Payload Data
Выбрать подсистема Payload Data выбирает входные данные о полезной нагрузке на основе сигнала dataReady. Это имеет счетчик, который постепенно увеличивается, когда сигнал dataReady становится активным. Существует LUT, который хранит данные входные данные о полезной нагрузке. Данные из этого LUT выбраны на основе встречного значения. Существует дополнительная схема, которая возвращает нули как данные после того, как счетчик достигает максимального количества.
whdlOFDMTx.slx
модель называется в OFDM Tx подсистемой. Это генерирует форму волны передатчика OFDM путем обработки входных сигналов на нескольких этапах как показано ниже.
whdlOFDMTx
Структурируйте сэмплер контроллера и входа
Подсистема Сэмплера Контроллера и Входа Системы координат имеет счетчик, который постепенно увеличивается на время системы координат 3 мс и затем перезапускает. Счетчик перезапускает от 0
в начале каждой системы координат и генерирует сигнал sampleInParam произвести входные сигналы modTypeIndex, codeRateIndex, и packetValid. На основе произведенного modTypeIndex и codeRateIndex значений, соответствующий транспортный размер блока для системы координат выбран из Транспортного LUT Размера блока. Затем сигнал dataReady становится активным, чтобы принять, что входные данные, dataIn, размера, равного, транспортируют длину блока. Если произведено packetValid сигнал является ложным, dataReady остается неактивная генерация указания фиктивной системы координат, которая не требует никаких входных данных. Эта подсистема также генерирует управляющие сигналы для SS, RS, Заголовка, Пилота и генерации Данных, которая выполняется на дальнейших этапах.
Структурируйте генератор
Подсистема Генератора Системы координат состоит из пяти подсистем, которые генерируют SS, RS, Заголовок, Пилота и сигналы Данных, которые позже OFDM-модулируются.
Структурируйте Generator/SS
SS (Последовательность Синхронизации) подсистема принимает ssSet управляющий сигнал, сгенерированный от подсистемы Сэмплера Контроллера и Входа Системы координат. Это сгенерировано, рассмотрев длину последовательности SS. Этот сигнал первоначально сбрасывает счетчик. Затем счетчик продолжает постепенно увеличиваться и одновременно возвращает SS в LUT. Если ssSet становится неактивным, встречные остановки. Выход от LUT сверхдискретизирован на коэффициент 2, чтобы обеспечить тот же шаг расчета как та из подсистем Заголовка и Данных. RS и Экспериментальные подсистемы действуют похожим способом путем хранения последовательностей в LUTs и доступа к ним каждый раз, когда требуется.
Структурируйте генератор/Заголовок
Подсистема Заголовка принимает modTypeIndex, codeRateIndex и fftLenIndex как входные параметры. headerSet сигнал запускает формирование заголовка. Функция Формирования Заголовка преобразует modTypeIndex и codeRateIndex значения в их двоичные эквиваленты. Например, modTypeIndex значение 1
преобразован в 01
на два бита. Точно так же значения codeRateIndex преобразованы в два эквивалентных бита. Чтобы узнать больше об этих индексах, обратитесь к Спецификации Передатчика. fftLenIndex не конфигурируем, и его значение фиксируется к
0
. Это преобразовано в 000
, который представляет длину БПФ 128. fftLenIndex, modTypeIndex, и codeRateIndex представлены с помощью 3, 2, и 2 бита, формируя в общей сложности 7 битов. Кроме того, 15 запасных битов добавляются, все в настоящее время набор к 0
, формирование в общей сложности 22 битов Заголовка.
Эти 22 бита обрабатываются как показано ниже. Для соответствующего выявления ошибок 8 битов CRC дополнены с помощью блока General CRC Generator HDL Optimized с [8 7 4 3 1 0]
как полином CRC. Эти 30 битов, который является (22 + 8), закодированы с помощью блока Convolutional Encoder с [171 133]
как полином и продолжительность ограничения 7
. Кодирование сделано в отключенном режиме, который добавляет 6 пустых битов, который является (7 - 1) к дополненным данным CRC. После кодирования, эти результат на 36 битов в 72 битах из-за 1/2 кодирования уровня. Выход блока Convolutional Encoder является двухэлементным вектором, который сериализируется с помощью продвижения блока Serializer1D (HDL Coder), чтобы оценить переход фактором 2. Эти 72 бита модулируются BPSK с помощью блока LTE Symbol Modulator, чтобы сформировать символ Заголовка.
Структурируйте генератор/Данные
Подсистема Данных хранит входные данные о полезной нагрузке, dataIn, и обрабатывает их через цепь Данных.
Структурируйте Генерацию Генератора/Данных/Данных и Управляющего сигнала
Подсистема Генерации Данных и Управляющего сигнала состоит из RAM, где введенные данные о полезной нагрузке, dataIn, хранятся. Сигнал набора данных считывает данные из этого RAM. Эта подсистема генерирует, запускаются, заканчиваются, и допустимые управляющие сигналы для данных RAM. Это даже выбирает вектор прокола на основе codeRateIndex.
Структурируйте Цепь Генератора/Данных/Данных
Данные о полезной нагрузке из RAM и управляющих сигналов даны как входные параметры с блоком 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 с вектором прокола, выбранным в подсистеме Генерации Данных и Управляющего сигнала. Выход блока Puncturer является двухэлементным вектором и сериализируется с помощью блока Serializer1D (HDL Coder). Результирующие данные модулируются с помощью блока LTE Symbol Modulator с помощью шаблона модуляции, выбранного на основе modTypeIndex.
Мультиплексор
Подсистема Мультиплексора мультиплексирует SS, RS, Заголовок, Пилота и сигналы Данных на основе соответствующих допустимых сигналов, которые сгенерированы подсистемой Генератора Системы координат.
Структурируйте формирование и модуляцию OFDM
Формирование Системы координат и подсистема Модуляции OFDM берут в мультиплексированных выходных данных, и validOut сигнализирует и пишет им в Двойной Уровень Двухпортовый RAM (HDL Coder). Этот RAM читает и записывает данные на различных уровнях. Данные записаны в RAM в 61.44 членах Шотландского парламента. LUT содержит адреса для того, чтобы записать данные в RAM. RAM заполнен данными, таким образом, что это формирует структуру системы координат OFDM как показано в предыдущих разделах.
Модулятор OFDM Допустимая подсистема Генерации генерирует допустимый входной сигнал для блока OFDM Modulator на уровне частоты дискретизации 1.92 членов Шотландского парламента. Этот допустимый сигнал находится в синхронизации с готовым сигналом Модулятора OFDM. Допустимый сигнал также используется, чтобы сгенерировать адрес RAM, чтобы считать данные из RAM. Пакет Управления Выходная подсистема выбирает OFDM Modulator выход на основе packetValid. Это выделяет допустимый OFDM выход в присутствии packetValid и фиктивной системы координат со случайным SS в его отсутствие.
Дискретный КИХ-оптимизированный HDL фильтра
Выход Пакета Управления Выходная подсистема отфильтрован с частотой полосы пропускания 1,4 МГц с помощью блока Discrete FIR Filter HDL Optimized (DSP System Toolbox). Коэффициенты фильтра вычисляются whdlexamples.OFDMTxParameters
функция. Выход фильтра формирует окончательный результат передатчика.
Передатчик может быть соединен спина к спине с приемником, который объяснен в HDL пример Приемника OFDM. Для получения дополнительной информации о том, как использовать модели Simulink передатчика и приемника спина к спине, отошлите к HDL OFDM пример Ссылок MATLAB.
Запускать модель передатчика, OFDMTxVerification.m
скрипту предоставляют этот пример. Скрипт выбирает пользовательскую настройку системы координат и данные о полезной нагрузке, и симулирует модель. Скрипт также собирает симуляцию выходные параметры и подтверждает их.
ПРИМЕЧАНИЕ: Эти файлы не доступны на пути поиска файлов MATLAB. Чтобы скопировать эти файлы локально в пользовательский путь, необходимо открыть этот пример.
В этом разделе модель OFDM Transmitter Simulink подтверждена путем сравнения ее выхода с ее эквивалентной функцией с плавающей точкой, whdlexamples.OFDMTx
. Для получения дополнительной информации об этой функции MATLAB смотрите HDL OFDM пример Ссылок MATLAB. Чтобы сравнить выход модели Simulink с функцией MATLAB, запустите OFDMTxVerification.m
скрипт. Обратите внимание на то, что для сравнения с whdlexamples.OFDMTx
, packetValid должен быть непрерывным.
>> OFDMTxVerification
### Starting serial model reference simulation build ### Model reference simulation target for whdlOFDMTx is up to date. Build Summary 0 of 1 models built (1 models already up to date) Build duration: 0h 1m 36.745s
Чтобы сгенерировать HDL-код для этого примера, у вас должен быть HDL Coder™. Используйте makehdl
и makehdltb
команды, чтобы сгенерировать HDL-код и испытательный стенд HDL для подсистемы OFDMTx. Время генерации испытательного стенда зависит от времени симуляции.
Получившийся HDL-код синтезируется для оценочной платы Xilinx® Zynq®-7000 ZC706. Место сообщения и использование ресурса маршрута показывают в приведенной ниже таблице. Максимальная частота операции составляет 227 МГц.
Resources Usage _______________ _____ Slice Registers 5819 Slice LUT 3631 RAMB36 5 RAMB18 12 DSP48 24