exponenta event banner

5G Тест обнаружения NR PRACH

В этом примере показано, как моделировать тест соответствия пропущенного обнаружения физического канала произвольного доступа (PRACH), как определено в TS 38.141-1 [1]. Можно научиться измерять вероятность правильного обнаружения преамбулы PRACH при наличии сигнала преамбулы.

Введение

PRACH - это передача по восходящей линии связи, используемая пользовательским оборудованием (UE) для инициирования синхронизации с gNireB. TS 38.141-1 Раздел 8.4.1.5 определяет вероятность обнаружения PRACH как большую или равную 99% при определенных значениях SNR для набора конфигураций PRACH и условий распространения. Существует несколько случаев обнаружения ошибок:

  • Обнаружение неправильной преамбулы

  • Не удается обнаружить преамбулу

  • Обнаружение правильной преамбулы, но с неправильной оценкой синхронизации

В TS 38.141-1 указано, что правильное обнаружение достигается, когда погрешность оценки временного смещения наиболее сильного тракта меньше допуска временной ошибки, приведенного в таблице 8.4.1.1-1. Для условий распространения канала TDLC300-100 и формата преамбулы PRACH 0 допуск временной ошибки составляет 2,55 микросекунды.

В этом примере форма сигнала PRACH конфигурируется и проходит через соответствующий канал. На стороне приемника пример выполняет обнаружение PRACH и вычисляет вероятность обнаружения PRACH. В примере рассматриваются параметры, определенные в TS 38.141-1 Таблица 8.4.1.5-1 и Таблица A.6-1. Это: обычный режим (т. е. неограниченный набор), 2 приемные антенны, TDLC300-100 канал, обычный циклический префикс, формат пакета 0, SNR -6.0 дБ. При изменении конфигурации PRACH для использования одного из других форматов преамбулы PRACH, перечисленных в таблице A.6-1, необходимо обновить значения допуска временных ошибок и SNR в соответствии с TS 38.141-1, таблица 8.4.1.1-1 и таблицы 8.4.1.5-1, с 8.4.1.5-3, соответственно.

Конфигурация моделирования

В примере рассматривается 10 подкадров в ряде SNR. Следует использовать большое количество numSubframes для получения значимых результатов. Можно задать SNRdB как массив значений или скаляр. В таблице 8.4.1.5-1 ТУ 38.141-1 указано смещение частоты foffset моделируется между передатчиком и приемником.

numSubframes = 10;               % Number of 1 ms subframes to simulate at each SNR
SNRdB = [-21, -16, -11, -6, -1]; % SNR range in dB
foffset = 400.0;                 % Frequency offset in Hz
timeErrorTolerance = 2.55;       % Time error tolerance in microseconds

Конфигурация несущей

Используйте nrCarrierConfig объект конфигурации carrier для указания параметров оператора связи. В примере рассматривается несущая, характеризующаяся интервалом между поднесущими 15 кГц и полосой пропускания 5 МГц. То есть несущая охватывает 25 блоков ресурсов, согласно таблице 5.3.2-1 в TS 38.104 [2].

carrier = nrCarrierConfig;
carrier.SubcarrierSpacing = 15;
carrier.NSizeGrid = 25;

Конфигурирование PRACH

В таблице A.6-1 документа TS 38.141-1 указаны конфигурации PRACH, используемые для проверки соответствия обнаружения PRACH.

Установите конфигурацию PRACH с помощью nrPRACHConfig объект конфигурации prach, в соответствии с таблицей A.6-1 и разделом 8.4.1.4.2 в ТУ 38.141-1.

% Define the value of ZeroCorrelationZone using the NCS table stored in
% the |nrPRACHConfig| object
ncsTable = nrPRACHConfig.Tables.NCSFormat012;
NCS = 13;
zeroCorrelationZone = ncsTable.ZeroCorrelationZone(ncsTable.UnrestrictedSet==NCS);

% Set PRACH configuration
prach = nrPRACHConfig;
prach.FrequencyRange = 'FR1';                    % Frequency range
prach.DuplexMode = 'FDD';                        % Frequency Division Duplexing (FDD)
prach.ConfigurationIndex = 27;                   % Configuration index for format 0
prach.SubcarrierSpacing = 1.25;                  % Subcarrier spacing
prach.SequenceIndex = 22;                        % Logical sequence index
prach.PreambleIndex = 32;                        % Preamble index
prach.RestrictedSet = 'UnrestrictedSet';         % Normal mode
prach.ZeroCorrelationZone = zeroCorrelationZone; % Cyclic shift index
prach.FrequencyStart = 0;                        % Frequency location

% Compute the OFDM-related information for this PRACH configuration
windowing = [];
ofdmInfo = nrPRACHOFDMInfo(carrier,prach,'Windowing',windowing);

Конфигурация канала распространения

Используйте nrTDLChannel объект для конфигурирования модели канала распространения линии задержки (TDL) channel в соответствии с TS 38.141-1 Таблица 8.4.1.1-1.

channel = nrTDLChannel;
channel.DelayProfile = "TDL-C";             % Delay profile
channel.DelaySpread = 300e-9;               % Delay spread in seconds
channel.MaximumDopplerShift = 100.0;        % Maximum Doppler shift in Hz
channel.SampleRate = ofdmInfo.SampleRate;   % Input signal sample rate in Hz
channel.MIMOCorrelation = "Low";            % MIMO correlation
channel.TransmissionDirection = "Uplink";   % Uplink transmission
channel.NumTransmitAntennas = 1;            % Number of transmit antennas
channel.NumReceiveAntennas = 2;             % Number of receive antennas
channel.NormalizePathGains = true;          % Normalize delay profile power
channel.Seed = 42;                          % Channel seed. Change this for different channel realizations
channel.NormalizeChannelOutputs = true;     % Normalize for receive antennas

Цикл для значений SNR

Используйте цикл для выполнения моделирования для набора точек SNR, заданных вектором SNRdB. Вектор SNR, сконфигурированный здесь, представляет собой диапазон точек SNR, включая точку на уровне -6,0 дБ, SNR, в которой должно быть достигнуто тестовое требование для скорости обнаружения PRACH (99%) для формата преамбулы 0, как описано в таблице 8.4.1.5-1 в TS 38.141-1.

hNRPRACHWaveformGenerator генерирует выходной сигнал, нормализованный до той же мощности передачи, что и для передачи данных по восходящей линии связи в пределах 5G Toolbox™. Следовательно, та же самая нормализация должна происходить в отношении шума, добавленного к PRACH. Шум, добавленный перед демодуляцией OFDM, будет усилен IFFT на коэффициент, равный квадратному корню размера IFFT (). $N_{FFT}$Чтобы гарантировать, что мощность добавленного шума нормализуется после демодуляции, и, таким образом, для достижения требуемого SNR, требуемая мощность шума делится на. $N_{FFT}$Кроме того, поскольку действительная и мнимая части шума создаются отдельно перед объединением в сложный аддитивный белый гауссов шум, амплитуда шума масштабируется$1/\sqrt2$ таким образом, что генерируемая мощность шума равна 1.

В каждой контрольной точке SNR вычислите вероятность обнаружения на субкадре по базису субкадра, используя следующие шаги:

  • Передача PRACH: использование hNRPRACHWaveformGenerator для генерации сигнала PRACH. Отправьте преамбулы PRACH со смещениями синхронизации, определенными в TS 38.141-1 Рисунок 8.4.1.4.2-2. Установите базовое значение смещения синхронизации равным 50% от числа циклических сдвигов для генерации PRACH. Это смещение увеличивается для каждой преамбулы, добавляя значение шага 0,1 микросекунды до конца испытываемого диапазона, что составляет 0,9 микросекунды для формата преамбулы PRACH 0. Этот шаблон затем повторяется.

  • Моделирование шумных каналов: Пропускайте сигнал через канал TDL и добавляйте аддитивный белый гауссов шум. Добавьте дополнительные выборки к концу формы сигнала, чтобы охватить диапазон задержек, ожидаемых от моделирования канала (комбинация задержки реализации и расширения задержки канала). Эта задержка реализации затем удаляется, чтобы гарантировать, что задержка реализации интерпретируется как фактическое смещение по времени в детекторе преамбулы.

  • Применение сдвига частоты: применить сдвиг частоты к принимаемому сигналу, как определено спецификацией.

  • Обнаружение PRACH: Выполнение обнаружения PRACH с использованием hPRACHDetect для всех индексов преамбулы ячейки (0-63). Использовать обнаруженный индекс PRACH и смещение, возвращаемое hPRACHDetect определить, где обнаружение было успешным в соответствии с ограничениями, обсужденными в разделе Введение.

% Initialize variables storing probability of detection at each SNR
pDetection = zeros(size(SNRdB));

% Get the maximum number of delayed samples by a channel multipath
% component. This is calculated from the channel path with the largest
% delay and the implementation delay of the channel filter. The example
% requires this to flush the channel filter to obtain the received signal.
channelInfo = info(channel);
maxChDelay = ceil(max(channelInfo.PathDelays*channel.SampleRate)) + channelInfo.ChannelFilterDelay;

% Total number of PRACH slots in the simulation period
numPRACHSlots = floor(numSubframes / prach.SubframesPerPRACHSlot);

% Store the configuration parameters needed to generate the PRACH waveform
waveconfig.NumSubframes = prach.SubframesPerPRACHSlot;
waveconfig.Windowing = windowing;
waveconfig.Carriers = carrier;
waveconfig.PRACH.Config = prach;

% The temporary variables 'prach_init', 'waveconfig_init', 'ofdmInfo_init',
% and 'channelInfo_init' are used to create the temporary variables
% 'prach', 'waveconfig', 'ofdmInfo', and 'channelInfo' within the SNR loop
% to create independent instances in case of parallel simulation
prach_init = prach;
waveconfig_init = waveconfig;
ofdmInfo_init = ofdmInfo;
channelInfo_init = channelInfo;

for snrIdx = 1:numel(SNRdB) % comment out for parallel computing
% parfor snrIdx = 1:numel(SNRdB) % uncomment for parallel computing
% To reduce the total simulation time, you can execute this loop in
% parallel by using the Parallel Computing Toolbox. Comment out the 'for'
% statement and uncomment the 'parfor' statement. If the Parallel Computing
% Toolbox(TM) is not installed, 'parfor' defaults to normal 'for' statement

    % Set the random number generator settings to default values
    rng('default');

    % Initialize variables for this SNR point, required for initialization
    % of variables when using the Parallel Computing Toolbox
    prach = prach_init;
    waveconfig = waveconfig_init;
    ofdmInfo = ofdmInfo_init;
    channelInfo = channelInfo_init;

    % Reset the channel so that each SNR point will experience the same
    % channel realization
    reset(channel);

    % Normalize noise power to take account of sampling rate, which is a
    % function of the IFFT size used in OFDM modulation. The SNR is defined
    % per resource element for each receive antenna.
    SNR = 10^(SNRdB(snrIdx)/20);
    N0 = 1/(sqrt(2.0*channel.NumReceiveAntennas*double(ofdmInfo.Nfft))*SNR);

    % Detected preamble count
    detectedCount = 0;

    % Loop for each PRACH slot
    numActivePRACHSlots = 0;
    for nSlot = 0:numPRACHSlots-1

        prach.NPRACHSlot = nSlot;

        % Generate PRACH waveform for the current slot
        waveconfig.PRACH.Config.NPRACHSlot = nSlot;
        [waveform,~,winfo] = hNRPRACHWaveformGenerator(waveconfig);

        % Skip this slot if the PRACH is inactive
        if (isempty(winfo.WaveformResources.PRACH))
            continue;
        end

        numActivePRACHSlots = numActivePRACHSlots + 1;

        % Set PRACH timing offset in microseconds as per TS 38.141-1 Figure 8.4.1.4.2-2
        baseOffset = ((winfo.WaveformResources.PRACH.Resources.PRACHSymbolsInfo.NumCyclicShifts/2)/prach.LRA)/prach.SubcarrierSpacing*1e3; % (microseconds)
        timingOffset = baseOffset + mod(nSlot,10)/10; % (microseconds)
        sampleDelay = fix(timingOffset / 1e6 * ofdmInfo.SampleRate);

        % Generate transmit waveform
        txwave = [zeros(sampleDelay,1); waveform(1:(end-sampleDelay))];

        % Pass data through channel model. Append zeros at the end of the
        % transmitted waveform to flush channel content. These zeros take
        % into account any delay introduced in the channel. This is a mix
        % of multipath delay and implementation delay. This value may
        % change depending on the sampling rate, delay profile and delay
        % spread
        rxwave = channel([txwave; zeros(maxChDelay, size(txwave,2))]);

        % Add noise
        noise = N0*complex(randn(size(rxwave)), randn(size(rxwave)));
        rxwave = rxwave + noise;

        % Remove the implementation delay of the channel modeling
        rxwave = rxwave((channelInfo.ChannelFilterDelay + 1):end, :);

        % Apply frequency offset
        t = ((0:size(rxwave, 1)-1)/channel.SampleRate).';
        rxwave = rxwave .* repmat(exp(1i*2*pi*foffset*t), 1, size(rxwave, 2));

        % PRACH detection for all cell preamble indices
        [detected, offsets] = hPRACHDetect(carrier, prach, rxwave, (0:63).');

        % Test for preamble detection
        if (length(detected)==1)

            % Test for correct preamble detection
            if (detected==prach.PreambleIndex)

                % Calculate timing estimation error
                trueOffset = timingOffset/1e6; % (s)
                measuredOffset = offsets(1)/channel.SampleRate;
                timingerror = abs(measuredOffset-trueOffset);

                % Test for acceptable timing error
                if (timingerror<=timeErrorTolerance/1e6)
                    detectedCount = detectedCount + 1; % Detected preamble
                else
                    disp('Timing error');
                end
            else
                disp('Detected incorrect preamble');
            end
        else
            disp('Detected multiple or zero preambles');
        end

    end % of nSlot loop

    % Compute final detection probability for this SNR
    pDetection(snrIdx) = detectedCount/numActivePRACHSlots;

end % of SNR loop
Detected multiple or zero preambles
Detected multiple or zero preambles
Detected multiple or zero preambles

Результаты

В конце цикла SNR пример строит график вычисленных вероятностей обнаружения для каждого значения SNR относительно целевой вероятности.

hPRACHDetectionResults(SNRdB, numSubframes, pDetection);

Приложение

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

Ссылки

  1. 3GPP ТС 38.141-1. "НР; Тестирование соответствия базовой станции (BS). Часть 1: Проведено тестирование соответствия. "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

  2. 3GPP ТС 38.104. "НР; радиопередача и прием базовой станции (BS). "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

См. также

Функции

Объекты

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