Реализация HDL цифрового предыскажения

Этот пример показывает реализацию цифровой модели (DPD) предыскажения, которая оптимизирована для генерации HDL-кода и аппаратной реализации. Механизм перед искажением выполняется на двух этапах. В первой стадии набор коэффициентов DPD оценивается на основе входных и выходных данных усилителя мощности (PA). На втором этапе входные данные PA предварительно искажены на основе предполагаемых коэффициентов DPD и предоставлены как новый вход PA. Этот пример демонстрирует симуляцию уровня системы, в которой подсистема DigitalPredistorter генерирует HDL-код, в то время как содействующая оценка DPD генерирует код C/C++. Эта модель в качестве примера поддерживает только Нормальный и режимы симуляции Акселератора.

Цифровое предварительное искажение

Цифровое предварительное искажение является методом обработки сгенерированного модулированного сигнала, который используется для исправления нарушений в усилителях мощности радиочастоты (RF). Эти нарушения вызывают внеполосную эмиссию или спектральный перерост и внутриполосное искажение, которое приводит к увеличенной частоте ошибок по битам (BER) и уменьшенной пропускной способности системы. Усилители мощности вызывают нежелательные эффекты в системе из-за их нелинейного поведения. Системы связи с помощью ортогонального мультиплексирования деления частоты (OFDM), такие как беспроводная локальная сеть (WLAN), глобальная функциональная совместимость для микроволнового доступа (WiMax), долгосрочной эволюции (LTE), и мобильной сети пятого поколения (5G), уязвимы для этих нежелательных эффектов. Предварительная коррекция применяется на сигнал так, чтобы каскад DPD и PA был близко к идеальной, линейной, и системе без памяти. Эта линеаризация может повысить эффективность степени PA и может быть большим количеством эффективного спектра. Этот рисунок показывает структуру верхнего уровня примера.

Запустите эту команду, чтобы открыть пример.

modelname = 'DPDHDLExample';
open_system(modelname);

Генерация сгенерированного модулированного сигнала

Подсистема Генерации Сгенерированного модулированного сигнала генерирует сгенерированный модулированный сигнал, который предоставляется как входные данные цифровому предыскажению. Случайные входные данные сгенерированы с помощью случайного целочисленного генератора сигнала и сопоставлены с 16-QAM модуляцией с помощью прямоугольного модулятора QAM. Модулируемые символы передаются через повышенный фильтр косинуса корня с фактором спада 0,2. После применения соответствующего амплитудного усиления на отфильтрованных данных усиленные данные предоставляются, как введено подсистеме DPD. Можно также заменить эту подсистему Генерации Сгенерированного модулированного сигнала на любой пользовательский передатчик, чтобы предоставить данные подсистеме DPD. Этот рисунок показывает генерацию входного сигнала основной полосы для этого примера. Запустите эту команду, чтобы открыть подсистему Генерации Сгенерированного модулированного сигнала.

load_system(modelname);
open_system([modelname '/Baseband Signal Generation']);

Содействующая оценка

Подсистема RPEMCoeffEstimation оценивает набор коэффициентов путем сбора данных от ввода и вывода PA. Эти коэффициенты используются, чтобы исказить сигнал перед усилителем мощности. Характеристики PA варьируются в зависимости от времени и условия работы, таким образом, адаптивный алгоритм рекурсивного ошибочного метода предсказания (RPEM) используется, чтобы оценить коэффициенты DPD. Количество коэффициентов, которые будут оценены, зависит от глубины памяти и полиномиальной степени PA. В этом примере, потому что общее количество коэффициентов, которые должны быть оценены, равняется 25, глубина памяти и полиномиальная степень PA установлены в 5. Для получения дополнительной информации о RPEM, см. [1]. Чтобы сгенерировать код C/C++ для подсистемы RPEMCoeffEstimation, используйте rtwbuild команда. Запустите эту команду, чтобы открыть подсистему RPEMCoeffEstimation.

load_system(modelname);
open_system([modelname '/RPEMCoeffEstimation']);

Цифровое предыскажение

Подсистема DigitalPredistorter искажает входные данные с помощью коэффициентов, оцененных подсистемой RPEMCoeffEstimation. Проект DPD в этом примере основан на полиноме памяти, который корректирует нелинейность и эффекты памяти в PA. Предполагаемые коэффициенты и сгенерированные входные данные предоставляются, как введено DPD для применения предварительного искажения. Входные данные являются занявшими первое место в сдвиговом регистре на основе глубины памяти. Во-вторых, этот вектор конкатенирован с нелинейными продуктами данных в зависимости от полиномиальной степени. Эта конкатенация формирует вектор из 25 (степень времен глубины памяти) элементы. Скалярное произведение полученного вектора и оцененных коэффициентов обеспечивает предварительно искаженный вход, который питается, как введено PA после повышающей дискретизации. Запустите эту команду, чтобы открыть подсистему DigitalPredistorter.

load_system(modelname);
open_system([modelname '/DigitalPredistorter']);

RF блокирует настройку

Этот пример имеет переключатель управления, чтобы включить или отключить содействующая оценка и предварительное искажение. Если вы включаете переключатель, пример обеспечивает выходные данные от подсистемы DigitalPredistorter, как введено с блоками RF. В противном случае пример обеспечивает выходные данные от подсистемы Генерации Сгенерированного модулированного сигнала, как введено с блоками RF как синфазные (I), выборки квадратурной фазы (Q). Эти выборки I/Q сверхдискретизированы к 2,4 ГГц и предоставлены, как введено PA. Матрица коэффициентов, требуемая PA, предварительно загружена на основе стандартно-совместимого сигнала LTE с частотой дискретизации 15,36 МГц. Эти коэффициенты хранятся в файле MAT, и значения загружаются при инициализации примера. В другом пути данные передаются через низкий шумовой усилитель (LNA) и вниз преобразованы прежде если он к подсистеме RPEMCoeffEstimation.

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

Запустите модель. По умолчанию DPD и RPEMCoeffEstimation включены. Если вы отключаете DPD, увеличения величины вектора ошибок (EVM) и спектральный перерост в смежных увеличениях каналов. Созвездие и спектр схемы анализатора показывают результаты выполнения модели с включенным DPD.

sim(modelname);

Генерация HDL-кода и результаты реализации

Чтобы проверять и сгенерировать HDL для этого примера, у вас должен быть HDL Coder™. Используйте makehdl и makehdltb команды, чтобы сгенерировать HDL-код и испытательный стенд для подсистемы DigitalPredistorter.

Подсистема DigitalPredistorter синтезируется на оценочной плате Xilinx® Zynq®-7000 ZC706. Частота, полученная после места и маршрута, составляет приблизительно 220 МГц. Составьте таблицу, которая отображает место сообщения и результаты использования ресурса маршрута для 16-битного комплексного входа.

F = table(...
    categorical({'Slice Registers'; 'Slice LUT';'DSP'}), ...
    categorical({'4429'; '8196'; '160'}), ...
    categorical({'218600'; '437200'; '900'}), ...
    categorical({'2.03'; '1.87'; '17.78'}), ...
    'VariableNames', ...
    {'Resources','Utilized','Available','Utilization (%)'});
disp(F);
       Resources       Utilized    Available    Utilization (%)
    _______________    ________    _________    _______________

    Slice Registers      4429       218600           2.03      
    Slice LUT            8196       437200           1.87      
    DSP                  160        900              17.78     

Ссылки

1. Гань, Литий и Эмэд Абд-Элрэди. ''Цифровое Предварительное искажение Систем Полинома Памяти Используя Прямое и Косвенное Изучение Архитектур''. В Продолжениях Одиннадцатой Международной конференции IASTED по вопросам Обработки сигналов и Обработки изображений (SIP) (F. Cruz-Рольдан и Н. Б. Смит, редакторы), № 654-802. Калгари, AB: Нажатие ACTA, 2009.

Для просмотра документации необходимо авторизоваться на сайте