В этом примере показано, как оптимизировать передатчик QPSK, смоделированный в commqpsktxrx.slx для генерации HDL-кода и аппаратной реализации.
Оптимизированный пример Передатчика QPSK HDL показывает, как блоки Simulink®, которые поддерживают генерацию HDL-кода, могут использоваться, чтобы реализовать основополосную обработку передатчика цифровой связи. Подсистема HDLTx может быть расположена каскадом с подсистемой HDLRx, данной в HDL Оптимизированный Пример Приемника QPSK, для того, чтобы сформировать полную цепь приемника передатчика QPSK, от которой может быть сгенерирован HDL-код. В верхнем уровне иерархии существует два компонента, HDLTx и Измерение Качества сигнала. Подсистема HDLTx была оптимизирована для генерации HDL-кода при помощи оборудования дружественные блоки и методы проекта. Подсистема Измерения Качества сигнала предназначается для основанной на программном обеспечении валидации проекта и поэтому не поддержана для генерации HDL-кода. Подсистема HDLTx генерирует Синфазное (I) и Квадратура (Q) каналы, представляющие QPSK (четвертичное Манипулирование Сдвига Фазы) отображение символа. Это вводится как комплексный вектор к передаче Корневого повышенного косинуса (RRC) импульсный формирующий фильтр. Выход подсистемы HDLTx поэтому состоит из и сверхдискретизированных символов импульсной формы. Компонент Измерения Качества сигнала состоит из соответствия, RRC получают фильтр и осциллограф Схемы Созвездия. Цель осциллографа является двукратной. Это оба отображения выходные данные, и вычисляет значения Ошибочного отношения модуляции (MER) и Величина вектора ошибок (EVM). Это позволяет разработчику исследовать шум, введенный в систему от создания фильтра RRC. Это явится результатом двух источников - (a) квантование содействующих значений в фильтре RRC и (b) усеченная импульсная характеристика фильтра RRC (фактор спада 0.5). EVM может поэтому быть улучшен или увеличением числа дробных битов для содействующих значений или путем перепроектирования фильтра RRC, чтобы дать улучшенный ответ.
Компонент HDLTx состоит из трех подсистем -
Данные Generation & Packetization
Отображение символа
Импульсное формирование
Конвейерные регистры вставляются между подсистемами для того, чтобы минимизировать комбинаторную задержку пути между компонентами и поэтому максимизировать достижимую тактовую частоту (i.e. минимизация задержки критического пути). Подсистема The Data Generation & Packetization содержит несколько субкомпонентов, которые являются также конвейерными. Существует, поэтому, фиксированная задержка, прежде чем допустимые данные появятся во входе к компоненту Формирования Импульса. Чтобы гарантировать, что только допустимые данные передаются, допустимы и допустимые в портах, включены, которые используются, чтобы управлять 2:1 Мультиплексор (Входной Мультиплексор).
Data Generation & Packetization, Отображение Символа и подсистемы Формирования Импульса далее описаны в следующих разделах.
1 - Data Generation & Packetization
Следующая фигура иллюстрирует иерархию верхнего уровня компонента. Packetizer FSM и Источник данных генерируют и преамбулу и биты данных, и выполняют скремблирование и пакетирование. Пакеты состоят из 26 битов преамбула Баркера кода и 174 битов скремблированных данных. Преамбула Баркера кода используется в HDL Оптимизированный Пример Приемника QPSK для основанного на автокорреляции пакетного обнаружения через использование согласованного фильтра. Подсистема Бита-парного соединения преобразует один битный вход последовательных данных в двухбитовый выход половины частоты дискретизации, обеспечивая правильный формат данных для картопостроителя символа. Внутренне, блок источника данных имеет конвейерную задержку 2 выборок. Кроме того, существует конвейерная задержка между источником данных и подсистемой бита-парного соединения. Допустимый сигнал поэтому задержан, чтобы совпадать с конвейерной задержкой информационного канала. Подсистема Бита-парного соединения уменьшает частоту дискретизации на коэффициент 2. Размещение прореживания два в допустимом пути к управлению гарантирует что частота дискретизации допустимых соответствий пути к управлению тот из пути прохождения сигнала.
Packetizer FSM - компонент Packetizer FSM состоит из машины Мура, созданное использование функционального блока MATLAB®. FSM имеет два состояния - Pack_Preamble и Append_Data. Состояние Pack_Preamble служит, чтобы включить счетчик преамбулы через load_preamble выход. Счетчик преамбулы генерирует сигнал адреса для Интерполяционной таблицы преамбулы (LUT), постепенно увеличивающийся от 0-> 25. После этого FSM перемещается в состояние Append_Data, утверждая сигнал load_data, где это должно остаться для 174 циклов. В это время reset_preamble, которым выход сохранен высоко, в то время как load_preamble выводят, сохранен низко. FSM должен последовательно переключиться между двумя состояниями в свою очередь.
Источник данных - Как показано в следующем рисунке, компонент Источника данных содержит два LUTs, содержа преамбулу и биты данных. Биты преамбулы являются инвариантными между пакетами, и таким образом, счетчик, используемый, чтобы обратиться к LUT преамбулы, сбрасывается после загрузки каждой преамбулы. Счетчику, используемому, чтобы обратиться к LUT данных, позволяют повториться после достижения максимального значения адреса, которое соответствует последнему символу пакетной строки тела "Hello World 099". Каждый из LUTs является нулем, дополненным для того, чтобы гарантировать, что количество элементов данных имеет длину степени двойки. В дополнение к включению счетчика для LUT данных ввод данных загрузки используется, чтобы управлять, когда компонент скремблера данных должен быть включен, и управлять, должны ли преамбула или биты данных быть переданы выходу через 2:1 Мультиплексор Данных о Преамбуле.
Скремблер данных - скремблер данных детализирован в следующем рисунке. Скремблер создается из первых принципов с помощью логических элементов XOR (для 2 сложений по модулю) и регистры. При помощи активированной подсистемы это обеспечено это, скремблер только включен, когда существуют новые входные данные, которые будут обработаны.
Бит-парное соединение - цель подсистемы Бита-парного соединения состоит в том, чтобы сгруппировать пары битов в двухбитовый выход без знака - формат ввода, ожидаемый компонентом отображения символа. Чтобы достигнуть этого, пара downsamplers используется, чтобы уменьшать частоту дискретизации на коэффициент два с первым downsampler выбор второй фазы и второго downsampler выбор первой фазы. Блок Bit Concat конкатенирует одни битные входные параметры в двухбитовый выход без знака.
2 - Картопостроитель символа
Картопостроитель Символа использует блок QPSK Modulator Baseband из Communications Toolbox™ для того, чтобы сопоставить целочисленное входное значение [0,1,2,3] на оцененный символ соответствующего комплекса [1 + 1i,-1 + 1i, 1 - 1i,-1 - 1i]. Отображение символов этим способом позволяет, чтобы 2 битовых значения использовались, чтобы представлять каждый символ. Это позволяет wordlengths в фильтре передачи RRC для продукта и аккумуляторе datapaths быть оптимизированным. Блок использует схему Gray Mapping.
3 - Импульсное формирование
Импульс, Формирующий компонент, использует КИХ-фильтр Интерполяции, показывая фактор повышающей дискретизации четыре, и Корневая Повышенная импульсная характеристика Косинуса. Получение просачивается, оптимизированная демонстрация Приемника QPSK HDL формирует согласованный фильтр к этому фильтру передачи. Фильтр является конвейерным (см. HDL Block Properties) для того, чтобы гарантировать, что комбинаторная задержка минимизирована в проекте.
В процессе моделирования созвездие, полученное после передачи сигнала через передачу и, получает цепь фильтра, отображен через Осциллограф Схемы Созвездия (содержавший в компоненте Измерения Качества сигнала). Кроме того, осциллограф отображает расчетный EVM и MER через Инструменты-> Измерения-> опция Качества сигнала.
EVM является расчетной величиной вектора ошибок между идеальной точкой созвездия (данный мгновенным картопостроителем символа выход) и точкой созвездия, полученной после передачи, и получите импульсную фильтрацию формы, был выполнен. EVM дает показатель качества относительно искажения, введенного передачей, и получите фильтрацию. В этом случае EVM позволяет разработчику системы определять, приемлемо ли искажение, введенное импульсными формирующий фильтрами из-за эффектов квантования фиксированной точки и неидеальных (усеченных) импульсных характеристик, или в противном случае. Для получения дополнительной информации обратитесь к документации блока EVM Measurement.
MER является мерой отношения сигнал-шум в цифровых приложениях модуляции. Это - отношение средней степени опорного сигнала к среднеквадратичной погрешности. Для получения дополнительной информации обратитесь к документации блока MER Measurement.
Показанный ниже снимок состояния от выхода Constellation Diagram scope.
HDL-код, сгенерированный от подсистемы HDLTx, был синтезирован с помощью Xilinx® ISE на Virtex6 (XC6VLX240T) FPGA и запустился на уровне приблизительно 300 МГц. При работе фильтром передачи RRC с максимальным уровнем вводимые символы QPSK сгенерированы в 75M символы/секунда. Получившаяся теоретическая максимальная скорость передачи данных поэтому 150M выборки/секунда, учитывая данные, переданные и по мне и по каналам Q.
Можно использовать команды makehdl и makehdltb, чтобы сгенерировать HDL-код и испытательный стенд для подсистем в HDLTx. Чтобы сгенерировать HDL-код, используйте следующую команду:
makehdl('commqpsktxhdl/HDLTx')
Чтобы сгенерировать испытательный стенд, используйте следующую команду:
makehdltb('commqpsktxhdl/HDLTx')
При генерации испытательного стенда будет создана модель валидации, который включает внутреннюю конвейерную задержку фильтра передачи RRC. Вторая схема созвездия, которая вызывается, иллюстрирует выход модели валидации.