Этот пример обеспечивает методологию для охарактеризования нелинейного усилителя мощности (PA) RF Blockset™ с памятью и адаптивной системой с обратной связью DPD, чтобы уменьшать искажение выходного сигнала передатчика РФ. Начальный шаг в процедуре определяет Coefficient matrix
требуемый блоком RF Power Amplifier при выборе модели полинома памяти Волтерры с перекрестными условиями [1]. Этот шаг использует фактические результаты измерений в PA. После получения набора коэффициентов для модели PA выполняется симуляция уровня системы. Эта система включает адаптивный алгоритм DPD, который может быть включен в процессе моделирования с помощью переключателя переключателя и демонстрирует, как линейность системного выходного сигнала передатчика РФ улучшается после включения коррекции DPD.
Во-первых, комплекс ввода и вывода измеренные сигналы I/Q PA загружается. Коммерчески доступный усилитель мощности был охарактеризован в лаборатории с помощью стандартно-совместимого сигнала LTE с частотой дискретизации, равной 15,36 МГц.
load('simrfV2_powamp_dpd_data.mat')
DataRate = 15.36e6;
Tstep = 1/DataRate;
Физическое поведение усилителя теперь визуализируется. Следующая фигура строит абсолютное значение сигналов ввода и вывода как функция времени.
numDataPts = length(inDataPA); plot((1:numDataPts)*Tstep, abs(inDataPA), ... (1:numDataPts)*Tstep, abs(outDataPA)) legend('Abs(In)','Abs(Out)','Location','northeast') xlabel('Time (s)') xlim([0 1e-5]) ylabel('Voltage (V)') title('Absolute Values of Input and Output Voltage Signals')
Следующая фигура строит характеристику величины PA: абсолютное значение выхода получает по сравнению с входными сигналами. В общем случае рассеивание вокруг прямой линии, представляющей усиление, следует из эффектов памяти (изогните дисперсию), и изгиб кривой данных для больших значений входного сигнала следует из нелинейности PA (отклонение от прямой горизонтальной линии).
TransferPA = abs(outDataPA./inDataPA); plot(abs(inDataPA),20*log10(TransferPA),'.') xlabel('Input Voltage Absolute Value(V)') ylabel('Magnitude Power Gain (dB)') title('Power Gain Transfer Function')
Используйте многоцелевую функцию помощника simrfV2_powamp_dpd_helper, чтобы определить комплексные коэффициенты модели полинома памяти для характеристик усилителя. Время хранения в памяти и степень модели опытным путем выбраны здесь, но возможно автоматизировать этот выбор.
memLen = 3; degLen = 7;
Только половина данных используется для расчета подходящие коэффициенты, как целый набор данных будет использован для расчета относительная погрешность.
halfDataPts = round(numDataPts/2);
Функция помощника поддерживает возможность к, выбрал различные модели памяти. Как пример, чтобы использовать полином памяти без перекрестных условий:
modType = 'memPoly';
Функция помощника simrfV2_powamp_dpd_helper доступна для редактирования для пользовательских модификаций, и возвратить желаемую матрицу.
fitCoefMat = simrfV2_powamp_dpd_helper('coefficientFinder', ... inDataPA(1:halfDataPts),outDataPA(1:halfDataPts),memLen,degLen,modType);
Чтобы подтвердить подбор кривой, используйте функцию помощника, чтобы вычислить ошибочную оценку, которая состоит стандартное отклонение предсказанного сигнала по сравнению с измеренным сигналом.
[errSig] = simrfV2_powamp_dpd_helper('errorMeasure', ... inDataPA, outDataPA, fitCoefMat, modType); disp(['Signal standard deviation = ' num2str(errSig) '%'])
Signal standard deviation = 4.8083%
Чтобы визуализировать и измеренный выходной сигнал и подходящий выходной сигнал, постройте выходное напряжение временного интервала.
outDataPA_fit = simrfV2_powamp_dpd_helper('signalGenerator', ... inDataPA, fitCoefMat, modType); plot((1:numDataPts)*Tstep, abs(outDataPA), 'o-', ... (1:numDataPts)*Tstep, abs(outDataPA_fit), '.-') xlabel('Time (s)') ylabel('Voltage (V)') xlim([0 1e-5]) legend('Abs(Out)','Abs(OutFit)','Location','northeast') title('Absolute Values of Output and Fitted Output Signals')
Мы также строим величину передаточной функции степени:
TransferPA_fit = abs(outDataPA_fit./inDataPA(:)); plot(abs(inDataPA), 20*log10(TransferPA), 'o', ... abs(inDataPA), 20*log10(TransferPA_fit), '.') xlabel('Input Voltage Absolute Value(V)') ylabel('Magnitude Power Gain (dB)') legend('Abs Gain','Abs Gain Fit','Location','northeast') title('Power Gain Transfer Function')
Мы теперь определяем подходящую матрицу коэффициентов из характеристик ввода и вывода при помощи другого подхода, который включает продвижение и отставание перекрестных условий памяти.
Мы используем ту же функцию помощника, но мы используем различный тип модели.
modType = 'ctMemPoly'; fitCoefMat = simrfV2_powamp_dpd_helper('coefficientFinder', ... inDataPA(1:halfDataPts),outDataPA(1:halfDataPts),memLen,degLen,modType);
Чтобы подтвердить подбор кривой, мы вычисляем ошибку. Используйте функцию помощника, чтобы вычислить стандартное отклонение предсказанного сигнала по сравнению с измеренным сигналом. Ошибка теперь ниже благодаря продвижению и отставанию перекрестных условий памяти.
[errSig] = simrfV2_powamp_dpd_helper('errorMeasure', ... inDataPA, outDataPA, fitCoefMat, modType); disp(['Signal standard deviation = ' num2str(errSig)])
Signal standard deviation = 2.7045
Чтобы проверить, что подбор кривой имеет более высокое качество и визуализировать измеренный выходной сигнал и подходящий выходной сигнал, мы отображаем данные на графике.
outDataPA_fit = simrfV2_powamp_dpd_helper('signalGenerator', ... inDataPA, fitCoefMat, modType); plot((1:numDataPts)*Tstep, abs(outDataPA), 'o-', ... (1:numDataPts)*Tstep, abs(outDataPA_fit), '.-') xlabel('Time (s)') ylabel('Voltage (V)') xlim([0 1e-5]) legend('Abs(Out)','Abs(OutFit)','Location','northeast') title('Absolute Values of Output and Fitted Output Signals')
TransferPA_fit = abs(outDataPA_fit./inDataPA(:)); plot(abs(inDataPA), 20*log10(TransferPA), 'o', ... abs(inDataPA), 20*log10(TransferPA_fit), '.') xlabel('Input Voltage Absolute Value(V)') ylabel('Magnitude Power Gain (dB)') legend('Abs Gain','Abs Gain Fit','Location','northeast') title('Power Gain Transfer Function')
Наконец, мы сохраняем матрицу коэффициентов модели PA, которую мы будем импортировать и использовать в RF Blockset в симуляции в уровне системы.
save('PAcoefficients.mat','fitCoefMat')
Откройте модель Simulink RF Blockset включая модель PA и адаптивный алгоритм DPD [2]:
Модель включает двухцветный генератор сигнала, который используется в тестировании отнесенной к выходу точки пересечения третьего порядка системы. Модель включает повышающее преобразование в частоту РФ с помощью модулятора I-Q, модели PA с коэффициентами, которым мы соответствовали, разветвитель, чтобы осуществить сниффинг выхода PA и блока S-параметра, представляющего эффект загрузки антенны. Цепь получателя выполняет понижающее преобразование к низкой промежуточной частоте. Заметьте, что пропускная способность симуляции этой системы составляет 50 МГц.
Модель может быть симулирована без DPD, когда переключатель переключателя находится в положение.
model = 'simrfV2_powamp_dpd';
open_system(model)
sim(model)
Ручной переключатель переключается, чтобы включить алгоритм DPD. Когда переключено, TOI (точка пересечения третьего порядка) улучшается с 36 dBm приблизительно до 48 dBm в 0,5 мс времени симуляции. Смотрите измерение искажения в Спектре Анализатор, чтобы подтвердить эти результаты и видеть, как мощность гармоник уменьшена благодаря линеаризации DPD.
set_param([model '/Manual Switch'], 'action', '1') sim(model)
Путем изменения степени и глубины памяти задал в блоке DPD Coefficient Estimator, можно найти самый подходящий компромисс между производительностью и стоимостью внедрения.
Чтобы оценить коэффициенты DPD правильно, входные сигналы с блоком DPD Coefficient Estimator, PA В и PA, должны быть выровнены во временном интервале. Это проверяется блоком Find Delay, который показывает, что задержка, введенная системой РФ, 0. Желаемое амплитудное усиление средства оценки важно, чтобы убедиться, что общее линейное усиление системы не изменяется, когда DPD активен. Для этой конкретной модели усиление было оценено с помощью отдельных методов [2].
close_system(model,0)
close all; clear
Откройте модель Simulink RF Blockset включая модель PA и адаптивный алгоритм DPD, взволнованный с 16-QAM модулируемой формой волны.
Системная модель PA+DPD с 16-QAM
Без линеаризации DPD система имеет Ошибочное Отношение Модуляции 15 дБ, когда это видно от измерения графика созвездия.
model = 'simrfV2_powamp_dpd_comms';
open_system(model)
sim(model)
Ручной переключатель переключается, чтобы включить алгоритм DPD. Когда переключено, средний MER улучшается с 15 дБ приблизительно до 28 дБ в 0,5 мс времени симуляции.
set_param([model '/Manual Switch'], 'action', '1') sim(model)
close_system(model,0)
close all; clear
Морган, Деннис Р., Чжэнсян Ма, Джэехиеонг Ким, Михаэль Г. Цирдт и Джон Пэсталан. "Обобщенная Модель Полинома Памяти для Цифрового Предварительного искажения Усилителей мощности". IEEE® Transactions на Обработке сигналов. Издание 54, № 10, октябрь 2006, стр 3852–3860.
Гань, Литий и Эмэд Абд-Элрэди. "Цифровое Предварительное искажение Систем Полинома Памяти Используя Прямое и Косвенное Изучение Архитектур". В Продолжениях Одиннадцатой Международной конференции IASTED по вопросам Обработки сигналов и Обработки изображений (SIP) (Ф. Крус-Ролдан и Н. Б. Смит, редакторы), № 654-802. Калгари, AB: Нажатие ACTA, 2009.