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

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

Настройка 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 Элементов Ресурса (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, будет усилен ОБПФ. Усиление является квадратным корнем из размера ОБПФ ($N_{\mathrm{FFT}}$). Чтобы гарантировать, что степень аддитивного шума нормирована после демодуляции, чтобы достигнуть желаемого ОСШ, желаемая шумовая мощность разделена на$N_{\mathrm{FFT}}$. Кроме того, когда действительные и мнимые части шума создаются отдельно прежде чем быть объединенным в комплексный Аддитивный белый Гауссов шум (AWGN), шумовая амплитуда должна масштабироваться$1/\sqrt{2}$ так произведенной шумовой энергией, 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);

Приложение

Этот пример использует эту функцию помощника.

Выбранная библиография

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