Тест соответствия обнаружения 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 подкадров во многих SNRs. foffset смещение частоты, которое будет смоделировано между передатчиком и приемником и задано для теста в TS36.104, Таблице 8.4.2.1-1 [1]. Большое количество numSubframes должен использоваться, чтобы привести к значимым результатам. SNRdB может быть массив значений или скаляра.

numSubframes = 10;  % Number of subframes frames 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, будет усилен ОБПФ. Усиление является квадратным корнем из размера ОБПФ ($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)"

Для просмотра документации необходимо авторизоваться на сайте