PUCCH3 ACK пропустил тест соответствия вероятности обнаружения

Этот пример измеряется, ACK пропустил вероятность обнаружения с помощью LTE Toolbox™ при отдельном пользователе Физический Восходящий Канал Управления (PUCCH3) условия испытания соответствия, как задано в Разделе TS 36.104 8.3.6.1 [1].

Введение

Этот пример использует продолжительность симуляции 10 подкадров. Это значение было выбрано, чтобы ускорить симуляцию. Большее значение должно быть выбрано, чтобы получить более точные результаты. Целью, заданной в Разделе TS36.104 8.3.6.1 [1] для пропускной способности на 10 МГц (50 блоков ресурса) и одна антенна передачи, является Подтверждение пропущенная вероятность обнаружения (ACK) не чрезмерный 1% в ОСШ-3.7 дБ. Тест задан для 1 антенны передачи.

numSubframes = 10;                          % Number of subframes
SNRdB = [-9.7 -7.7 -5.7 -3.7 -1.7];         % SNR range
NTxAnts = 1;                                % Number of transmit antennas

Настройка UE

ue = struct;                                % UE config structure
ue.NULRB = 50;                              % 50 resource blocks (10 MHz)
ue.CyclicPrefixUL = 'Normal';               % Normal cyclic prefix
ue.NTxAnts = NTxAnts;
ue.NCellID = 9;
ue.RNTI = 1;                                % Radio network temporary id
ue.Hopping = 'Off';                         % No frequency hopping
ue.Shortened = 0;                           % No SRS transmission

Настройка PUCCH 3

% Vector of PUCCH resource indices, one per transmission antenna. This is
% the n3pucch parameter.
pucch = struct;
pucch.ResourceIdx = 0:ue.NTxAnts-1;

Настройка канала распространения

Сконфигурируйте модель канала параметрами, заданными в тестах, описанных в Разделе TS36.104 8.3.6.1 [1].

channel = struct;                 % Channel config structure
channel.NRxAnts = 2;              % Number of receive antennas
channel.DelayProfile = 'EPA';     % Channel delay profile
channel.DopplerFreq = 5.0;        % Doppler frequency in Hz
channel.MIMOCorrelation = 'Low';  % Low MIMO correlation
channel.NTerms = 16;              % Oscillators used in fading model
channel.ModelType = 'GMEDS';      % Rayleigh fading model type
channel.Seed = 4;                 % Channel seed
channel.InitPhase = 'Random';     % Random initial phases
channel.NormalizePathGains = 'On';% Normalize delay profile power
channel.NormalizeTxAnts = 'On';   % Normalize for transmit antennas

% SC-FDMA modulation information: required to get the sampling rate
info = lteSCFDMAInfo(ue);
channel.SamplingRate = info.SamplingRate;

Настройка средства оценки канала

Средство оценки канала сконфигурировано с помощью структуры cec. Здесь кубичная интерполяция будет использоваться с окном усреднения 12 1 Элементов Ресурса (REs). Это конфигурирует средство оценки канала, чтобы использовать специальный режим, который гарантирует способность к despread, и ортогонализируйте различное наложение передачи PUCCH.

cec = struct;                     % Channel estimation config structure
cec.PilotAverage = 'UserDefined'; % Type of pilot averaging
cec.FreqWindow = 12;              % Frequency averaging window in REs (special mode)
cec.TimeWindow = 1;               % Time averaging window in REs (Special mode)
cec.InterpType = 'cubic';         % Cubic interpolation

Цикл симуляции для сконфигурированных точек ОСШ

Поскольку каждый ОСШ указывает, что цикл ниже вычисляет вероятность успешного обнаружения ACK с помощью информации, полученной из NSubframes последовательные подкадры. Следующие операции выполняются для каждого подкадра и значений ОСШ:

  • Создайте пустую сетку ресурса

  • Сгенерируйте и сопоставьте PUCCH 3 и его Сигнал ссылки демодуляции (DRS) к сетке ресурса

  • Примените модуляцию SC-FDMA

  • Отправьте модулируемый сигнал через канал

  • Синхронизация получателя

  • Примените демодуляцию SC-FDMA

  • Оцените канал

  • Эквализация Минимальной среднеквадратической ошибки (MMSE)

  • Демодуляция/декодирование PUCCH 3

  • Отказы декодирования записи

% Preallocate memory for missed detection probability vector
PMISS = zeros(size(SNRdB));
for nSNR = 1:length(SNRdB)

    % Detection failures counter
    missCount = 0;
    falseCount = 0;

    % Noise configuration
    SNR = 10^(SNRdB(nSNR)/20);              % Convert dB to linear
    % The noise added before SC-FDMA demodulation will be amplified by the
    % IFFT. The amplification is the square root of the size of the IFFT.
    % To achieve the desired SNR after demodulation the noise power is
    % normalized by this value. In addition, because real and imaginary
    % parts of the noise are created separately before being combined into
    % complex additive white Gaussian noise, the noise amplitude must be
    % scaled by 1/sqrt(2*ue.NTxAnts) so the generated noise power is 1.
    N = 1/(SNR*sqrt(double(info.Nfft)))/sqrt(2.0*ue.NTxAnts);
    % Set the type of random number generator and its seed to the default
    % value
    rng('default');

    % Loop for subframes
    offsetused = 0;
    for nsf = 1:numSubframes

        % Create resource grid
        ue.NSubframe = mod(nsf-1,10);       % Subframe number
        reGrid = lteULResourceGrid(ue);       % Resource grid

        % Generate PUCCH 3 and its DRS
        N_ACK = 4;                          % 4 ACK bits
        ACK = randi([0 1], N_ACK, 1);       % Generate N_ACK random bits
        coded = lteUCI3Encode(ACK);         % PUCCH 3 coding
        pucch3Sym = ltePUCCH3(ue, pucch, coded);     % PUCCH 3 modulation
        pucch3DRSSym = ltePUCCH3DRS(ue, pucch, ACK); % PUCCH 3 DRS creation

        % Generate indices for PUCCH 3 and its DRS
        pucch3Indices = ltePUCCH3Indices(ue, pucch);
        pucch3DRSIndices = ltePUCCH3DRSIndices(ue, pucch);

        % Map PUCCH 3 and its DRS to the resource grid
        reGrid(pucch3Indices) = pucch3Sym;
        reGrid(pucch3DRSIndices) = pucch3DRSSym;

        % SC-FDMA modulation
        txwave = lteSCFDMAModulate(ue, reGrid);

        % Channel state information: set the init time to the correct value
        % to guarantee continuity of the fading waveform after each
        % subframe
        channel.InitTime = (nsf-1)/1000;

        % Channel modeling
        % The additional 25 samples added to the end of the waveform
        % are to cover the range of delays expected from the channel
        % modeling (a combination of implementation delay and
        % channel delay spread)
        rxwave = lteFadingChannel(channel, [txwave; zeros(25, ue.NTxAnts)]);

        % Add noise at receiver
        noise = N*complex(randn(size(rxwave)), randn(size(rxwave)));
        rxwave = rxwave + noise;

        % Receiver

        % Synchronization
        % An offset within the range of delays expected from the channel
        % modeling (a combination of implementation delay and channel
        % delay spread) indicates success
        offset = lteULFrameOffsetPUCCH3(ue, pucch, rxwave);
        if (offset<25)
            offsetused = offset;
        end

        % SC-FDMA demodulation
        rxgrid = lteSCFDMADemodulate(ue, rxwave(1+offsetused:end, :));

        % Channel estimation
        [H, n0] = lteULChannelEstimatePUCCH3(ue, pucch, cec, rxgrid);

        % Extract REs corresponding to the PUCCH 3 from the given subframe
        % across all receive antennas and channel estimates
        [pucch3Rx, pucch3H] = lteExtractResources(pucch3Indices, rxgrid, H);

        % PUCCH 3 MMSE Equalization
        eqgrid = lteULResourceGrid(ue);
        eqgrid(pucch3Indices) = lteEqualizeMMSE(pucch3Rx, pucch3H, n0);

        % PUCCH 3 demodulation
        rxBits = ltePUCCH3Decode(ue, pucch, eqgrid(pucch3Indices));

        % PUCCH 3 decoding
        rxACK = lteUCI3Decode(rxBits, N_ACK);

        % Detect missed (empty rxACK) or incorrect Hybrid Automatic Repeat
        % Request (HARQ)-ACK
        % (compare against transmitted ACK)

        if (isempty(rxACK) || any(rxACK ~= ACK))
            missCount = missCount + 1;
        end

    end

    PMISS(nSNR) = missCount/numSubframes;

end

Результаты

plot(SNRdB, PMISS, 'b-o', 'MarkerSize', 7, 'LineWidth', 2);
hold on;
plot(-3.7, 0.01, 'rx', 'MarkerSize', 7, 'LineWidth', 2);
xlabel('SNR (dB)');
ylabel('Probability of ACK missed detection');
title(['PUCCH format 3 ACK missed detection test' ...
        ' (TS36.104 Section 8.3.6.1)']);
axis([SNRdB(1)-0.1 SNRdB(end)+0.1 -0.05 0.25]);
legend('simulated performance', 'target');

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

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