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

Этот пример показывает, как измерить вероятность ложного обнаружения и упущенную вероятность обнаружения Hybrid Automatic Repeat ACK (HARQ-ACK), мультиплексированного по физическому общему каналу восходящей линии связи (PUSCH) с использованием LTE Toolbox™ при условиях проверки соответствия, как определено в TS36.104, раздел 8.2.4.1.

Введение

Информация управления восходящей линии связи (UCI) может передаваться по физическому общему каналу восходящей линии связи (PUSCH) и может содержать информацию ACK гибридного автоматического запроса повторения (HARQ-ACK). Этот пример использует LTE Toolbox, чтобы выполнить тест соответствия «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 Fixed Ссылки Channel (FRC). Цель, заданная в TS 36.104, раздел 8.2.4.1 [1] для полосы пропускания 1,4 МГц (6RB), является ложной вероятностью обнаружения и пропущенной вероятностью обнаружения 1% при 13,8 дБ.

Тест запускается на субкадре по базису субкадров в каждой тестовой точке ОСШ. Для каждого субкадра генерируется сигнал восходящей линии связи с информацией ACK и без нее, передается через канал с замираниями и декодируется HARQ-ACK. Регистрируются ложные обнаружения и пропущенные обнаружения и вероятность ошибки, отображаемая для области значений проверенных ОСШ.

Область Строения

Пример выполняется для длины симуляции 1 система координат в ряде ОСШ, включая необходимые 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

Цикл для значений ОСШ

Цикл используется, чтобы запустить симуляцию для набора точек ОСШ, заданную вектором SNRdB.

Шум, добавленный перед демодуляцией SC-FDMA, будет усилен ОБПФ. Усиление является квадратным корнем из размера IFFT (). $N_{\mathrm{FFT}}$Чтобы гарантировать нормализацию степени аддитивного шума после демодуляции для достижения желаемого ОСШ, требуемая степень делится на. $N_{\mathrm{FFT}}$В сложение, поскольку действительные и мнимые части шума создаются отдельно перед объединением в комплексный аддитивный белый гауссов шум (AWGN), амплитуда шума должна быть масштабирована$1/\sqrt{2}$ таким образом, что сгенерированный шум степени равен 1.

В каждой тестовой точке ОСШ вычисляется вероятность ложного и пропущенного обнаружения. Эти вероятности вычисляются на субкадре по базису субкадров с помощью следующих шагов:

  • Создайте сигнал передачи: Ссылка канала измерения (RMC) lteRMCULTool используется, чтобы сгенерировать сигнал восходящей линии связи, содержащий случайные транспортные данные и бит HARQ-ACK в каждом нечетном субкадре.

  • Моделирование шумного канала: Форма волны передается через канал с замираниями и добавляется AWGN.

  • Выполните синхронизацию и демодуляцию SC-FDMA: Полученные символы синхронизируются для учета комбинации задержки реализации и расширения задержки канала. Символы затем демодулируются SC-FDMA.

  • Выполните оценку спектральной плотности канала и степени шума и эквализацию: Оценка спектральной плотности канала и степени шума и выравнивание принятых символов PUSCH.

  • Декодирование PUSCH: Кодирование UpLink Shared Channel (UL-SCH) определяется и используется для декодирования PUSCH для восстановления перемеженного UL-SCH.

  • Восстановите бит ACK UCI: перемежите PUSCH и декодируйте информацию HARQ-ACK, чтобы восстановить бит HARQ-ACK UCI и обнаружить HARQ-ACK ложное или пропущенное обнаружение, основанное на том, был ли бит HARQ-ACK K закодирован в передаче

% 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)»