Этот пример показывает, как измерить ложную вероятность обнаружения и пропущенную вероятность обнаружения Гибридного Автоматического Повторного ACK Запроса (HARQ-ACK), мультиплексированный на Физическом Восходящем Разделяемом Канале (PUSCH) использование LTE Toolbox™ под условиями испытания соответствия, как задано в TS36.104, Раздел 8.2.4.1 [1].
Восходящую управляющую информацию (UCI) можно нести на Физическом Восходящем Разделяемом Канале (PUSCH) и может содержать Гибридный Автоматический Повторный ACK Запроса (HARQ-ACK) информация. Этот пример использует LTE Toolbox, чтобы выполнить "HARQ-ACK, Мультиплексированный на PUSCH" тест соответствия, заданный в TS36.104, Раздел 8.2.4.1 [1].
Два требования к производительности заданы для HARQ-ACK, мультиплексированного на PUSCH:
Ложная вероятность обнаружения ACK является вероятностью, что ACK обнаруживается, когда данные только отправляются на символах, где информация о HARQ-ACK может быть выделена.
ACK отсутствовал, вероятность обнаружения является условной вероятностью не обнаружения ACK, когда это было отправлено на ресурсах PUSCH.
Условия, заданные для этого теста, равняются двум, получают антенны, нормальный циклический префикс, канал ETU70, с помощью Фиксированного ссылочного канала (FRC) A4-3. Цель, заданная в TS 36.104, Раздел 8.2.4.1 [1] для пропускной способности на 1,4 МГц (6RB), является ложной вероятностью обнаружения и пропущенной вероятностью обнаружения 1% на уровне 13,8 дБ.
Тест запущен на подкадре основанием подкадра в каждой тестовой точке ОСШ. Для каждого подкадра восходящая форма волны сгенерирована с и без информации о ACK, прошла через исчезающий канал и декодируемый HARQ-ACK. Ложные обнаружения и пропущенные обнаружения зарегистрированы и вероятность ошибки, отображенной для области значений протестированного SNRs.
Пример выполняется в течение продолжительности симуляции 1 кадра во многих SNRs включая необходимые 13,8 дБ, на уровне которых тестовые требования для ложных и пропущенных процентов раскрытых преступлений (1% в каждом случае) должны быть достигнуты согласно TS36.104, Таблице 8.2.4.1-1 [1]. Большое количество numSubframes
должно использоваться, чтобы привести к значимым результатам пропускной способности. SNRdB
может быть массивом значений или скаляра.
numSubframes = 10; % Number of frames to simulate at each SNR SNRdB = [4.8 7.8 10.8 13.8 16.8]; % SNR points to simulate
Чтобы сконфигурировать передатчик, несколько желаемых полей параметра установлены в структуре frc
, который затем передается lteRMCUL, который установит все другие поля обязательного параметра. На данном этапе структура frc
представляет полную настройку необходимой передачи.
frc.TotSubframes = 1; % Total number of subframes to generate frc.NCellID = 10; % Cell identity frc.RC = 'A4-3'; % FRC number % Populate FRC configuration structure with default values for A4-3 frc = lteRMCUL(frc);
Канал распространения сконфигурирован через структуру chcfg
с настройками на тестовые требования. Обратите внимание на то, что уровень выборки распространения определяется от уровня выборки переданной формы волны, которая может быть установлена с помощью lteSCFDMAInfo.
chcfg.NRxAnts = 2; % Number of receive antennas chcfg.DelayProfile = 'ETU'; % Delay profile chcfg.DopplerFreq = 70; % Doppler frequency chcfg.MIMOCorrelation = 'Low'; % MIMO correlation chcfg.Seed = 91; % 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 % Set channel model sampling rate info = lteSCFDMAInfo(frc); chcfg.SamplingRate = info.SamplingRate;
Средство оценки канала сконфигурировано с помощью структуры cec
. Профиль задержки ETU заставляет канал изменяться быстро в зависимости от времени. Поэтому маленькое экспериментальное окно частоты усреднения 9 Элементов Ресурса (REs) используется. Сигнал ссылки демодуляции (DRS) содержится только в одном символе на слот, поэтому окно усреднения во времени 1 RE используется. Это не будет включать пилотов от смежного слота при усреднении.
cec.PilotAverage = 'UserDefined'; % Type of pilot averaging cec.FreqWindow = 9; % Frequency averaging windows in REs cec.TimeWindow = 1; % Time averaging windows in REs cec.InterpType = 'cubic'; % Interpolation type cec.Reference = 'Antennas'; % Reference for channel estimation
Цикл используется, чтобы запустить симуляцию для набора точек ОСШ, данных векторным SNRdB
.
Шум, добавленный перед демодуляцией SC-FDMA, будет усилен ОБПФ. Усиление является квадратным корнем из размера ОБПФ (). Чтобы гарантировать, что степень аддитивного шума нормирована после демодуляции, чтобы достигнуть желаемого ОСШ, желаемая шумовая степень разделена на. Кроме того, когда действительные и мнимые части шума создаются отдельно прежде чем быть объединенным в комплексный Аддитивный белый гауссов шум (AWGN), шумовая амплитуда должна масштабироваться так произведенной шумовой энергией, 1.
В каждой тестовой точке ОСШ вычисляется вероятность ложного и пропущенного обнаружения. Эти вероятности вычисляются на подкадр основанием подкадра с помощью следующих шагов:
Создайте Форму волны Передачи: Восходящий Инструмент Ссылочного канала измерения (RMC) lteRMCULTool используется, чтобы сгенерировать восходящую форму волны, содержащую случайные транспортные данные и бит HARQ-ACK в каждом нечетном подкадре.
Шумное Моделирование Канала: форма волны передается через исчезающий канал и добавленный AWGN.
Выполните Демодуляция SC-FDMA и Синхронизация: полученные символы синхронизируются, чтобы составлять комбинацию задержки реализации и распространения задержки канала. Символами является затем демодулируемый SC-FDMA.
Выполните Канал и Шумовую Степень Спектральная Оценка Плотности и Коррекция: канал и шумовая степень, спектральная плотность оценивается и полученные символы PUSCH, компенсируются.
Декодируйте PUSCH: UpLink Разделяемый Канал (UL-SCH) кодирование определяется и используется, чтобы декодировать PUSCH, чтобы восстановить чередованный UL-SCH.
Восстановите Бит ACK UCI: Устраните чередование PUSCH и декодируйте информацию о HARQ-ACK, чтобы восстановить бит HARQ-ACK UCI и обнаружить ложь HARQ-ACK или пропущенное обнаружение на основе того, был ли бит HARQ-ACK закодирован в переданном подкадре или нет.
% Initialize variables used in the simulation and analysis pFalse = zeros(size(SNRdB)); % Probability of false detection at each SNR pMissed = zeros(size(SNRdB)); % Probability of missed detection at each SNR for nSNR = 1:length(SNRdB) % Initialize the random number generator stream rng('default'); % Extract SNR to test SNR = 10^(SNRdB(nSNR)/20); % Scale noise to ensure the desired SNR after SC-FDMA demodulation N = 1/(SNR*sqrt(double(info.Nfft)))/sqrt(2.0); offsetUsed = 0; falseCount = 0; falseTests = 0; missCount = 0; missTests = 0; for subframeNo = 0:(numSubframes-1) % Updating subframe number frc.NSubframe = mod(subframeNo, 10); % Transmit ACK on every odd subframe if (mod(subframeNo, 2)==0) ACK = []; falseTests = falseTests + 1; else ACK = 1; missTests = missTests + 1; end % Create random data to transmit trblklen = frc.PUSCH.TrBlkSizes(frc.NSubframe+1); trblk = randi([0 1], trblklen, 1); % Transmit a waveform with an additional 25 samples to cover the % range of delays expected from the channel modeling (a % combination of implementation delay and channel delay spread) txWaveform = [lteRMCULTool(frc, trblk, [], [], ACK); zeros(25, 1)]; % Pass waveform through fading channel model chcfg.InitTime = subframeNo/1000; rxWaveform = lteFadingChannel(chcfg, txWaveform); % Add noise noise = N*complex(randn(size(rxWaveform)), ... randn(size(rxWaveform))); rxWaveform = rxWaveform + noise; % Synchronization offset = lteULFrameOffset(frc, frc.PUSCH,rxWaveform); if (offset < 25) offsetUsed = offset; end % SC-FDMA demodulation rxSubframe = lteSCFDMADemodulate(frc, ... rxWaveform(1+offsetUsed:end, :)); % Channel Estimation [estChannelGrid, noiseEst] = lteULChannelEstimate( ... frc, frc.PUSCH, cec, rxSubframe); % PUSCH indices for given subframe puschIndices = ltePUSCHIndices(frc,frc.PUSCH); % Minimum Mean Squared Error (MMSE) equalization rxSymbols = lteEqualizeMMSE(rxSubframe(puschIndices), ... estChannelGrid(puschIndices), noiseEst); % Obtain UL-SCH coding information for current transport block and % ACK, and concatenate this information with the PUSCH / UL-SCH % configuration frc.PUSCH = lteULSCHInfo(frc, frc.PUSCH, trblklen, ... 0, 0, 1, 'chsconcat'); % Perform deprecoding, demodulation and descrambling on the % received data rxEncodedBits = ltePUSCHDecode(frc, frc.PUSCH, rxSymbols); % UL-SCH channel deinterleaving [deinterleavedData, ccqi, cri, cack] = ... lteULSCHDeinterleave(frc, frc.PUSCH, rxEncodedBits); % HARQ-ACK decoding rxACK = lteACKDecode(frc.PUSCH, cack); % Detect false or missed HARQ-ACK if (isempty(ACK) && ~isempty(rxACK)) falseCount = falseCount + 1; end if (~isempty(ACK) && ~isequal(ACK,rxACK)) missCount = missCount + 1; end end % Calculate false or missed HARQ-ACK probability pFalse(nSNR) = falseCount/falseTests; pMissed(nSNR) = missCount/missTests; end
Постройте моделируемые результаты против целевой производительности, как предусмотрено в стандарте с помощью hHARQACKResults.m.
hHARQACKResults(SNRdB, pFalse, pMissed);
Этот пример использует функции помощника:
3GPP TS 36.104 "Передача радио базовой станции (BS) и прием"