Этот пример показывает, как 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.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, будет усилен ОБПФ. Усиление является квадратным корнем из размера ОБПФ (), таким образом чтобы гарантировать, что степень добавленного шума нормирована после демодуляции чтобы достигнуть желаемого ОСШ желаемая шумовая степень разделена на. Кроме того, когда действительные и мнимые части шума создаются отдельно прежде чем быть объединенным в комплексный аддитивный белый Гауссов шум, шумовая амплитуда должна масштабироваться так произведенной шумовой энергией, 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)"