Этот пример показывает, как реализовать передатчик и приемник 64-QAM для генерации HDL-кода и аппаратной реализации.
Пример передатчика и приемника HDL QAM показывает, как использовать блоки Simulink ®, которые поддерживают генерацию HDL-кода, для реализации обработки основной полосы цифрового передатчика и приемника связи.
Подсистема HDL QAM Tx генерирует комплексное 64-QAM модулированное созвездие. Модель канала с плавающей точкой, Channel, используется, чтобы добавить ослабление, шум канала, смещение частоты несущей и дробную задержку в порядок, чтобы продемонстрировать операцию подсистемы приемника. Подсистема HDL QAM Rx реализует практичный цифровой приемник, чтобы уменьшить нарушения канала с помощью грубого восстановления частоты, восстановления синхронизации системы координат, синхронизации и величины и восстановления фазы. Полученные пакеты данных затем декодируются и печатаются в Командном окне MATLAB ® подсистемой декодирования текстовых сообщений.
Структура верхнего уровня модели приемника QAM показана на следующем рисунке. Подсистемы QAM Tx HDL и QAM Rx HDL оптимизированы для генерации HDL-кода.
Подробная структура подсистемы QAM Tx HDL представлена на рисунке ниже.
Подсистема QAM Tx HDL содержит следующие компоненты, которые более подробно описаны в разделе HDL QAM Transmitter.
Генерация данных и пакетизация - генерирует пакеты, которые будут переданы, группируя биты для отображения в символы
Отображение символов - сопоставляет биты, выводимые из подсистемы генерации и пакетирования данных, с символами QAM
Формирование импульсов - Выполняет формирование импульсов и усиление дискретизации символов с помощью интерполирующего фильтра RRC (Root Raise Cosine) перед передачей
Структуру канала можно увидеть ниже. Поскольку Подсистема Канала предназначена для грубого приближения канала AWGN с ослаблением и смещением частоты, она предназначена для запуска в программном обеспечении. В результате здесь могут использоваться блоки, которые не поддерживаются для генерации HDL-кода, такие как блок Phase/Frequency Offset. Блок Phase/Frequency Offset не поддерживает типы данных с фиксированной точкой, следовательно, преобразование в двойной на входе Подсистемы Канала. Сигнал преобразуется назад в фиксированную точку перед выводом из подсистемы Channel. Дробная задержка и AWGN применяются к переданному сигналу, и блок Gain ослабляет сигнал.
Подробная структура подсистемы QAM Rx HDL представлена на рисунке ниже.
Подсистема QAM Rx HDL содержит следующие компоненты, которые более подробно описаны в разделе HDL QAM Receiver.
Автоматическое управление усилением (AGC) - нормализует степень принимаемого сигнала
Коррекция смещения грубой частоты - оценивает приблизительное смещение частоты и корректирует. Подсистема также содержит фильтр приемного RRC, который уменьшается на 2
Восстановление синхронизации - Повторная амплитуда входного сигнала согласно восстановленному стробу синхронизации так, чтобы решения о символе принимались в оптимальные моменты дискретизации
Величина и фазы - выполняет обнаружение пакетов, мелкозернистую фазу и коррекцию амплитуды
Демодулируйте - Демодулирует сигнал, декодируя символы в биты
Структура подсистемы декодирования текстовых сообщений показана ниже.
Ожидается, что эта подсистема будет запущена в программном обеспечении, поэтому предпочтительно использовать основанные на кадрах сигналы для ускорения расчетов. Подсистема декодирования текстовых сообщений имеет восемь основанных на дискретизации логических входных сигналов: dValid, packetStart и signals bit1 to bit6. Преобразование из сигналов, основанных на дискретизации, в аналоги, основанные на кадрах, реализуется Блоком MATLAB function dataframer. Демодулированные биты действительны только, когда dValid установлен высокий. Блок dataframer использует сигнал dValid, чтобы заполнить линию задержки принятыми битами и сигнал newPacket, чтобы переправить данные, сохраненные в линии задержки, на выход и сбросить линию задержки. Подсистема Descramble и Print обрабатывает полученные данные только тогда, когда его разрешающий сигнал становится высоким. Это происходит, когда либо линия задержки накапливает 336 действительных демодулированных биты, либо сигнал newPacket высок. Это заставит dataframer установить высокий сигнал RxGo. Во время симуляции подсистема Descramble and Print выводит строку «Hello world! ~ 64QAM test string ~ # # #» в командное окно MATLAB, где '# # #' является повторяющейся последовательностью '000', '001,' 002 ',...,' 099 '. Каждые 50 пакетов, вероятность битовой ошибки данных в последних 50 успешно принятых пакетах также отображается в Командном окне MATLAB.
Передатчик HDL содержит блоки генерации и пакетирования данных, отображения символов и формирования импульсов, которые подробно описаны в следующих разделах.
1 - Генерация и упаковка данных
Контроллер FSM (Конечный автомат) и Источник данных производит биты преамбулы и биты данных, выполняет борьбу и строит пакеты. Каждый пакет состоит из 84-битовой преамбулы кода Баркера и 252 бит скремблированных данных. Блок Group Бит преобразует поток битов входных данных в шести биты целое число на 1/6 от входа частоты дискретизации, как требуется отображателем символов.
Подсистема Data Source имеет задержку конвейера 2 выборок. В сложение существует задержка трубопровода между источником данных и подсистемой сопряжения бита. Поэтому действительный сигнал задерживается, чтобы соответствовать задержке конвейера пути данных. Подсистема Group Bits уменьшает частоту дискретизации в 6 раз. Размещение downsample на 6 в допустимом пути управления гарантирует, что частота дискретизации совпадает с частотой дискретизации пути сигнала.
Контроллер FSM - Контроллер FSM реализует машину состояния управления с помощью MATLAB™ функционального блока. FSM имеет два состояния - Pack_Preamble и Append_Data. Состояние Pack_Preamble утверждает сигнал load_preamble и отключает сигналы reset_preamble и load_data. FSM останется в этом состоянии в течение 84 тактов. После этого FSM переходит в Append_Data состояние, задавая сигнал load_data и сигнал reset_preamble при освобождении сигнала load_preamble. FSM останется в этом состоянии в течение 252 тактов. Эти load_preamble и reset_preamble являются логическими и используются для управления счетчиком адреса преамбулы, который управляет загрузкой преамбулы в начале каждого пакета. Сигнал load_data является логическим и используется для включения счетчика адресов данных, который управляет загрузкой данных в пакет.
Источник данных - Подсистема источника данных содержит два LUT, хранящих преамбулу и биты данных. LUT поиска преамбулы адресован счетчиком адреса преамбулы, который управляется сигналами преамбулы сброса и преамбулы нагрузки, сгенерированными FSM контроллера. LUT поиска данных адресуется счетчиком адресов данных, который активируется сигналом load_data, сгенерированным FSM контроллера. Счетчик адреса преамбулы имеет сигнал сброса, сгенерированный контроллером FSM, так как та же преамбула вставляется в начале каждого пакета. Счетчик адресов данных не имеет сигнала сброса, поскольку последовательность адресов данных намного длиннее и будет изменяться для каждого пакета, когда различные биты данных помещены в каждом пакете. В дополнение к включению счетчика для LUT данных, вход данных загрузки используется для управления, когда должен быть включен компонент HDL Data Scrambler, и для управления выбором бит преамбулы или данных через Mux данных преамбулы.
HDL Data Scrambler - HDL Data Scrambler показан на следующем рисунке. Он построен из первых принципов с помощью ворот XOR (для сложения по модулю 2) и регистров. Здесь используется активированная подсистема, чтобы гарантировать, что скремблер включен только при наличии новых входных данных, подлежащих обработке.
Групповые биты - Цель подсистемы групповых битов состоит в том, чтобы сгруппировать шесть отдельных битов в шестибитный беззнаковый целочисленный выход - формат, ожидаемый компонентом отображения символов. Ряд задержек используется для выравнивания 6 бит на входе блока Bit Concat, который объединяется в шестибитный беззнаковый выход. Этот выход затем понижает дискретизацию, чтобы выбрать правильную группировку бит.
2 - Отображение символов
Подсистема сопоставления символов использует блок Rectangular QAM Modulator Baseband, чтобы сопоставить целочисленное входное значение с соответствующим 64-QAM комплексным символом. Блок использует схему Grey Mapping.
3 - Формирование импульсов
Подсистема Формирования Импульсов использует блок RRC Interpolation Filter с коэффициентом повышающей дискретизации 4. В согласованный фильтр реализован приемник. Фильтр конвейерный (см. HDL Block Properties).
Приемник HDL содержит блоки AGC, Коррекция Смещения Частоты, Восстановление Времени, Восстановление Величины и Фазы и Демодуляция, которые подробно описаны в следующих разделах.
1 - АРУ
АРУ гарантирует, что амплитуда входа грубой частотной компенсации нормирована к области значений 1 к -1.
Структура AGC показана на следующей схеме, а регистры трубопроводов показаны зеленым цветом на протяжении всей модели.
2 - Коррекция смещения грубой частоты
Подсистема коррекции смещения грубой частоты оценивает и корректирует смещение частоты с помощью алгоритма Луиза-Реджаннини [1]. Подсистема оценки смещения частоты делает оценку, основанную на выходе корневого приёмного косинусоидного фильтра, затем коррекция смещения частоты, основанная на этой оценке, применяется на входе к корневому приёмному косинусоидному фильтру. Это гарантирует, что требуемый фрагмент принятой полосы пропускания сигнала будет лучше выровнена с частотной характеристикой фильтра приемника, улучшая ОСШ по сравнению с коррекцией на выходе корневого приёмного косинусоидного фильтра.
Когда алгоритм оценки и коррекции работает в закрытом цикле, делая итерационные обновления предыдущих оценок смещения частоты, система будет постепенно сходиться к результату. Коэффициент усиления цикла включен для реализации усреднения оценок. Эта архитектура описана в [1]. Root Raised Cosine Receive Filter реализует операцию понижающей дискретизации, поэтому необходимо увеличить сигнал обратной связи, используя повторяющийся блок, чтобы соответствовать скорости на входе в фильтр.
Обратите внимание, что существует смещение остаточной частоты на выходе Подсистемы Коррекции Смещения Грубой Частоты, которое изменяется с течением времени, даже если смещение частоты на входе в подсистему остается неизменным, когда делаются новые оценки смещения. Мелкозернистая коррекция остаточного смещения выполняется позже в приемнике подсистемой величина и Phase Recovery.
Оценка смещения частоты: Подсистема оценки смещения частоты реализует алгоритм Луиза-Регианнини, описанный в [1]. Сигнал сначала поднимается на степень четыре, чтобы реализовать 4-ю оценку фазы мощности, как описано в [2]. Это реализовано 2 каскадными блоками продукта с добавлением конвейеризации для повышения эффективности оборудования. Дискретный конечная импульсная характеристика реализует фильтр с прямоугольными весами, составленными из всех, описанных в [1]. Шкала конечной импульсной характеристики масштабирует конечную импульсную характеристику выхода для расчета усиления фильтра. Блок Complex To Magnitude-Angle HDL Optimized используется для реализации функции, как того требует алгоритм Luise-Reggiannini. Этот блок вычисляет фазу с помощью аппаратного алгоритма CORDIC. Для получения дополнительной информации смотрите блок Complex to Magnitude-Angle HDL Optimized (DSP System Toolbox) в DSP System Toolbox™. Перед выходом Подсистемы оценки смещения частоты сигнал масштабируется так, как требуется алгоритмом Luise-Regiannini, и, в сложение, масштабируется, чтобы соответствовать размеру слова NCO.
3 - Восстановление синхронизации
Подсистема восстановления синхронизации показана на следующей схеме.
Подсистема восстановления синхронизации реализует ФАП, описанную в главе 8 [3], чтобы исправить ошибку синхронизации в принятом сигнале. В среднем Подсистема Восстановления Синхронизации генерирует одну выходную выборку для каждые двух входных выборок.
Блок функции Interpolation Control реализует уменьшающийся счетчик по модулю-1, описанный в главе 8.4.3 [3], чтобы сгенерировать управляющий сигнал, чтобы облегчить выбор интерполяции интерполяционного фильтра. Этот сигнал управления также включает детектор ошибок синхронизации (TED), так что он вычисляет ошибки синхронизации в правильные моменты синхронизации. Подсистема управления интерполяцией обновляет различие во времени, mu, для Интерполяционного фильтра, генерируя интерполяции в оптимальные моменты дискретизации.
Интерполяционный Фильтр является параболическим фильтром Фэрроу с, как описано в Главе 8.4.2 [3]. Фильтр использует значение 0,5 так, что все коэффициенты фильтра становятся 1, -1/2 и 3/2, что значительно упрощает структуру интерполятора. На основе интерполяций ошибки синхронизации генерируются детектором ошибок пересечения пересечения нулем по времени, как описано в главе 8.4.1 [3].
Интерполяционный Фильтр вводит дробную задержку в сигнал в порядок для компенсации ошибки синхронизации. Дробная задержка управляется входным сигналом mu. Когда ошибка синхронизации (задержка) достигает контуров символа, в выходе есть одна дополнительная или отсутствующая интерполяция. Детектор ошибок синхронизации реализует набивку битов или пропуск, чтобы обработать дополнительные или отсутствующие интерполяции.
Подробную информацию о набивке и пропуске бит см. в главе 8.4.4 [3]. Цикл восстановления синхронизации обычно генерирует один выходной символ на каждые две входные выборки. Это также выводит строб синхронизации (сигнал validOut), который запускается с входной частотой выборки. При нормальных обстоятельствах значение строба является просто последовательностью чередующихся таковых и нулей. Однако это происходит только, когда относительная задержка между передатчиком и приемником содержит некоторую дробную часть одного периода символа, и целочисленная часть задержки (в символах) остается постоянной. Если целочисленная часть относительной задержки изменяется, значение строба может иметь два последовательных нуля или два последовательных таковых.
4 - Величина & Фаза Восстановление
Подсистема Magnitude & Phase Recovery выполняет пакетную синхронизацию, мелкозернистое восстановление частоты и мелкозернистое восстановление амплитуды.
Синхронизация пакетов: Подсистема Preamble Matched Filter использует комплексное сопряжение преамбулы с обращением во времени в качестве весов фильтра. Модуль выхода Подсистемы Согласованного Фильтра Преамбулы вычисляется с помощью Подсистемы Модуля. Выходы подсистемы Modulus затем сравниваются с порогом для обнаружения преамбулы в начале пакета. Блок MATLAB function генерирует сигнал isPreamble, который поддерживается высоким во длительность преамбулы каждого пакета. Блок MATLAB function также генерирует двухвалидный сигнал, который устанавливается высоким на время пакета, когда обнаружена преамбула.
Тонкозернистая Величина и восстановление фазы: 1-Tap подсистема фильтра DLMS (Delayed Minest Mean Squares), адаптирующаяся по преамбуле и используя опорный сигнал, сгенерированную источником желаемого сигнала, исправляет ошибки фазы и величины. Сигнал isPreamble, сгенерированный блоком MATLAB function и установленный высоким для 14 символов преамбулы после обнаружения пакета, используется, чтобы включить требуемый источник сигнала и включить Адаптировать вход 1-Tap DLMS. Когда сигнал isPreamble является низким, вес в 1-Tap DLMS сохраняется, и источник желаемого сигнала сбрасывается. Алгоритм Delayed LMS (DLMS) [4] используется здесь, чтобы позволить ввести больше конвейеризации и, следовательно, уменьшить критический путь в фильтре и увеличить максимальную тактовую частоту, достижимую после реализации в оборудовании.
Внутренняя структура Подсистемы Источника Желаемого Сигнала показана ниже. Поиск данных LUT содержит символы преамбулы.
Внутренняя структура подсистемы 1-Tap DLMS показана ниже.
5 - Демодуляция
Подсистема Demodulate преобразует каждый 64-QAM входной символ в биты, выводя 6 битов для каждого входного символа. Чтобы сгенерировать HDL для блока Rectangular QAM Demodulator Baseband, минимальное расстояние между символами должно быть установлено равным 2. Это в 8 раз больше, чем расстояние между символами, сгенерированными в передатчике. В результате символы, вводимые в подсистему Demodulate, должны быть соответствующим образом масштабированы. Это делается с помощью арифметического блока Shift, который сдвигает двоичную точку слева на 3 бита, чтобы достичь необходимого умножения на 8.
Во время симуляции модель отображает успешно полученные пакеты в Командном окне MATLAB. На каждые 50 пакетах вероятность битовой ошибки данных в последних 50 успешно принятых пакетах также отображается в Командном Окне MATLAB.
После выполнения симуляции модель отображает шесть различных рисунков, иллюстрирующих различные аспекты эффективности приемника. Они показаны ниже, вместе с объяснением каждого графика. Первые пять графиков показывают адаптацию, в течение длительности симуляции, Автоматического Управления Усилением, Оценки Смещения Частоты, оценки Положения Восстановления Времени, вещественной части созвездия на выходе Подсистемы Восстановления Времени и на выходе Подсистемы Восстановления Величины и Фазы. Последний график показывает сигнальное созвездие на выходе подсистемы Magnitude & Phase Recovery после любой адаптации.
График усиления AGC
Следующий график иллюстрирует адаптацию подсистемы автоматического управления усилением с течением времени для нормализации выхода. Должен быть достигнут баланс между тем, как быстро AGC адаптируется, и тем, сколько пульсации после достижения относительно постоянного уровня усиления. Использование большего коэффициента усиления цикла AGC адаптируется быстрее, но амплитуда после адаптации изменяется больше. Использование меньшего усиления цикла замедляет адаптацию AGC, сглаживая уровень после адаптации, но требуя больше времени, чтобы адаптироваться.
График оценки смещения частоты
Следующий график иллюстрирует, как смещение грубой частоты постепенно адаптируется к смещению частоты, введенному системой (синяя горизонтальная линия). Это показывает, что, хотя оценка близка к фактическому смещению частоты, все еще существует остаточная ошибка, которая должна быть устранена позже в системе.
График положения восстановления синхронизации
Следующий график показывает вход mu в Интерполяционный фильтр. Обратите внимание, что mu сходится к устойчивому состоянию (с некоторой пульсацией) с течением времени, так как задержка канала не изменяется во время симуляции.
Реальная часть выходного графика восстановления синхронизации
Следующий график иллюстрирует, как действительная часть выхода Подсистемы Восстановления Времени начинает сходиться к восьми отдельным уровням амплитуды, ожидаемым для 64QAM. Однако, поскольку смещение остаточной частоты, оставшееся после восстановления грубой частоты, еще не было исправлено в этой точке приемника, качество сигнала изменяется с различными уровнями амплитуды, более четко видимыми в одних точках, чем в других. Созвездие все еще имеет некоторое вращение в этой точке приемника.
График действительной части оценок символов
Следующий график показывает, как реальная часть выхода подсистемы Magnitude & Phase Recovery адаптируется с течением времени. В отличие от предыдущего графика, эта схема сгенерирована после восстановления мелкой частоты, поэтому созвездие не должно вращаться. Первоначально нет выборок, так как выход из блока не действителен, и затем следует увидеть восемь чётких уровней амплитуды - представляющих восемь действительных уровней амплитуды 64-QAM созвездия.
Восстановленный график созвездия
Следующий график показывает созвездие на выходе подсистемы Magnitude & Phase Recovery после того, как система успела адаптироваться к каналу. Уменьшение шума канала должно уменьшить размер каждой из точек созвездия; увеличение шума канала начинает объединять отдельные точки созвездия вместе. Если система не успешно исправила смещение частоты, то здесь виден поворот созвездия.
1. М. Луизе и Р. Реджаннини, «Восстановление несущей частоты в полностью цифровых модемах для пакетных передач», IEEE Trans. Communications, pp. 1169-1178, 1995.
2. Moeneclaey, M. and De Jonghe, G. «ML-ориентированная NDA-несущая синхронизация для общих вращательно симметричных сигнальных созвездий», IEEE Trans. Communications, pp. 2531-2533, 1994.
3. Майкл Райс, «Цифровые коммуникации - подход в дискретном времени», Prentice Hall, апрель 2008 года.
4. Г. Лонг, Ф. Линг и Дж. Г. Проакис «Алгоритм LMS с адаптацией с запаздывающим коэффициентом», IEEE Trans. on Acoustics, Speech and Signal Processing, pp.1397-1405, 1989.