Передатчик и приемник HDL QPSK

Этот пример показывает, как реализовать передатчик и приемник QPSK в Simulink ®, который оптимизирован для генерации HDL-кода и аппаратной реализации.

Модель, показанная в этом примере, модулирует данные на основе квадратурной фазы сдвиги манипуляции (QPSK). Цель этого примера состоит в том, чтобы смоделировать HDL систему связи QPSK, которая может передавать и восстанавливать информацию для системы реального времени. Приемник реализует синхронизацию временных параметров символа и частоту несущей и фазовую синхронизацию, которые необходимы в системе связи с одной несущей.

Спецификации к системе

В этом разделе поясняются спецификации передатчика и приемника, используемые в этом примере. Формат системы координат основан на пакете. Каждый пакет имеет преамбулу длиной 26 бит. Каждый бит 13-битовой последовательности Баркера повторяется дважды, чтобы сгенерировать последовательность преамбулы, так что один и тот же бит модулируется в синфазной и квадратурной фазах модулятором QPSK. Последовательность преамбулы сопровождается 2240 битами данных полезной нагрузки. Передатчик запускается с использованием корневого приподнятого косинусоидального (RRC) импульсного фильтра с коэффициентом отката 0,5, в результате чего полоса пропускания в 1,5 раза превышает скорость символа и четыре выборки на символ (скорость дискретизации в четыре раза превышает скорость символа). Импульсная характеристика RRC охватывает четыре смежных символа. Скорость передачи битов в два раза превышает скорость передачи символов. Эффективной средней скоростью передачи битов является скорость передачи битов, умноженная на эффективность системы координат. Система координат эффективности (2240/( 2240 + 26)) = 0,9885.

Скорость символа по умолчанию устанавливается равной 1,92 Мбод, что приводит к пропускной способности в 1,5 раза больше 1,92e6, что равняется 2,88 МГц, и скорости дискретизации в 4 раза больше 1,92e6, что равняется 7,68 Мбит/с, битрейт в 2 раза больше 1,92e6, что равняется 3,84 Мбит/с. Эффективная средняя скорость передачи битов, поддерживаемая этой системой, составляет 0,9885 раза 3,84e6, что равняется 3,7959 Мбит/с. Эти спецификации изменяются с изменением скорости символа.

Архитектура модели

В этом разделе описывается высокоуровневая архитектура передатчика и приемника QPSK, как на блоке. Передатчик QPSK дискретизирует вход со скоростью битов в два раза больше, чем скорость символа. Data Generator & Packetizer собирает биты данных, генерирует биты преамбулы и формирует биты пакета. HDL Data Scrambler скремблирует биты данных каждого пакета, чтобы увеличить битовые переходы и избежать длительных рабочих последовательностей того же бита. Модулятор QPSK модулирует биты пакета, чтобы сгенерировать символы QPSK. RRC Transmit Filter усиливает и импульсно-формирует символы QPSK, чтобы сгенерировать форму волны Tx со скоростью дискретизации, в четыре раза превышающей частоту дискретизации символа. Приемник QPSK дискретизирует вход со скоростью передачи. Цифровой АРУ выполняет управление усилением до желаемого уровня амплитуды принимаемой формы волны. Фильтр приема RRC выполняет согласованную фильтрацию на выходе AGC. Синхронизатор частоты и времени выполняет операции синхронизации и генерирует символы QPSK для каждого пакета. Демодулятор QPSK демодулирует символы QPSK, чтобы сгенерировать пакетные биты. HDL Data Descrambler дескремблирует биты пакетных данных, которые поступают из приемника.

Структура файла

Один модель и три файла MATLAB ® создают этот пример.

  • commhdlQPSKTxRx.slx - Модель Simulink верхнего уровня

  • commhdlQPSKTxRxParameters.m - Генерирует параметры для QPSK Tx и QPSK Rx, необходимые для инициализации

  • commhdlQPSKTxRxModelInit.m - Инициализирует модель commhdlQPSKTxRx.slx

  • generateHelloworldMsgBits.m - Генерирует биты сообщений «Hello world xxx». xxx относится к любому значению от 000 до 100

Системный интерфейс

Этот рисунок показывает модель верхнего уровня системы передатчика и приемника QPSK.

Входы передатчика

  • dataIn - Входные данные, заданные как логический скаляр.

  • validIn - Управляющий сигнал для проверки dataIn, заданный как логический скаляр.

Выходы передатчика

  • dataOut - Выводит переданную форму волны, возвращаемую как 16-битные комплексные данные со скоростью дискретизации, в четыре раза превышающей скорость символа.

  • validOut - Управляющий сигнал для проверки dataOut, возвращаемый как логический скаляр.

  • txDiagBus - сигнал состояния с выходами диагностики, возвращаемый как сигнал шины.

  • dataReady - Сигнал для указания готовности к входным сигналам, возвращаемый как логический скаляр.

Передатчик позволяет сигналу dataReady указать, что он готов принять входные биты. Передатчик создает пакет после того, как он принимает все биты данных, соответствующие этому пакету. Если все биты данных, соответствующие этому пакету, не получены, передатчик генерирует фиктивные пакеты. Для фиктивного пакета последовательность Баркера не используется в преамбуле, и биты данных генерируются случайным образом внутри. Пока входная битовая скорость меньше или равна эффективной битовой скорости, сигнал dataReady остается высоким, так что вход не получает обратного давления от dataReady.

Входы приемника

  • dataIn - Входные данные, заданные как 16-битные комплексные данные со скоростью дискретизации в качестве выхода передатчика.

  • validIn - Управляющий сигнал для проверки dataIn, заданный как логический скаляр.

Выходы приемника

  • dataOut - декодированные выходные биты данных, возвращенные как логический скаляр.

  • ctrlOut - Сигнал шины с начальным, конечным и допустимым сигналами, возвращаемый как сигнал шины.

  • rxDiagBus - сигнал состояния с выходами диагностики, возвращаемый как сигнал шины.

Структура передатчика

Этот рисунок показывает модель верхнего уровня подсистемы QPSK Tx.

Битовый пакетизатор

Подсистема Bit Packetizer состоит из функции MATLAB контроллера пакетов, хранилища бит и подсистемы мультиплексора. Последовательность преамбулы хранится в интерполяционной таблице (LUT) внутри подсистемы Preamble Bits Store. Биты данных в подсистему Bits Store и хранятся в ОЗУ в подсистеме Data Bits Store. Функция MATLAB контроллера пакета считывает последовательность преамбулы, за которой следуют биты данных, сохраненные в ОЗУ для каждого пакета. Подсистема мультиплексора оптимизирует биты преамбулы и биты данных.

Подсистема хранилища бит данных состоит из ОЗУ, которое может хранить два пакета. Эта ОЗУ обеспечивает гибкость для работы передатчика с дискретным допустимым входом. Функция MATLAB контроллера пакетов считывает данные из ОЗУ только в том случае, если ОЗУ содержит минимум один пакет бит данных. Логика чтения и записи спроектирована таким образом, чтобы ОЗУ не переполнялась. Когда ОЗУ не содержит минимум одного пакета бит данных, передатчик генерирует фиктивный пакет. Преамбула не использует последовательность Баркера для фиктивного пакета, так что обнаружение преамбулы не обнаруживает его.

Скремблер данных HDL

Подсистема HDL Data Scrambler скремблирует биты данных в каждом пакете, используя сигналы управления, сгенерированные подсистемой Bits Generator.

Модулятор QPSK

Подсистема модулятора QPSK использует блок базовой полосы модулятора QPSK (Communications Toolbox), чтобы модулировать преамбулу и биты данных, чтобы сгенерировать символы QPSK. В нем используется серое отображение, как описано в этой таблице.

    Bits         Mapping     
    ____    _________________

     00     0.70711+0.70711i 
     01     -0.70711+0.70711i
     11     -0.70711-0.70711i
     10     0.70711-0.70711i 

Фильтр передачи RRC

Подсистема RRC Transmit Filter увеличивает вход в четыре раза и использует блок Discrete конечной импульсной характеристики Filter HDL Optimized (DSP System Toolbox) с импульсной характеристикой RRC на импульсную форму волны передатчика. Фильтр приема в приемнике QPSK формирует согласованный фильтр для этого передающего фильтра.

Структура приемника

Этот рисунок показывает модель верхнего уровня подсистемы QPSK Rx.

Автоматическое управление усилением

Когда амплитуда входного сигнала влияет на эффективность PLL символа и синхронизатора несущей, подсистема автоматического управления усилением помещается перед ними. Квадратный выход величины сравнивается с ссылкой AGC, чтобы сгенерировать амплитудную ошибку. Эта ошибка умножается на коэффициент усиления цикла и передается через интегратор, чтобы вычислить необходимый коэффициент усиления. Полученный коэффициент усиления умножается на вход AGC, чтобы сгенерировать выход AGC. Для получения дополнительной информации см. главу 9.5 [1].

Фильтр приема RRC

RRC Receive Filter является блоком Discrete конечной импульсной характеристики Filter HDL Optimized (DSP System Toolbox) с согласованным фильтром коэффициентами фильтра, используемого для формирования импульсов в передатчике. Согласованная с RRC фильтрация генерирует RC-импульсную форму волны, которая имеет нулевые характеристики ISI при максимальном открытии глаза в глазковой диаграмме формы волны. Кроме того, процесс согласованной фильтрации максимизирует отношение сигнал/шум степени (ОСШ) фильтра выхода.

Частотная и временная синхронизация

Подсистема частотной и временной синхронизации выполняет символьную синхронизацию, синхронизацию несущей и обнаружение преамбулы для пакетной синхронизации. Это также оценивает и устраняет неоднозначность фазы, которая остается некорректированной при синхронизации несущей.

Подсистема Symbol Synchronizer является реализацией на основе ФАПЛ. Он генерирует выборки в оптимальный момент времени (максимальный момент открытия глаз), как описано в главе 8.5 [1]. Подсистема генерирует одну выходную выборку на каждые четыре входных выборки. Подсистема Интерполяционного Фильтра реализует кусочно-параболический интерполятор с аппаратной ресурсоэффективной структурой farrow, как описано в Главе 8.4.2, и коэффициенты farrow приведены в Таблице 8.4.1 (свободный параметр$\alpha$ коэффициентов принимается как 0,5) из [1]. Этот фильтр вводит дробные задержки в вход сигнал. Подсистема Gardner TED реализует детектор временных ошибок Гарднера. Детектор ошибки синхронизации описан в главе 8.4.1 [1]. Фильтр цикла фильтрует ошибку синхронизации, и ошибка синхронизации передается в функциональный блок Interpolation Control MATLAB. Этот блок реализует уменьшающийся счетчик mod-1, чтобы вычислить дробные задержки на основе циклической фильтрованной ошибки синхронизации, как описано в главе 8.4.3 [1], чтобы сгенерировать интерполяции в оптимальные моменты дискретизации. Подсистема Указатель выбирает необходимую интерполяцию, обозначенную стробом. Эта выборка соответствует максимальному открытию глаза глазковой диаграммы перед синхронизацией символа.

Подсистема синхронизатора несущей является PLL ТИПА II с синусоидальной фазой детектором ошибок, который работает в рабочей точке 45 степеней. Детектор фазовой ошибки описан в главе 7.2.2, а расчетные уравнения описаны в Приложении C [1]. Подробный анализ TYPE II PLL с синусоидальным фазовым детектором с нулевой рабочей точкой описан в главе 4 [2]. Функция знака детектора фазы в действительной и воображаемой частях преобразует все углы в 4 квадрантах в первый квадрантный угол (от 0 до 90 градусов), что создает неоднозначность в 90 180,270 градусов для второго (от 90 до 180 градусов), третьего (от -180 до -90 градусов) и четвертого (от -90 до 0 градусов) квадратичных Ошибка фазы вычисляется как отклонение от рабочей точки (45 степени) детектора фазы. Пропорциональный фильтр плюс интегратор в Подсистеме Цикла Filter фильтрует ошибку фазы. Фильтр цикла устанавливает нормированную шумовую полосу (нормированную частотой дискретизации) и коэффициент затухания контура. Нормированный цикл полоса по умолчанию установлен на 0,005, а коэффициент затухания по умолчанию - на 0,7071. Отфильтрованная ошибка задается как источник шага фазы в Подсистему прямого цифрового синтеза, которая использует блок NCO HDL Optimized (DSP System Toolbox) для сложной экспоненциальной генерации фазы. Фаза комплексной экпоненты используется для коррекции частоты и фазы входа. Подробный анализ прямого цифрового синтеза описан в главе 9.2.2 [1].

Подсистема детектора преамбулы выполняет непрерывную корреляцию для входа с последовательностью Баркера. Корреляция реализована как свертка с обратной последовательностью Баркера в качестве коэффициентов для блока Socrete FIR Filter HDL Optimized (DSP System Toolbox), и величина коррелированного выхода найдена с использованием оптимума Complex to Magnitude-Angle HDL. Величина корреляции сравнивается с порогом. Подсистема Peak Search начинает поиск максимального пика корреляции, который превысил порог для каждой одной системы координат длительности и записывает смещение синхронизации. Подсистема регулировки синхронизации синхронизирует синхронизацию пакета на основе смещения синхронизации, чтобы сгенерировать сигнал syncPulse, который указывает синхронизированную выборку пакета в последующую подсистему.

Подсистема оценки и коррекции неоднозначности фазы работает на основе уникального метода слова для разрешения неоднозначности фазы, описанного в главе 7.7.1 [1]. Этот метод использует последовательность преамбулы как последовательность ссылки. Эталонная последовательность сопряжена и умножена с последовательностью преамбулы на входе, и остаточная фаза извлечена как оценка неоднозначности фазы. Эта оценка используется для исправления неоднозначности путем поворота созвездия в противоположном направлении неоднозначности.

Подсистема пакетного контроллера генерирует сигналы управления для контуров пакета.

Демодулятор QPSK

Подсистема демодулятора QPSK использует блок QPSK Demodulator Baseband (Communications Toolbox), чтобы демодулировать синхронизированные символы пакета и сгенерировать биты.

Дескрамблер данных HDL

Подсистема HDL Data Descrambler дескремблирует демодулированные биты, чтобы сгенерировать пользовательские биты.

Запуск модели

The QPSKTxRxVerification.m скрипт описывает процедуру, чтобы инициализировать, сгенерировать входы, запустить и проверить commhdlQPSKTxRx.slx моделировать при помощи commhdlQPSKTxRxModelInit.m скрипт инициализации. Можно назначить пользовательские данные переменным из раздела Custom Frame Configuration этого скрипта и запустить скрипт, чтобы запустить модель. Этот скрипт верификации генерирует ссылку сигнал в скрипте, сравнивает ссылку сигнал с выходом передатчика и сравнивает переданные биты с декодированными пользовательскими битами.

Верификация и результаты

Выполняйте QPSKTxRxVerification.m чтобы запустить модель.

> > QPSKTxRxVerification

Tx:
Maximum QPSK Tx symbol error: Real:1.4496e-05 Imaginary:1.4496e-05

Maximum QPSK Tx waveform error: Real:7.8708e-05 Imaginary:7.8708e-05

Rx:
Number of packets missed = 0 out of 10

Number of packets false detected = 0 out of 10

Number of bits errored = 0 out of 20160

Генерация HDL-кода

Регистры трубопровода (показанные голубым цветом) добавляются по всей модели, чтобы убедиться, что подсистемы передатчика и приемника не имеют длинного критического пути.

Чтобы проверить и сгенерировать HDL-код, на который ссылаются в этом примере, необходимо иметь продукт HDL- Coder™.

Чтобы сгенерировать HDL-код для подсистем передатчика и приемника, обновите модели и используйте следующую команду:

  makehdl('commhdlQPSKTxRx/QPSK Tx')  and   makehdl('commhdlQPSKTxRx/QPSK Rx')

Чтобы сгенерировать испытательный стенд, используйте следующую команду:

  makehdltb('commhdlQPSKTxRx/QPSK Tx')  and   makehdltb('commhdlQPSKTxRx/QPSK Rx')

Время генерации испытательного стенда зависит от времени симуляции.

Получившийся HDL-код синтезируется для платы оценки ZC706 Xilinx ® Zynq ® -7000. В этой таблице показаны данные об использовании ресурсов постамата и маршрута. Максимальная частота операции составляет 280 МГц для передатчика и 215 МГц для приемника.

       Resources       Tx Usage    Rx Usage
    _______________    ________    ________

    Slice Registers      318         6231  
    Slice LUT            137         4506  
    RAMB36               0           8     
    RAMB18               1           0     
    DSP48                18          88    

Дальнейшие исследования

Можно изменить условия канала, настроив переменные, перечисленные в этой таблице в QPSKTxRxVerification.m скрипт, а затем запуск скрипта. Скрипт применяет условия канала и запускает модель.

        Variable Name                                               Description                                      
    ______________________    _______________________________________________________________________________________

    dataBits                  Data bits to the transmitter                                                           
    Rsym                      Symbol rate specified in symbols per second                                            
    fractionalTimingOffset    Normalized timing phase offset specified in the range >= 0 and < 1                     
    timingFrequencyOffset     Timing frequency offset specified in PPM                                               
    EbN0dB                    Energy per information bit to single sided noise power spectral density specified in dB
    CFO                       Carrier frequency offset specified in Hz                                               
    CPO                       Carrier phase offset specified in degrees                                              

Ссылки

1. Майкл Райс, Digital Communications - подход в дискретном времени, Prentice Hall, апрель 2008 года.

2. Floyd M.Gardner, Phaselock Technologies, Third Edition, John Wiley & Sons, Inc., 2005

См. также

Блоки