exponenta event banner

Измерение EVM 5G НОМЕР форм волны PUSCH

В этом примере показано, как измерить величину вектора ошибок (EVM) форм сигналов фиксированного опорного канала PUSCH (FRC). В примере также показано, как добавить нарушения, включая фазовый шум и нелинейность без памяти.

Введение

Для радиочастотного тестирования приемника базовой станции стандарт 3GPP 5G NR определяет набор сигналов FRC. FRCs для частотного диапазона 1 (FR1) и частотного диапазона 2 (FR2) определены в TS 38.104, приложении A.

В этом примере показано, как генерировать сигнал NR (FRC) и добавлять нарушения. В примере используется фазовый шум и нелинейность без памяти. Он показывает, как вычислить EVM результирующего сигнала, а затем построить график среднеквадратичного (RMS) и пикового EVM на символ мультиплексирования с ортогональным частотным разделением каналов (OFDM), слот и поднесущую. Затем вычисляют общее EVM (среднеквадратичное EVM, усредненное по полной форме сигнала). Приложение F к TS 38.101-1 и TS 38.101-2 определяют альтернативный метод вычисления EVM в FR1 и FR2 соответственно. На рисунке ниже показана цепочка обработки, реализованная в этом примере.

Параметры моделирования

Каждая форма сигнала FRC определяется комбинацией этих параметров:

  • Номер частотного диапазона

  • Порядок использования схемы модуляции и кодирования (MCS)

  • Индекс ВСК для данного СКУ

Выберите один из FRC версии 15 для FR1 и FR2.

Выбранный опорный канал (rc) должен соответствовать формату G-FR X -A Y - Z, где X - номер диапазона частот (1 или 2), Y - порядок MCS, используемый в приложении A к TS 38.104 (т.е. значение от 1 до 5), а Z - индекс FRC для данного MCS. Диапазон допустимых значений Z зависит от частотного диапазона и MCS (X и Y). В случае, если входной сигнал не является сигналом FRC, для измерения EVM поддерживается atmost один уровень.

rc = "G-FR1-A1-7"; % FRC

Печать статистики EVM, установка displayEVM кому true. Чтобы отключить печать, установите displayEVM кому false. Печать статистики EVM, установка plotEVM кому true. Чтобы отключить графики, установите plotEVM кому false

displayEVM = true;
plotEVM = true;
if displayEVM
    fprintf('Reference Channel = %s\n',rc);
end
Reference Channel = G-FR1-A1-7

Для измерения EVM, как определено в TS 38.101-1 (FR1) или TS 38.101-2 (FR2), приложение F, соответственно, установите evm3GPP кому true. evm3GPP по умолчанию отключен.

evm3GPP = false;

Создайте объект генератора формы сигнала, затем и создайте форму сигнала.

wavegen = hNRReferenceWaveformGenerator(rc);
[txWaveform,tmwaveinfo,resourcesinfo] = generateWaveform(wavegen,wavegen.Config.NumSubframes);

Ухудшение: фазовый шум и нелинейность без запоминания

В этом примере рассматриваются два нарушения: фазовый шум и нелинейность без запоминания. Включение или отключение нарушений путем переключения флагов phaseNoiseOn и nonLinearityModelOn.

phaseNoiseOn = true;
nonLinearityModelOn = true;

Нормализуйте форму сигнала в соответствии с динамическим диапазоном нелинейности.

txWaveform = txWaveform/max(abs(txWaveform),[],'all');

Форма сигнала состоит из одного кадра для дуплексирования с частотным разделением (FDD) и двух для дуплексирования с временным разделением (TDD). Повторите сигнал дважды. Для этого примера удалите первую половину результирующей формы сигнала, чтобы избежать переходного процесса, вводимого моделью фазового шума.

txWaveform = repmat(txWaveform,2,1);

Ввести фазовые шумовые искажения. На рисунке показана характеристика фазового шума. Рассматриваемая несущая частота зависит от диапазона частот. Мы используем значения 4 ГГц и 28 ГГц для FR1 и FR2 соответственно. Фазовая шумовая характеристика генерируется с помощью полюсной или нулевой модели, описанной в R1-163984 «Обсуждение моделирования фазового шума».

if phaseNoiseOn
    sr = tmwaveinfo.Info.SamplingRate;

    % Carrier frequency
    if wavegen.Config.FrequencyRange == "FR1" % Carrier frequency for FR1
        fc = 4e9;
    else % Carrier frequency for FR2
        fc = 28e9;
    end

    % Calculate the phase noise level.
    foffsetLog = (3:0.1:log10(sr/2)); % Model offset from 1e3Hz to sr/2
    foffset = 10.^foffsetLog;    % Linear frequency offset
    PN_dBc_Hz = hPhaseNoisePoleZeroModel(foffset,fc,'A');
    figure;
    semilogx(foffset,PN_dBc_Hz);
    xlabel('Frequency Offset (Hz)');
    ylabel('dBc/Hz');
    title('Phase noise model'); grid on

    % Apply phase noise to waveform
    pnoise = comm.PhaseNoise('FrequencyOffset',foffset,'Level',PN_dBc_Hz,'SampleRate',sr);
    rxWaveform = zeros(size(txWaveform),'like',txWaveform);
    for i = 1:size(txWaveform,2)
        rxWaveform(:,i) = pnoise(txWaveform(:,i));
        release(pnoise)
    end
else
    rxWaveform = txWaveform; %#ok<UNRCH>
end

Ввести нелинейные искажения. В этом примере используется модель Rapp. На рисунке показана введенная нелинейность. Установите параметры модели Rapp в соответствии с характеристиками модели без памяти из TR 38.803 «Модель без памяти - Приложение A.1.»

if nonLinearityModelOn
    rapp = comm.MemorylessNonlinearity('Method','Rapp model');
    rapp.Smoothness = 1.55;
    rapp.OutputSaturationLevel = 1;

    % Plot nonlinear characteristic
     plotNonLinearCharacteristic(rapp);

    % Apply nonlinearity
    for i = 1:size(rxWaveform,2)
        rxWaveform(:,i) = rapp(rxWaveform(:,i));
        release(rapp)
    end
end

Ранее сигнал повторялся дважды. Удалите первую половину этого сигнала, чтобы избежать какого-либо переходного процесса, введенного моделями ухудшения.

dm = wavegen.ConfiguredModel{4};
if dm == "FDD"
    nFrames = 1;
else % TDD
    nFrames = 2;
end
rxWaveform(1:nFrames*tmwaveinfo.Info.SamplesPerSubframe*10,:) = [];

Измерения

Функция hNRPUSCHEVM выполняет следующие шаги для декодирования и анализа формы сигнала:

  • Синхронизация с использованием DM-RS через один кадр для FDD (два кадра для TDD)

  • OFDM-демодуляция принятого сигнала

  • Оценка канала

  • Уравнивание

  • Вычисление PUSCH EVM (включение коммутатора evm3GPP согласно требованиям к измерениям EVM, указанным в TS 38.101-1 (FR1) или TS 38.101-2 (FR2), Приложение F.

Пример измеряет и выводит различные статистические данные, относящиеся к EVM, на символ, на слот и на пик кадра EVM и RMS EVM. В примере отображается EVM для каждого слота и кадра и общее усредненное EVM по всей входной форме сигнала. Пример создает эти графики: EVM в зависимости от символа OFDM, слота, поднесущей, общего EVM и внутриполосных излучений. Каждый график, связанный с EVM, отображает пик по сравнению с RMS EVM.

% Compute and display EVM measurements
cfg = struct();
cfg.Evm3GPP = evm3GPP;
cfg.PlotEVM = plotEVM;
cfg.DisplayEVM = displayEVM;
[evmInfo,eqSym,refSym] = hNRPUSCHEVM(wavegen.Config,rxWaveform,cfg);
 RMS EVM, Peak EVM, slot 0: 2.555 7.690%
 RMS EVM, Peak EVM, slot 1: 2.257 6.221%
 RMS EVM, Peak EVM, slot 2: 2.463 6.350%
 RMS EVM, Peak EVM, slot 3: 2.332 6.617%
 RMS EVM, Peak EVM, slot 4: 2.252 7.191%
 RMS EVM, Peak EVM, slot 5: 2.408 6.119%
 RMS EVM, Peak EVM, slot 6: 2.418 7.326%
 RMS EVM, Peak EVM, slot 7: 2.505 8.758%
 RMS EVM, Peak EVM, slot 8: 2.492 7.579%
 RMS EVM, Peak EVM, slot 9: 2.838 7.852%
Averaged RMS EVM frame 0: 2.457%
Averaged overall RMS EVM: 2.457%
Peak EVM : 8.7576%

Локальные функции

function plotNonLinearCharacteristic(memoryLessNonlinearity)
% Plot the nonlinear characteristic of the power amplifier (PA) impairment
% represented by the input parameter memoryLessNonlinearity, which is a
% comm.MemorylessNonlinearity Communications Toolbox(TM) System object.

% Input samples
x = complex((1/sqrt(2))*(-1+2*rand(1000,1)),(1/sqrt(2))*(-1+2*rand(1000,1)));

% Nonlinearity
yRapp = memoryLessNonlinearity(x);
% Release object to feed it a different number of samples
release(memoryLessNonlinearity);

% Plot characteristic
figure;
plot(10*log10(abs(x).^2),10*log10(abs(x).^2));
hold on;
grid on
plot(10*log10(abs(x).^2),10*log10(abs(yRapp).^2),'.');
xlabel('Input Power (dBW)');
ylabel('Output Power (dBW)');
title('Nonlinearity Impairment')
legend('Linear characteristic', 'Rapp nonlinearity','Location','Northwest');
end

Связанные темы