Этот пример показывает, как реализовать 64-QAM передатчик и получатель для генерации HDL-кода и аппаратной реализации. Эти модели основаны на моделях HDL Optimized QPSK Transmitter и HDL Optimized QPSK Receiver with Captured Data.
Оптимизированный пример Передатчика и Получателя HDL QAM показывает, как блоки Simulink®, которые поддерживают генерацию HDL-кода, могут использоваться, чтобы реализовать основополосную обработку передатчика цифровой связи и получателя.
HDL QAM Tx подсистема генерирует комплекс оцененная, 64-QAM модулируемая совокупность. Модель канала с плавающей точкой, Канал, используется, чтобы добавить затухание, шум канала, смещение несущей частоты и дробную задержку порядка продемонстрировать операцию подсистемы получателя. HDL QAM Rx подсистема реализует практический цифровой получатель, чтобы смягчить нарушения канала с помощью крупного восстановления частоты, синхронизируя восстановление, синхронизацию кадра и восстановление фазы и значение. Полученные пакеты данных затем декодируются и распечатываются к Командному окну MATLAB® Текстовым сообщением, Декодирующим подсистему.
Структуру верхнего уровня модели получателя QAM показывают в следующей фигуре. HDL QAM Tx и подсистемы HDL QAM Rx были оптимизированы для генерации HDL-кода.
Подробная структура подсистемы HDL QAM Tx видна в фигуре ниже.
Подсистема HDL QAM Tx содержит следующие компоненты, которые описаны более подробно в разделе HDL Optimized QAM Transmitter.
Данные Generation & Packetization - Генерируют пакеты, которые будут переданы, группируя биты для отображения с символами
Отображение символа - Карты биты вывод от подсистемы Data Generation & Packetization до символов QAM
Формирование импульса - Выполняет импульсное формирование и повышающую дискретизацию символов с помощью интерполяции RRC (Корневой Повышенный Косинус) фильтр до передачи
Структура Канала видна ниже. Когда подсистема Канала предназначается, чтобы быть грубым приближением канала AWGN с затуханием, и частота сместила его, предназначается, чтобы быть запущенным в программном обеспечении. В результате блоки, которые не поддержаны для генерации HDL-кода, могут использоваться здесь, такие как блок Phase/Frequency Offset. Блок Phase/Frequency Offset не поддерживает типы данных фиксированной точки, следовательно преобразование, чтобы удвоиться во входе подсистемы Канала. Сигнал преобразован назад в фиксированную точку прежде чем быть выведенным от подсистемы Канала. Дробная задержка и AWGN применяются к переданному сигналу, и блок Gain ослабляет сигнал.
Подробная структура подсистемы HDL QAM Rx видна в фигуре ниже.
Подсистема HDL QAM Rx содержит следующие компоненты, которые описаны более подробно в разделе HDL Optimized QAM Receiver.
Автоматическое управление усилением (AGC) - Нормирует полученную степень сигнала
Крупное Исправление Смещения Частоты - Оценки аппроксимированное смещение частоты и исправляют. Подсистема также содержит получение фильтра RRC, который субдискретизирует 2
Синхронизация Восстановления - Передискретизирует входной сигнал согласно восстановленному стробу синхронизации так, чтобы решения символа были приняты в оптимальные моменты выборки
Magnitude & Phase Recovery - Выполняет пакетное обнаружение, мелкомодульную фазу и амплитудное исправление
Демодулируйте - Демодулирует сигнал, символы de-отображения вдребезги
Структуру Текстового сообщения, Декодирующего подсистему, показывают ниже.
Эта подсистема, как ожидают, будет запущена в программном обеспечении, поэтому, желательно использовать основанные на кадре сигналы ускорить вычисление. Текстовое сообщение, Декодирующее подсистему, имеет восемь основанных на выборке булевых входных сигналов: dValid, packetStart и сигналы bit1 к bit6. Преобразование от основанных на выборке сигналов до основанных на кадре дубликатов реализовано dataframer блоком MATLAB function. Демодулируемые биты допустимы только, когда dValid установлен высоко. Блок dataframer использует сигнал dValid заполнить строку задержки полученными битами и сигналом newPacket передать данные, хранимые в строке задержки к выводу и сбросить строку задержки. Подсистема Дескремблирования и Печати обрабатывает полученные данные только, когда разрешать сигнал идет высоко. Это происходит, когда или строка задержки накапливается, 336 допустимых демодулируемых битов или сигнал newPacket высоко. Это заставит dataframer устанавливать сигнал RxGo высоко. В то время как симуляция запускается, подсистема Дескремблирования и Печати выводит строку "Hello World! Тест ~64QAM представляет ~ в виде строки ###" к окну команды MATLAB, где '###' является повторяющейся последовательностью '000', '001, '002'..., '099'. Каждые 50 пакетов, частота ошибок по битам данных в последних 50 успешно полученных пакетах также отображена в Окне Команды MATLAB.
Оптимизированный Передатчик HDL содержит Data Generation & Packetization, Отображение Символа и блоки Формирования Импульса, которые описаны подробно в следующих разделах.
1 - Data Generation & Packetization
Контроллер FSM (Конечный автомат) и Источник данных генерирует биты преамбулы и биты данных, выполняет скремблирование и создает пакеты. Каждый пакет состоит из 84-битной преамбулы Баркера кода и 252 бита скремблированных данных. Блок Group Bits преобразовывает поток битов входных данных в целое число на шесть битов на 1/6-м из входного уровня выборки, как требуется картопостроителем символа.
Подсистема Источника данных имеет конвейерную задержку 2 выборок. Кроме того, существует конвейерная задержка между источником данных и подсистемой бита-парного соединения. Допустимый сигнал поэтому задержан, чтобы совпадать с конвейерной задержкой информационного канала. Подсистема Битов Группы уменьшает частоту дискретизации фактором 6. Размещение субдискретизирования 6 в допустимом пути к управлению гарантирует что соответствия частоты дискретизации тот из пути прохождения сигнала.
Контроллер FSM - Контроллер FSM реализует конечный автомат управления с помощью функционального блока MATLAB™. FSM имеет два состояния - Pack_Preamble и Append_Data. Состояние Pack_Preamble утверждает сигнал load_preamble и de-asserts reset_preamble и сигналы load_data. FSM останется в этом состоянии для 84 тактов. После этого FSM перемещается в состояние Append_Data, утверждая сигнал load_data и сигнал reset_preamble при выпуске сигнала load_preamble. FSM останется в этом состоянии для 252 тактов. load_preamble и reset_preamble являются булевской переменной и используются, чтобы управлять Счетчиком Адреса Преамбулы, который справляется с загрузкой преамбулы в начале каждого пакета. Сигнал load_data является булевской переменной и используется, чтобы включить Счетчик Адреса данных, который управляет загрузкой данных в пакет.
Источник данных - Подсистема Источника данных содержит два LUTs, храня преамбулу и биты данных. LUT поиска преамбулы, обращен Счетчиком Адреса Преамбулы, которым управляют преамбула сброса и сигналы преамбулы загрузки, сгенерированные Контроллером FSM. LUT поиска данных обращен по условию Счетчик Адреса, который включен сигналом load_data, сгенерированным Контроллером FSM. Адрес Преамбулы Coutner имеет сигнал сброса, сгенерированный Контроллером FSM, как та же преамбула, вставляется в начале каждого пакета. Счетчик Адреса данных не имеет сигнала сброса, когда последовательность адреса данных намного более длинна и будет отличаться для каждого пакета, когда различные биты данных помещаются в каждом пакете. В дополнение к включению счетчика для LUT данных ввод данных загрузки используется, чтобы управлять, когда компонент Скремблера Данных о HDL должен быть включен, и управлять выбором преамбулы или битов данных через Мультиплексор Данных о Преамбуле.
Скремблер Данных о HDL - Скремблер Данных о HDL показывают в следующей фигуре. Это создается из первых принципов с помощью логических элементов XOR (для 2 сложений по модулю) и регистры. Активированная подсистема используется здесь к обеспеченному, который только включен скремблер, когда существуют новые входные данные, которые будут обработаны.
Биты группы - цель подсистемы Битов Группы состоит в том, чтобы сгруппировать шесть отдельных битов в шестибитное беззнаковое целое вывод - формат, ожидаемый компонентом отображения символа. Много задержек используются, чтобы выровнять 6 битов во входе блока Bit Concat, который конкатенирует в шестибитный вывод без знака. Этот вывод затем субдискретизируется, чтобы выбрать правильную группировку битов.
2 - Отображение символа
Символ, Сопоставляющий подсистему, использует блок Rectangular QAM Modulator Baseband, чтобы сопоставить целочисленное входное значение на оцененный символ соответствующего 64-QAM комплекса. Блок использует схему Gray Mapping.
3 - Импульсное формирование
Импульс, Формирующий подсистему, использует блок RRC Interpolation Filter с фактором повышающей дискретизации 4. Согласованный фильтр реализован в получателе. Фильтр является конвейерным (см. HDL Block Properties).
HDL Оптимизированный Получатель содержит AGC, Coarse Frequency Offset Correction, Timing Recovery, Magnitude & Phase Recovery, и Демодулируйте блоки, которые описаны подробно в следующих разделах.
1 - AGC
AGC гарантирует, что амплитуда входа Крупной Компенсации Частоты нормирована к области значений 1 к-1.
Структуру AGC показывают в следующей схеме с конвейерными регистрами, отображенными зеленым в модели.
2 - Крупное исправление смещения частоты
Крупная подсистема Исправления Смещения Частоты оценивает и исправляет для смещения частоты с помощью алгоритма Луизы-Реггиэннини [1]. Подсистема Оценки Смещения Частоты заставляет оценку на основе вывода получить Корневого Повышенного Косинуса Получить Фильтр, затем исправление смещения частоты на основе этой оценки применяется во входе к Корневому Повышенному Косинусу, Получают Фильтр. Это гарантирует, что желаемый фрагмент полученной пропускной способности сигнала лучше выравнивается с частотной характеристикой фильтра получателя, улучшение ОСШ по сравнению с исправлением при выводе Корневого Повышенного Косинуса Получает Фильтр.
Когда алгоритм оценки и исправления действует в замкнутом цикле, делая итеративные обновления предыдущих оценок смещения частоты, система будет постепенно сходиться к результату. Усиление Цикла включено, чтобы реализовать усреднение оценок. Эта архитектура описана в [1]. Корневой Повышенный Косинус Получает реализации Фильтра операция субдискретизации, таким образом, необходимо сверхдискретизировать сигнал обратной связи, с помощью повторного блока, совпадать с уровнем во входе к фильтру.
Обратите внимание на то, что существует остаточное смещение частоты при выводе Крупной подсистемы Исправления Смещения Частоты, которая отличается в зависимости от времени, даже если смещение частоты во входе к подсистеме остается то же самое, когда новые оценки смещения сделаны. Мелкомодульное исправление остаточного смещения выполняется позже в получателе подсистемой Восстановления Значения и Фазы.
Оценка Смещения частоты: подсистема Оценки Смещения Частоты реализует алгоритм Луизы-Реджиэннини, описанный в [1]. Сигнал сначала повышен до степени четыре, чтобы реализовать 4-е средство оценки фазы степени, как описано в [2]. Это реализовано 2 каскадными блоками продукта с конвейеризацией добавленного, чтобы улучшать аппаратную производительность. Дискретный КИХ-Фильтр реализует фильтр с прямоугольными весами, составленными из всех единиц, описанных в [1]. КИХ-Шкала масштабирует FIR вывод, чтобы составлять усиление фильтра. Блок Complex To Magnitude-Angle HDL Optimized используется, чтобы реализовать функцию, как требуется алгоритмом Луизы-Реггиэннини. Этот блок вычисляет фазу с помощью оборудования дружественный алгоритм CORDIC. Для получения дополнительной информации обратитесь к документации DSP System Toolbox. Перед подсистемой Оценки Смещения Частоты вывод сигнал масштабируется как требуется алгоритмом Луизы-Реджиэннини и, кроме того, масштабируется, чтобы совпадать с wordlength NCO.
3 - Синхронизация восстановления
Подсистему Восстановления Синхронизации показывают в следующей схеме.
Подсистема Восстановления Синхронизации реализует PLL, описанный в Главе 8 [3], чтобы исправить ошибку синхронизации в полученном сигнале. В среднем подсистема Восстановления Синхронизации генерирует тот выходная выборка для каждых двух входных выборок.
Блок Функции управления Интерполяции реализует постепенное уменьшение по модулю 1 счетчик, описанный в Главе 8.4.3 [3], чтобы сгенерировать управляющий сигнал упростить выбор interpolants Фильтра Интерполяции. Этот управляющий сигнал также включает Синхронизацию детектора ошибок (TED), так, чтобы это вычислило ошибки синхронизации в правильные моменты синхронизации. Подсистема Управления Интерполяцией обновляет различие в синхронизации, mu, для Фильтра Интерполяции, генерируя interpolants в оптимальные моменты выборки.
Фильтром Интерполяции является Фэрроу параболический фильтр с, как описано в Главе 8.4.2 [3]. Фильтр использует 0,5 так, чтобы все коэффициенты фильтра стали 1,-1/2 и 3/2, который значительно упрощает структуру интерполятора. На основе interpolants синхронизирующие ошибки сгенерированы Детектором ошибок Синхронизации пересечения нулем, как описано в Главе 8.4.1 [3].
Фильтр Интерполяции вводит дробную задержку с сигналом в порядке компенсировать ошибку синхронизации. Дробной задержкой управляет mu входной сигнал. Когда ошибка синхронизации (задержка) достигает контуров символа, в выводе существует один дополнительный или недостающий interpolant. Детектор ошибок Синхронизации реализует заполнение битами или пропуск, чтобы обработать дополнительное или пропавших без вести interpolants.
Обратитесь к Главе 8.4.4 [3] для деталей заполнения битами и пропуска. Цикл восстановления синхронизации обычно генерирует тот выходной символ для каждых двух входных выборок. Это также выводит строб синхронизации (validOut сигнал), который запускается на уровне входной частоты дискретизации. При нормальных обстоятельствах значение строба является просто последовательностью чередования единиц и нулей. Однако это происходит только, когда относительная задержка между передатчиком и получателем содержит некоторую дробную часть одного периода символа, и целая часть задержки (в символах) остается постоянной. Если целая часть относительных изменений задержки, значение строба может иметь два последовательных нуля или два последовательных единиц.
4 - Magnitude & Phase Recovery
Подсистема Magnitude & Phase Recovery выполняет пакетную синхронизацию, мелкомодульное восстановление частоты и мелкомодульное амплитудное восстановление.
Пакетная Синхронизация: подсистема Согласованного фильтра Преамбулы использует инвертированное временем сопряженное комплексное число преамбулы как веса фильтра. Модуль вывода подсистемы Согласованного фильтра Преамбулы вычисляется с помощью подсистемы Модуля. Вывод подсистемы Модуля затем по сравнению с порогом, чтобы обнаружить преамбулу в начале пакета. Блок MATLAB function генерирует сигнал, isPreamble, который сохранен высоко на время преамбулы каждого пакета. Блок MATLAB function также генерирует сигнал dvalid, который установлен высоко на время пакета, когда преамбула была обнаружена.
Мелкомодульное Восстановление Значения и Фазы: DLMS С 1 касанием (Задержанный Наименьшее количество Средних квадратичных) подсистема фильтра, адаптирующаяся по преамбуле и использующая ссылочный сигнал, сгенерированный Желаемым Источником Сигнала, исправляет и для фазы и для ошибок значения. Сигнал isPreamble, сгенерированный блоком MATLAB function и набором высоко для 14 символов преамбулы однажды пакет, был обнаружен, используется, чтобы включить желаемый источник сигнала и включить вход Adapt DLMS С 1 касанием. Когда сигнал isPreamble является низким, вес в DLMS С 1 касанием сохранен, и Желаемый Источник Сигнала сбрасывается. Задержанный LMS (DLMS) [4] алгоритм используется здесь, чтобы позволить, чтобы больше конвейеризации было введено и, поэтому, уменьшало критический путь в фильтре и увеличило максимальную тактовую частоту, достижимую, будучи реализованным в оборудовании.
Внутреннюю структуру Желаемой Исходной подсистемы Сигнала показывают ниже. LUT поиска данных содержит символы преамбулы.
Внутреннюю структуру подсистемы DLMS С 1 касанием показывают ниже.
5 - Демодулировать
Демодулировать подсистема сопоставляет каждый 64-QAM вводимый символ вдребезги, выводя 6 битов для каждого вводимого символа. Чтобы сгенерировать HDL для блока Rectangular QAM Demodulator Baseband, минимальное расстояние между символами должно быть установлено в 2. Это в 8 раз больше, чем расстояние между символами, сгенерированными в передатчике. В результате вход символов к Демодулировать подсистеме должен быть увеличен соответственно. Это сделано с помощью блока Shift Arithmetic, который переключает двоичную точку, оставленную на 3 бита достигнуть необходимого умножения 8.
Во время симуляции модель отображает успешно полученные пакеты в Окне Команды MATLAB. В каждых 50 пакетах частота ошибок по битам данных в последних 50 успешно полученных пакетах также отображена в Окне Команды MATLAB.
После выполнения симуляции модель отображает шесть различных фигур, иллюстрирующих различные аспекты производительности получателя. Их показывают ниже, наряду с объяснением каждого графика. Первые пять графиков показывают адаптацию, по длительности симуляции, Автоматического Управления Усилением, Оценки Смещения Частоты, оценки положения Восстановления Синхронизации, действительной части совокупности при выводе подсистемы Восстановления Синхронизации, и при выводе подсистемы Magnitude & Phase Recover. Последний график показывает схему совокупности при выводе подсистемы Magnitude & Phase Recovery после того, как любая адаптация произошла.
График усиления AGC
Следующий график иллюстрирует Автоматическую подсистему Управления Усилением, адаптирующуюся в зависимости от времени, чтобы нормировать вывод. Равновесие должно быть установлено между тем, как быстро AGC адаптируется и сколько пульсации, там после того, как усиление достигло относительно постоянного уровня. Используя больший AGC усиление цикла адаптируется быстрее, но амплитуда после адаптации отличается больше. Используя меньший цикл усиление замедляет адаптацию AGC, сглаживая уровень после адаптации, но занимая больше времени, чтобы адаптироваться.
Оценочный график смещения частоты
Следующий график иллюстрирует, как крупное смещение частоты постепенно адаптируется к смещению частоты, введенному системой (синяя горизонтальная строка). Это показывает, что, в то время как оценка близко подходит к фактическому смещению частоты, существует все еще остаточная ошибка, которая должна быть исправлена позже в системе.
Синхронизация графика положения восстановления
Следующий график показывает вход mu Фильтру Интерполяции. Обратите внимание на то, что mu сходится к устойчивому состоянию (с некоторой пульсацией) в зависимости от времени, когда задержка канала не отличается во время симуляции.
Действительная часть синхронизации восстановления Выходной график
Следующий график иллюстрирует, как действительная часть подсистемы Восстановления Синхронизации вывод начинает сходиться к восьми отличным амплитудным уровням, ожидаемым для 64QAM. Однако как остаточное смещение частоты, остающееся после того, как, крупное восстановление частоты еще не было исправлено в этой точке в получателе, качество сигнала меняется в зависимости от отличных амплитудных уровней, более явно видимых в некоторых точках, чем в других. Совокупность все еще имеет некоторое вращение в этой точке в получателе.
Действительная часть оценочного графика символа
Следующий график показывает, как действительная часть вывода подсистемы Magnitude & Phase Recovery адаптируется в зависимости от времени. В отличие от предыдущего графика, сгенерирована эта схема после прекрасного восстановления частоты поэтому не должна вращаться совокупность. Нет никаких выборок первоначально, когда вывод от блока не допустим, и затем восемь ясных амплитудных уровней должны быть замечены - представление восьми действительных амплитудных уровней 64-QAM совокупности.
Восстановленный график совокупности
Следующий график показывает совокупность при выводе подсистемы Magnitude & Phase Recovery после того, как система имела время, чтобы адаптироваться к каналу. Сокращение шума канала должно уменьшать размер каждой из точек совокупности; увеличение шума канала начинает объединять отличные точки совокупности вместе. Если система успешно не исправила для смещения частоты, то вращение совокупности видимо здесь.
1. М. Луиза и Р. Регджаннини, "Восстановление несущей частоты в полностью цифровых модемах для передач пакетного режима", Сделка IEEE. Коммуникации, стр 1169-1178, 1995.
2. Moeneclaey, M. и Де Жонгх, G. "Ориентированный на ML на синхронизацию поставщика услуг NDA для общих вращательно симметричных сигнальных созвездий", Сделка IEEE. Коммуникации, pp.2531-2533, 1994.
3. Майкл Райс, "цифровая связь - подход дискретного времени", Prentice Hall, апрель 2008.
4. Г. Лонг, Ф. Линг и Дж. Г. Проукис "LMS-алгоритм с задержанной содействующей адаптацией", Сделка IEEE на Акустике, Речи и Обработке сигналов, pp.1397-1405, 1989.