exponenta event banner

Тест соответствия обнаружения PUSCH HARQ-ACK

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

Конфигурация UE

Для конфигурирования датчика в структуре задаются несколько требуемых полей параметров. 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

Цикл используется для выполнения моделирования для набора точек SNR, заданных вектором SNRdB.

Шум, добавленный перед демодуляцией SC-FDMA, будет усилен IFFT. Усиление представляет собой квадратный корень размера IFFT (). $N_{\mathrm{FFT}}$Чтобы гарантировать, что мощность аддитивного шума нормализуется после демодуляции для достижения требуемого SNR, требуемая мощность шума делится на. $N_{\mathrm{FFT}}$Кроме того, поскольку действительная и мнимая части шума создаются отдельно перед объединением в сложный аддитивный белый гауссовый шум (AWGN), амплитуда шума должна быть масштабирована$1/\sqrt{2}$ таким образом, чтобы генерируемая мощность шума была равна 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);

Приложение

В этом примере используется эта вспомогательная функция.

Избранная библиография

  1. 3GPP TS 36.104 «Радиопередача и прием базовой станции (BS)»