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

Этот пример измеряет величину вектора ошибок (EVM) тестовой модели NR формы волны фиксированного ссылочного канала (FRC) или (NR-TM). Пример добавляет нарушения включая фазу шумовая и нелинейность без памяти.

Введение

Для базовой станции тестирование RF 3GPP 5G стандарт NR задает набор нисходящей тестовой модели (NR-TM) формы волны. Для тестирования оборудования пользователя (UE) стандарт задает набор форм волны фиксированного ссылочного канала (FRC). NR-TMs и FRCs для частотного диапазона 1 (FR1) заданы в TS 38.141-1, в то время как NR-TMs и FRCs для частотного диапазона 2 (FR2) заданы в TS 38.141-2.

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

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

Каждый NR-TM или форма волны FRC заданы комбинацией:

  • Имя NR-TM/FRC

  • Пропускная способность канала

  • Интервал поднесущей

  • Режим Duplexing

% Select one of the Release 15 NR-TMs for FR1 and FR2 among:
% "NR-FR1-TM1.1","NR-FR1-TM1.2","NR-FR1-TM2",
% "NR-FR1-TM2a","NR-FR1-TM3.1","NR-FR1-TM3.1a",
% "NR-FR1-TM3.2","NR-FR1-TM3.3","NR-FR2-TM1.1",
% "NR-FR2-TM2","NR-FR2-TM3.1"

% or
% Select one of the Release 15 FRCs for FR1 and FR2 among:
% "DL-FRC-FR1-QPSK","DL-FRC-FR1-64QAM",
% "DL-FRC-FR1-256QAM","DL-FRC-FR2-QPSK",
% "DL-FRC-FR2-16QAM","DL-FRC-FR2-64QAM"

rc = "NR-FR1-TM3.2"; % Reference channel(NR-TM or FRC)

% Select the NR waveform parameters
bw = "10MHz"; % Channel bandwidth
scs = "30kHz"; % Subcarrier spacing
dm = "FDD"; % Duplexing mode

Для ТМ сгенерированная форма волны может содержать больше чем один PDSCH. Выбранный PDSCH, чтобы проанализировать основан на RNTI. По умолчанию следующие RNTIs рассматриваются для вычисления EVM:

  • NR-FR1-TM2: RNTI = 2 (64QAM EVM)

  • NR-FR1-TM2a: RNTI = 2 (256QAM EVM)

  • NR-FR1-TM3.1: RNTI = 0 и 2 (64QAM EVM)

  • NR-FR1-TM3.1a: RNTI = 0 и 2 (256QAM EVM)

  • NR-FR1-TM3.2: RNTI = 1 (16QAM EVM)

  • NR-FR1-TM3.3: RNTI = 1 (QPSK EVM)

  • NR-FR2-TM2: RNTI = 2 (64QAM EVM)

  • NR-FR2-TM3.1: RNTI = 0 и 2 (64QAM EVM)

Согласно техническим требованиям (TS 38.141-1, TS 38.141-2), эти ТМ не спроектированы, чтобы выполнить измерения EVM: NR-FR1-TM1.1, NR-FR1-TM1.2, NR-FR2-TM1.1. Однако, если вы генерируете эти ТМ, пример измеряет EVM для следующего RNTIs.

  • NR-FR1-TM1.1: RNTI = 0 (QPSK EVM)

  • NR-FR1-TM1.2: RNTI = 2 (QPSK EVM)

  • NR-FR2-TM1.1: RNTI = 0 (QPSK EVM)

Для FRCs, по умолчанию, RNTI 0 рассматривается для вычисления EVM.

Пример вычисляет EVM для упомянутого выше RNTIs. Чтобы заменить RNTIs по умолчанию, задайте targetRNTIs вектор

targetRNTIs = [];

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

displayEVM = true;

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

plotEVM = true;
if displayEVM
    fprintf('Reference Channel = %s\n', rc);
end
Reference Channel = NR-FR1-TM3.2

Чтобы измерить EVM, как задано в TS 38.104, Приложение B (FR1) / Приложение C (FR2), устанавливают evm3GPP к true.

evm3GPP = false;

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

tmwavegen = hNRReferenceWaveformGenerator(rc,bw,scs,dm);
[txWaveform,tmwaveinfo,resourcesinfo] = generateWaveform(tmwavegen,tmwavegen.Config.NumSubframes);

Нарушение: шум фазы и нелинейность

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

phaseNoiseOn = true;
nonLinearityModelOn = true;

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

txWaveform = txWaveform/max(abs(txWaveform));

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

txWaveform = repmat(txWaveform,2,1);

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

if phaseNoiseOn
    sr = tmwaveinfo.Info.SamplingRate;

    % Carrier frequency
    if tmwavegen.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 freq 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 = pnoise(txWaveform);
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 non-linear characteristic
     plotNonLinearCharacteristic(rapp);

    % Apply nonlinearity
    rxWaveform = rapp(rxWaveform);
end

Сигнал был ранее повторен дважды. Мы теперь удаляем первую половину этого сигнала. Это избегает любого переходного процесса, введенного моделями нарушения.

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

Выполните измерения

Функция, hNRPDSCHEVM, выполняет эти шаги, чтобы декодировать и анализировать форму волны:

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

  • Демодуляция OFDM полученной формы волны

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

  • Эквализация

  • Расчет PDSCH EVM (включают переключатель evm3GPP, к процессу согласно требованиям измерения EVM, заданным в TS 38.104, Приложение B (FR1) / Приложение C (FR2))

Меры в качестве примера и выходные параметры различный EVM связали статистику (i.e. на символ, на паз, и на систему координат достигают максимума EVM и RMS EVM). Пример отображает EVM для каждого паза и системы координат на командном окне. Это также отображает полный EVM, усредненный по целой входной форме волны. Пример производит много графиков: EVM по сравнению с на символ OFDM, паз, поднесущую и полный EVM. Каждый график отображает пик по сравнению с RMS EVM.

% Compute and display EVM measurements
cfg = struct();
cfg.Evm3GPP = evm3GPP;
cfg.TargetRNTIs = targetRNTIs;
cfg.PlotEVM = plotEVM;
cfg.DisplayEVM = displayEVM;
cfg.Label = tmwavegen.ConfiguredModel{1};
[evmGrid,eqSym,refSym,plots] = hNRPDSCHEVM(tmwavegen.Config,rxWaveform,cfg,resourcesinfo.WaveformResources);
 RMS EVM, Peak EVM, slot 0: 4.007 20.148%
 RMS EVM, Peak EVM, slot 1: 3.854 12.988%
 RMS EVM, Peak EVM, slot 2: 3.782 14.258%
 RMS EVM, Peak EVM, slot 3: 3.748 14.297%
 RMS EVM, Peak EVM, slot 4: 4.158 18.071%
 RMS EVM, Peak EVM, slot 5: 4.176 17.451%
 RMS EVM, Peak EVM, slot 6: 3.999 15.321%
 RMS EVM, Peak EVM, slot 7: 4.141 16.396%
 RMS EVM, Peak EVM, slot 8: 3.859 14.277%
 RMS EVM, Peak EVM, slot 9: 3.896 12.688%
 RMS EVM, Peak EVM, slot 10: 4.039 15.034%
 RMS EVM, Peak EVM, slot 11: 3.701 15.019%
 RMS EVM, Peak EVM, slot 12: 3.897 12.996%
 RMS EVM, Peak EVM, slot 13: 3.959 17.131%
 RMS EVM, Peak EVM, slot 14: 3.866 12.698%
 RMS EVM, Peak EVM, slot 15: 3.917 17.618%
 RMS EVM, Peak EVM, slot 16: 3.808 15.598%
 RMS EVM, Peak EVM, slot 17: 4.022 15.583%
 RMS EVM, Peak EVM, slot 18: 3.905 21.075%
 RMS EVM, Peak EVM, slot 19: 3.976 12.555%
Averaged overall RMS EVM: 3.938%
Peak EVM = 21.0751%

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

function plotNonLinearCharacteristic(memoryLessNonlinearity)
% Plot the non linear characteristic of the power amplifier (PA) impairment
% represented by memoryLessNonlinearity system object. This input parameter
% is a comm.MemorylessNonlinearity system object.

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

% Non linearity
yRapp = memoryLessNonlinearity(x);
% Release object so we can feed it 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

Похожие темы