В этом примере показано, как измерить ложную вероятность обнаружения, и пропущенная вероятность обнаружения Гибридного Автоматического Повторного 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) и прием"