Этот пример измеряет величину вектора ошибок (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