Тест соответствия обнаружения PRACH

В этом примере показано, как LTE Toolbox™ может использоваться для моделирования TS36.104 теста соответствия «Требования к обнаружению PRACH». Вероятность правильного обнаружения преамбулы физического канала случайного доступа (PRACH) измеряется, когда присутствует сигнал преамбулы.

Введение

Канал произвольного доступа (RACH) является передачей по восходящей линии связи, используемой пользовательским оборудованием (UE) для инициирования синхронизации с eNodeB. TS36.104 в разделе 8.3.4.1 [1] задается вероятность обнаружения физического канала случайного доступа (PRACH), которая должна быть больше или равна 99% при ОСШ -8,0 дБ. Существует несколько случаев обнаружения ошибки:

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

  • Не обнаруживает преамбулу

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

Для условий ETU70 распространения канала возникает ошибка расчета синхронизации, если ошибка расчета смещения синхронизации самого сильного пути больше, чем 2,08 нас. Самый сильный путь имеет задержку 310 нс для ETU70.

В этом примере форма волны PRACH конфигурируется и передается через соответствующий канал. В приемнике выполняется обнаружение PRACH и вычисляется вероятность обнаружения PRACH. Пример выполняется для параметров, определенных в TS36.104, разделе 8.4.1 [1] и TS36.141, таблица A.6-1 [2]; то есть режим normal mode, 2 приемные антенны, ETU70 канал, нормальный циклический префикс, формат пакета 0, ОСШ -8.0dB.

Область Строения

Тест проводится по 10 подкадрам в ряде ОСШ. foffset - смещение частоты, которое будет смоделировано между передатчиком и приемником и указано для теста в TS36.104, таблица 8.4.2.1-1 [1]. Большое количество numSubframes следует использовать для достижения значимых результатов. SNRdB может быть массивом значений или скаляром.

numSubframes = 10;  % Number of subframes to simulate at each SNR
SNRdB = [-14.0 -12.0 -10.0 -8.0 -6.0];  % SNR points to simulate
foffset = 270.0;                        % Frequency offset in Hertz

Строение UE

Настройки пользовательского оборудования (UE) заданы в структуре ue.

ue.NULRB = 6;                   % 6 Resource Blocks
ue.DuplexMode = 'FDD';          % Frequency Division Duplexing (FDD)
ue.CyclicPrefixUL = 'Normal';   % Normal cyclic prefix length
ue.NTxAnts = 1;                 % Number of transmission antennas

Строение PRACH

Строение PRACH определяется в структуре prach. Это строение используется для создания второй структуры info по вызову ltePRACHInfo. Это предоставляет информацию о PRACH, сгенерированном при заданном строении. Некоторые из этих сведений будут использованы позже в примере.

prach.Format = 0;          % PRACH format: TS36.104, Table 8.4.2.1-1
prach.SeqIdx = 22;         % Logical sequence index: TS36.141, Table A.6-1
prach.CyclicShiftIdx = 1;  % Cyclic shift index: TS36.141, Table A.6-1
prach.HighSpeed = 0;       % Normal mode: TS36.104, Table 8.4.2.1-1
prach.FreqOffset = 0;      % Default frequency location
prach.PreambleIdx = 32;    % Preamble index: TS36.141, Table A.6-1

info = ltePRACHInfo(ue, prach);  % PRACH information

Канал распространения Строения

Сконфигурируйте модель канала распространения с помощью структуры chcfg по TS36.104 в таблице 8.4.2.1-1 [1].

chcfg.NRxAnts = 2;                       % Number of receive antenna
chcfg.DelayProfile = 'ETU';              % Delay profile
chcfg.DopplerFreq = 70.0;                % Doppler frequency
chcfg.MIMOCorrelation = 'Low';           % MIMO correlation
chcfg.Seed = 1;                          % Channel seed
chcfg.NTerms = 16;                       % Oscillators used in fading model
chcfg.ModelType = 'GMEDS';               % Rayleigh fading model type
chcfg.InitPhase = 'Random';              % Random initial phases
chcfg.NormalizePathGains = 'On';         % Normalize delay profile power
chcfg.NormalizeTxAnts = 'On';            % Normalize for transmit antennas
chcfg.SamplingRate = info.SamplingRate;  % Sampling rate

Цикл для значений ОСШ

Цикл используется, чтобы запустить симуляцию для набора точек ОСШ, заданную вектором SNRdB. Вектор ОСШ, сконфигурированный здесь, является областью значений точек ОСШ, включая точку на -8,0 дБ, ОСШ, при котором должно быть достигнуто тестовое требование для частоты обнаружения PRACH (99%).

ltePRACH генерирует выходной сигнал, нормированный к той же степени передачи, что и для передач данных восходящей линии связи в LTE Toolbox. Поэтому такая же нормализация должна происходить на шуме, добавленном в PRACH. Шум, добавленный перед демодуляцией SC-FDMA, будет усилен ОБПФ. Усиление является квадратным корнем размера IFFT $N_{\mathrm{FFT}}$(), таким образом, для обеспечения нормализации степени добавляемого шума после демодуляции, для достижения желаемого ОСШ требуемая степень делится на. $N_{\mathrm{FFT}}$В сложение, поскольку действительная и мнимая части шума создаются отдельно перед объединением в комплексный аддитивный белый Гауссов шум, амплитуда шума должна быть масштабирована$1/\sqrt{2}$ таким образом, чтобы сгенерированный шум степени равнялся 1.

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

  • Передача PRACH: Форма волны PRACH генерируется с помощью ltePRACH с заданным временным смещением. Согласно TS36.141, раздел 8.4.1.4.2 [2] преамбулы направляются с определенными смещениями времени, указанными в TS36.141, рисунок 8.4.1.4.2-2 [2]. Базовое значение смещения по времени устанавливается на 50% от количества циклических сдвигов для генерации PRACH. Это смещение увеличивается для каждой преамбулы, добавляя значение шага 0,1 нас, до конца тестируемой области значений, который составляет 0,9 нас. Затем этот шаблон повторяется.

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

  • Применение смещения частоты: Смещение частоты, заданное стандартом, также применяется на этом этапе путем выполнения простой FM-модуляции принятой формы волны.

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

% Initialize the random number generator stream
rng('default');

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

for nSNR = 1:length(SNRdB)

    % Scale noise to ensure the desired SNR after SC-FDMA demodulation
    ulinfo = lteSCFDMAInfo(ue);
    SNR = 10^(SNRdB(nSNR)/20);
    N = 1/(SNR*sqrt(double(ulinfo.Nfft)))/sqrt(2.0);

    % Detected preamble count
    detectedCount = 0;

    % Loop for each subframe
    for nsf = 1:numSubframes

        % PRACH transmission
        ue.NSubframe = mod(nsf-1, 10);
        ue.NFrame = fix((nsf-1)/10);

        % Set PRACH timing offset in us as per TS36.141, Figure 8.4.1.4.2-2
        prach.TimingOffset = info.BaseOffset + ue.NSubframe/10.0;

        % Generate transmit wave
        txwave = ltePRACH(ue, prach);

        % Channel modeling
        chcfg.InitTime = (nsf-1)/1000;
        [rxwave, fadinginfo] = lteFadingChannel(chcfg, ...
                                [txwave; zeros(25, 1)]);

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

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

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

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

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

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

                % Calculate timing estimation error. The true offset is
                % PRACH offset plus channel delay
                trueOffset = prach.TimingOffset/1e6 + 310e-9;
                measuredOffset = offsets(1)/chcfg.SamplingRate;
                timingerror = abs(measuredOffset-trueOffset);

                % Test for acceptable timing error
                if (timingerror<=2.08e-6)
                    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 subframe loop

    % Compute final detection probability for this SNR
    pDetection(nSNR) = detectedCount/numSubframes;

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

Анализ

В конце цикла ОСШ вычисленные вероятности обнаружения для каждого значения ОСШ строятся относительно целевой вероятности.

hPRACHDetectionResults(SNRdB, numSubframes, pDetection);

Приложение

Этот пример использует эту вспомогательную функцию.

Избранная библиография

  1. 3GPP TS 36.104 «Радиопередача и прием базовой станции (BS)»

  2. 3GPP TS 36.141 «Соответствие базовой станции (BS) проверки»