В этом примере показано, как 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.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
. Это строение используется для создания второй структуры 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 (), таким образом, для обеспечения нормализации степени добавляемого шума после демодуляции, для достижения желаемого ОСШ требуемая степень делится на. В сложение, поскольку действительная и мнимая части шума создаются отдельно перед объединением в комплексный аддитивный белый Гауссов шум, амплитуда шума должна быть масштабирована таким образом, чтобы сгенерированный шум степени равнялся 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);
Этот пример использует эту вспомогательную функцию.
3GPP TS 36.104 «Радиопередача и прием базовой станции (BS)»
3GPP TS 36.141 «Соответствие базовой станции (BS) проверки»