В этом примере показано, как измерить вероятность ложного обнаружения и вероятность пропущенного обнаружения гибридного автоматического запроса на повторение ACK (HARQ-ACK), мультиплексированного по физическому совместно используемому каналу восходящей линии связи (PUSCH), с использованием Toolbox™ LTE в условиях проверки на соответствие, определенных в TS36.104, раздел 8.2.4.1.
Управляющая информация восходящей линии связи (UCI) может передаваться по физическому совместно используемому каналу восходящей линии связи (PUSCH) и может содержать информацию гибридного автоматического запроса повторения ACK (HARQ-ACK). В этом примере используется панель инструментов LTE для выполнения теста соответствия «HARQ-ACK Multiplexed on PUSCH», указанного в TS36.104, раздел 8.2.4.1 [1].
Для HARQ-ACK, мультиплексированного на PUSCH, определены два требования к производительности:
Вероятность ложного обнаружения ACK - это вероятность того, что ACK обнаруживается, когда данные посылаются только по символам, где может быть выделена информация HARQ-ACK.
Вероятность обнаружения пропуска ACK является условной вероятностью отсутствия обнаружения ACK, когда он был послан по ресурсам PUSCH.
Условия, указанные для этого теста: две приемные антенны, обычный циклический префикс, ETU70 канал, с использованием A4-3 фиксированного опорного канала (FRC). Целью, определенной в TS 36.104, раздел 8.2.4.1 [1] для полосы пропускания 1,4 МГц (6RB), является вероятность ложного обнаружения и вероятность пропущенного обнаружения 1% при 13,8 дБ.
Тест выполняется на основе подкадра за подкадром в каждой контрольной точке SNR. Для каждого подкадра генерируется сигнал восходящей линии связи с информацией ACK и без нее, передаваемый через канал замирания и декодированный HARQ-ACK. Фиксируют ложные обнаружения и пропущенные обнаружения и отображают вероятность ошибки для диапазона тестируемых SNR.
Пример выполняется для имитационной длины 1 кадра при количестве SNR, включая требуемые 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 элементов ресурса (RE). Опорный сигнал демодуляции (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
Цикл используется для выполнения моделирования для набора точек SNR, заданных вектором SNRdB.
Шум, добавленный перед демодуляцией SC-FDMA, будет усилен IFFT. Усиление представляет собой квадратный корень размера IFFT ().
Чтобы гарантировать, что мощность аддитивного шума нормализуется после демодуляции для достижения требуемого SNR, требуемая мощность шума делится на.
Кроме того, поскольку действительная и мнимая части шума создаются отдельно перед объединением в сложный аддитивный белый гауссовый шум (AWGN), амплитуда шума должна быть масштабирована
таким образом, чтобы генерируемая мощность шума была равна 1.
В каждой контрольной точке SNR вычисляется вероятность ложного и пропущенного обнаружения. Эти вероятности вычисляются на основе подкадра за подкадром с использованием следующих шагов:
Создание формы сигнала передачи: Инструмент опорного измерительного канала восходящей линии связи (RMC) lteRMCULTool используется для генерации сигнала восходящей линии связи, содержащего случайные транспортные данные и бит HARQ-ACK в каждом нечетном подкадре.
Шумное моделирование канала: Сигнал пропускается через замирающий канал и добавляется AWGN.
Выполнение синхронизации и демодуляции SC-FDMA: Принятые символы синхронизируются для учета комбинации задержки реализации и расширения задержки канала. Затем символы демодулируются SC-FDMA.
Оценка и выравнивание спектральной плотности канала и шумовой мощности: оценка спектральной плотности канала и шумовой мощности и выравнивание принятых символов PUSCH.
Декодирование PUSCH: Кодирование общего канала UpLink (UL-SCH) определяется и используется для декодирования PUSCH для восстановления перемеженного UL-SCH.
Recover UCI ACK Bit: Deinterleave 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)»