Измерение EVM 5G формы волны NR PUSCH

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

Введение

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

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

Параметры симуляции

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

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

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

  • Индекс FRC для данного MCS

Выберите один из Релиза 15 FRCs для FR1 и FR2.

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

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

Похожие темы