В этом примере показано, как измерить ложную вероятность обнаружения, и пропущенная вероятность обнаружения Гибридного Автоматического Повторного ACK Запроса (HARQ-ACK) мультиплексировала на Физическом Восходящем Разделяемом Канале (PUSCH) использование LTE Toolbox™ под условиями испытания соответствия, как задано в TS36.104, Раздел 8.2.4.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) и прием"