exponenta event banner

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

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

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

Технические характеристики системы

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

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

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

В этом разделе описывается высокоуровневая архитектура передатчика и приемника QPSK, как показано на блок-схеме. Передатчик QPSK производит выборку входного сигнала со скоростью передачи битов, в два раза превышающей скорость передачи символов. Генератор и упаковщик данных собирает биты данных, генерирует биты преамбулы и формирует биты пакета. Скремблер данных HDL скремблирует биты данных каждого пакета, чтобы увеличить переходы битов и избежать длинных последовательностей одного и того же бита. Модулятор QPSK модулирует биты пакета для генерации символов QPSK. Фильтр передачи RRC увеличивает частоту дискретизации и формирует импульсные формы символов QPSK для генерации формы сигнала Tx со скоростью дискретизации, в четыре раза превышающей скорость передачи символов. Приемник QPSK производит выборку входного сигнала на скорости передачи. Цифровой АРУ выполняет управление усилением до требуемого уровня амплитуды принятого сигнала. Фильтр приема 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, указанный как логический скаляр.

Выходы датчика

  • DataOut - выходной передаваемый сигнал, возвращаемый в виде 16-битовых комплексных данных со скоростью выборки, в четыре раза превышающей скорость передачи символов.

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

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

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

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

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

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

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

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

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

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

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

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

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

Битовый упаковщик

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

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

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

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

Модулятор QPSK

Подсистема модулятора QPSK использует блок основной полосы частот модулятора QPSK для модуляции преамбулы и битов данных для генерации символов 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 FIR Filter HDL Optimized с импульсным откликом RRC на импульсную форму сигнала передатчика. Фильтр приема в приемнике QPSK формирует согласованный фильтр для этого фильтра передачи.

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

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

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

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

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

RRC-фильтр приема представляет собой блок, оптимизированный для дискретного FIR-фильтра HDL с согласованными коэффициентами фильтра, используемого для формирования импульсов в передатчике. Согласованная RRC-фильтрация генерирует RC-импульсную форму сигнала, которая имеет нулевые характеристики ISI при максимальном открытии глаза на диаграмме глаз формы сигнала. Кроме того, согласованный процесс фильтрации максимизирует отношение мощности сигнала к шуму (SNR) выходного сигнала фильтра.

Синхронизатор частоты и времени

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

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

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

Подсистема детектора преамбулы выполняет непрерывную корреляцию для входных данных с последовательностью Баркера. Корреляция реализуется в виде свертки с обращенной последовательностью Баркера в качестве коэффициентов для блока оптимизации HDL дискретного КИХ-фильтра, и величина коррелированного выходного сигнала обнаруживается с использованием блока оптимизации HDL с комплексным на амплитуду-угол внутри подсистемы коррелятора. Величина корреляции сравнивается с порогом. Подсистема поиска пиков начинает поиск максимального пика корреляции, который превысил порог для каждой длительности одного кадра, и записывает смещение синхронизации. Подсистема регулировки синхронизации синхронизирует синхронизацию пакетов на основе смещения синхронизации для генерации сигнала syncPulse, который указывает синхронизированную выборку пакетов для последующей подсистемы.

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

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

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

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

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

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

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

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

Проверка и результаты

Управляемый 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. Майкл Райс, компания «Digital Communications - A Discrete-Time Approach», Прентис Холл, апрель 2008 года.

2. Флойд М. Гарднер, Phaselock Techniques, Third Edition, John Wiley & Sons, Inc., 2005

См. также

Блоки