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

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

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

Системные технические требования

Этот раздел объясняет технические требования передатчика и приемника, используемого в этом примере. Формат системы координат является базирующимся пакетом. Каждый пакет имеет преамбулу длины 26 битов. Каждый бит 13 битов, последовательность Баркера повторяется дважды, чтобы сгенерировать преамбулу, упорядочивает таким образом, что тот же бит модулируется в в фазе и квадратурной фазе Модулятором QPSK. Последовательность преамбулы сопровождается на 2 240 битов данных о полезной нагрузке. Запуски передатчика с помощью импульсного формирующий фильтра корня повысил косинус (RRC) с фактором спада 0,5, приводя к пропускной способности 1.5 раза уровня символа и четырех выборок на символ (частота дискретизации четыре раза уровня символа). Импульсная характеристика RRC охватывает более чем четыре смежных символа. Битрейт является дважды уровнем символа. Эффективная средняя скорость передачи данных является временами битрейта КПД системы координат. КПД системы координат (2240 / (2240+26)) = 0.9885.

Уровень символа по умолчанию установлен в 1.92 Mbaud, который приводит к пропускной способности 1,5 раз 1.92e6, который равняется 2,88 МГц, и частота дискретизации 4 раз 1.92e6, который равняется 7.68 членам Шотландского парламента, битрейту 2 раз 1.92e6, который равняется 3,84 Мбит/с. Эффективная средняя скорость передачи данных, поддержанная этой системой, 0.9885 раза 3.84e6, который равняется 3,7959 Мбит/с. Эти технические требования изменяются с изменением в уровне символа.

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

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

Файловая структура

Одна модель Simulink и три файла 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 в виде булева скаляра.

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

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

  • validOut — Управляющий сигнал подтвердить выходные данные, возвращенные как булев скаляр.

  • txDiagBus — Сигнал состояния с диагностическими выходными параметрами, возвращенными как сигнал Шины.

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

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

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

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

  • validIn — Управляющий сигнал подтвердить dataIn в виде булева скаляра.

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

  • выходные данные — Декодируемые биты выходных данных, возвращенные как булев скаляр.

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

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

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

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

Битный Packetizer

Битная подсистема Packetizer состоит из Пакетного Контроллера функция MATLAB, Хранилище Битов и подсистема Мультиплексора. Последовательность преамбулы хранится в ищите таблицу (LUT) в подсистеме Хранилища Битов Преамбулы. Поток битов данных в подсистему Хранилища Битов и хранится в RAM в подсистеме Хранилища Битов данных. Пакетный Диспетчер функция MATLAB читает последовательность преамбулы, сопровождаемую по условию биты, сохраненные в RAM для каждого пакета. Подсистема Мультиплексора оптимизировала биты преамбулы и биты данных.

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

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

Подсистема Скремблера Данных о HDL скремблирует биты данных в каждом пакете при помощи управляющих сигналов, сгенерированных подсистемой Генератора Битов.

Модулятор QPSK

Подсистема Модулятора QPSK использует блок QPSK Modulator Baseband (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 сверхдискретизировала вход на коэффициент четыре и использует блок Discrete FIR Filter HDL Optimized (DSP System Toolbox) с импульсной характеристикой RRC к импульсной форме форма волны передатчика. Получение просачивается формы Приемника QPSK согласованный фильтр к этому фильтру передачи.

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

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

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

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

RRC получают фильтр

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

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

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

Подсистема Синхронизатора Символа является основанной на PLL реализацией. Это генерирует выборки в оптимальный момент времени (максимальный глаз вводный момент) как описано в Главе 8.5 [1]. Подсистема генерирует тот выходная выборка для каждых четырех входных выборок. Подсистема Фильтра Интерполяции реализует кусочный параболический интерполятор с аппаратным ресурсом эффективная неоплодотворенная структура как описано в Главе 8.4.2, и неоплодотворенные коэффициенты сведены в таблицу в Таблице 8.4.1 (свободный параметр$\alpha$ коэффициентов взят в качестве 0,5) [1]. Этот фильтр вводит дробные задержки входной формы волны. Подсистема TED Гарднера реализует Гарднера, синхронизирующего детектор ошибок. Детектор ошибок синхронизации описан в Главе 8.4.1 [1]. Контурный фильтр фильтрует ошибку синхронизации, и ошибка синхронизации передается блоку MATLAB function Управления Интерполяцией. Этот блок реализует mod-1, постепенно уменьшающийся в противоречии с, вычисляют дробные задержки на основе цикла, отфильтрованного, синхронизируя ошибку как описано в Главе 8.4.3 [1], чтобы сгенерировать interpolants в оптимальные моменты выборки. Подсистема Указателя Уровня выбирает необходимый interpolant, обозначенный стробом. Эта выборка соответствует максимальному открытию глаза глазковой диаграммы перед синхронизацией символа.

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

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

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

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

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

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

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

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

Запустите модель

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-код синтезируется для оценочной платы Xilinx® Zynq®-7000 ZC706. Место сообщения и использование ресурса маршрута показывают в этой таблице. Максимальная частота операции составляет 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. Майкл Райс, цифровая связь - подход дискретного времени, Prentice Hall, апрель 2008.

2. Флойд М.Гарднер, методы Phaselock, третий выпуск, John Wiley & Sons, Inc., 2005

Смотрите также

Блоки