5G создание отчетов NR CQI

Пример выполняет вычисление качественной характеристики канала (CQI), как задано в Разделе TS 38.214 5.2.2, по каналу кластеризируемой задержанной линии (CDL). Пример оценивает точность CQI, о котором сообщают при помощи практической оценки канала.

Введение

CQI является индикатором качества канала. UE сообщает об индексе CQI gNB как часть информации о состоянии канала (CSI) при помощи CSI-RS для измерения.

Индекс CQI является значением между от 0 до 15. Это предоставляет информацию о самом высоком уровне схемы и кода модуляции, подходящем для нисходящей передачи, чтобы достигнуть необходимой частоты появления ошибочных блоков (BLER) условие. Раздел TS 38.214 5.2.2.1 задает два условия для максимального допустимого BLER, которые получены из более высокого параметра слоя 'cqi-таблица'. Этот пример рассматривает 0,1 условия BLER и cqi-таблицу как 'таблица 1' (таблица 5.2.2.1-2 TS 38.214).

Пример выполняет CQI, сообщающий для сценария одного входа одного выхода (SISO) по каналу CDL с профилем задержки CDL-C и распространение задержки 300e-9 секунда. Значение CQI, полученное при помощи практической оценки канала, по сравнению с CQI, полученным при помощи совершенной оценки канала.

CQI по сравнению с таблицей SINR

Учитывая сигнал к интерференционному и шумовому отношению (SINR), CQI получен при помощи предрасчетных интерполяционных таблиц CQI по сравнению с SINR. Интерполяционная таблица вычисляется, чтобы обеспечить CQI, приводящий максимум к 0,1 BLER для соответствующего SINR. Это рассматривает количество слоев передачи, количество передачи, и получите антенны и условия канала.

Когда создание отчетов CQI выполняется, интерполяционные таблицы взяты в качестве ссылки. Наблюдаемый SINR по сравнению с таблицей и самым высоким значением CQI для SINR, где BLER меньше 0.1, сообщается.

Интерполяционные таблицы в примере создаются с помощью примера Пропускной способности NR PDSCH. Симуляции для нисходящего канала, совместно использованная пропускная способность канала выполняется, рассматривая уровень схемы и кода модуляции, который соответствует каждому CQI через конечную область значений сигнала к шумовому отношению (ОСШ) значения. Значение SINR, наблюдаемое в получателе, где 0,1 BLER достигаются, сопоставлено против каждого индекса CQI. Интерполяционные таблицы в примере создаются для канала CDL-C и при помощи практической оценки канала и при помощи совершенной оценки канала.

Следующая фигура представляет результаты симуляции BLER, выполняемые через конечную область значений SNRs для всех значений CQI. Каждая кривая представляет BLER, соответствующий значению CQI. Симуляция выполняется для 100 систем координат с размером шага 0,5 дБ и таблицей 5.2.2.1-2 TS 38.214 как cqi-таблица. Симуляции рассматривают практический метод оценки канала с 'AveragingWindow' как [5 1], для сценария SISO. 'AveragingWindow' задает количество смежных ссылочных символов в частотном диапазоне и временном интервале, по которому усреднение должно быть выполнено в процедуре оценки канала. SINR в получателе, где 0,1 BLER наблюдаются, показывают для каждого значения CQI во всплывающей подсказке.

Инициализируйте объекты настройки

Создайте объект настройки поставщика услуг представление поставщика услуг на 20 МГц с поднесущей, располагающей 30 кГц с интервалами.

carrier = nrCarrierConfig;
carrier.SubcarrierSpacing = 30;
carrier.NSizeGrid = 52;

Создайте пропускную способность, расстаются структура с активной частью пропускной способности (BWP) размер и запускают поля. BWP запускаются, поле относительно общего блока 0 ресурса (CRB 0).

bwp.NSizeBWP = 41;
bwp.NStartBWP = carrier.NStartGrid; % Consider the start of BWP aligning with the start of the carrier

Создайте объект настройки CSI-RS с один "не нулевая степень" ресурс NZP-CSI-RS, занимающий целый BWP.

csirs = nrCSIRSConfig;
csirs.RowNumber = 2;        % Possible row numbers for single transmit antenna case are 1 and 2
csirs.NumRB = bwp.NSizeBWP;
csirs.RBOffset = bwp.NStartBWP - carrier.NStartGrid;
csirs.CSIRSPeriod = [4 0];
csirs.SymbolLocations = 0;

Сконфигурируйте количество передачи и получите антенны, рассмотрев сценарий SISO.

nTxAnts = 1;
nRxAnts = 1;

Сгенерируйте символы CSI-RS и индексы для одной системы координат и добавьте к сетке

Этот раздел генерирует символы CSI-RS и индексы для заданного поставщика услуг и параметров конфигурации CSI-RS.

Инициализируйте пустую сетку передачи.

txGrid = [];

Вычислите размерности сетки поставщика услуг и создайте пустую сетку для одного паза. Выполните отображение элемента ресурса.

K = carrier.NSizeGrid*12;                       % Number of subcarriers
L = carrier.SymbolsPerSlot;                     % Number of OFDM symbols per slot
ports = max(csirs.NumCSIRSPorts);               % Number of antenna ports
gridSize = [K L ports];                         % Size of grid for one slot
txSlotGrid = complex(zeros(gridSize));

for slotIdx = 0:carrier.SlotsPerFrame - 1
    carrier.NSlot = slotIdx;

    csirsInd = nrCSIRSIndices(carrier,csirs);
    csirsSym = nrCSIRS(carrier,csirs);              % Generate CSI-RS symbols with slot periodicity 4 and offset 0

    % Placing the CSI-RS in the transmit grid
    txSlotGrid(csirsInd) = csirsSym;                % Mapping CSI-RS symbols to the current slot grid
    % txGrid for one frame is generated by concatenating slot by slot
    txGrid = [txGrid txSlotGrid];                   %#ok<AGROW>
end

Выполните модуляцию OFDM

Создайте gNB структуру с обязательными полями, чтобы создать форму волны передачи.

gnb.NRB = carrier.NSizeGrid;
gnb.SubcarrierSpacing = carrier.SubcarrierSpacing;
gnb.CyclicPrefix = carrier.CyclicPrefix;

Выполните модуляцию OFDM, чтобы сгенерировать форму волны временного интервала.

[txWaveform,OFDMInfo] = hOFDMModulate(gnb,txGrid);

Передайте форму волны через канал и добавьте AWGN в полученную форму волны

Полагайте, что канал CDL с задержкой профилирует CDL-C и распространение задержки 300e-9 секунда.

Создайте объект канала с заданными настройками.

channel = nrCDLChannel;
channel.DelayProfile = 'CDL-C';
channel.DelaySpread = 300e-9;
% Turn the overall number of antennas into a specific antenna panel array geometry
[channel.TransmitAntennaArray.Size, channel.ReceiveAntennaArray.Size] = ...
    hArrayGeometry(nTxAnts,nRxAnts);
channel.SampleRate = OFDMInfo.SamplingRate;

% Get channel information
chInfo = info(channel);
maxChDelay = ceil(max(chInfo.PathDelays*channel.SampleRate)) + chInfo.ChannelFilterDelay; 

Добавьте нули в конце переданной формы волны, чтобы сбросить содержимое канала. Эти нули учитывают любую задержку, введенную в канале. Это - соединение многопутевой задержки и задержки реализации. Это значение может измениться в зависимости от уровня выборки, профиля задержки и распространения задержки. Добавьте нули в конце переданной формы волны, чтобы сбросить содержимое канала. Эти нули учитывают любую задержку, введенную в канале. Это - соединение многопутевой задержки и задержки реализации. Это значение может измениться в зависимости от уровня выборки, профиля задержки и распространения задержки.

txWaveform = [txWaveform; zeros(maxChDelay, size(txWaveform,2))];

Передайте форму волны через канал, чтобы получить полученную форму волны временного интервала и усиления пути.

[rxWaveform,pathGains,sampleTimes] = channel(txWaveform);

Сгенерируйте и добавьте AWGN в полученную форму волны.

SNRdB = 15;                                              % in dB
SNR = 10^(SNRdB/20);                                     % Linear value
N0 = 1/(sqrt(2.0*nRxAnts*double(OFDMInfo.Nfft))*SNR);    % Noise variance
rng('default');
noise = N0*complex(randn(size(rxWaveform)),randn(size(rxWaveform)));
rxWaveform = rxWaveform + noise;

Выполните CQI, сообщающий с практической оценкой канала

Этот раздел показывает, как CQI, сообщающий с практической оценкой канала, выполняется.

Выполните оценку синхронизации, коррекцию смещения и демодуляцию OFDM

% Generate reference grid for timing estimation
refGrid = txGrid;     % Consider reference grid as txGrid since we only have CSI-RS in the txGrid
initialNSlot = 0;     % To perform timing estimate, note the first NSlot value where the carrier starts
offsetPractical = 0;
[t,mag] = nrTimingEstimate(rxWaveform,gnb.NRB,gnb.SubcarrierSpacing,initialNSlot,refGrid,'CyclicPrefix',gnb.CyclicPrefix);
offsetPractical = hSkipWeakTimingOffset(offsetPractical,t,mag);
rxWaveformPractical = rxWaveform(1+offsetPractical:end, :);

% Perform OFDM demodulation to the rxWaveform
rxGridPractical = hOFDMDemodulate(gnb,rxWaveformPractical);

Сконфигурируйте информацию, необходимую, чтобы вычислить CQI

Информацией, запрошенной для создания отчетов CQI, является CQI создание отчетов о режиме, размере поддиапазона и интерполяционной таблице SINR для конкретной модели канала.

CQI создание отчетов о режимах: CQI сообщающие широкополосные поддержки или режимы поддиапазона, согласно просьбе gNB или решенный UE. В случае широкополосного режима об одном значении CQI сообщают для целого BWP. В случае режима поддиапазона об одном значении CQI для каждого поддиапазона сообщают согласно размеру поддиапазона, обозначенному более высокими слоями. Размер поддиапазона, согласно Таблице 5.2.1.4-2 в TS 38.214 зависит от размера BWP.

Следующая интерполяционная таблица вычисляется для 90%-й пропускной способности (который равен 0,1 BLER) по каналу CDL-C с распространением задержки 300e-9 секунды при помощи практического средства оценки канала.

cqiConfig.CQIMode  = 'Subband';  % Select one of two possible choices from 'Wideband' or 'Subband'
cqiConfig.NSBPRB   = 4;          % The size of subband in resource blocks
cqiConfig.SINR90pc = [-1.89 -0.82 0.95 2.95 4.90 7.39 8.89 ...
    11.02 13.32 14.68 16.62 18.91 21.58 24.88 29.32];

Выполните вычисление CQI

Значения CQI вычисляются с помощью ресурса NZP-CSI-RS с периодичностью паза 4 и возмещают 0 по одной системе координат.

cqiPracticalPerSlot = [];
for slotIdx = 0:carrier.SlotsPerFrame - 1
    carrier.NSlot =  slotIdx;
    csirsSym = nrCSIRS(carrier,csirs);
    csirsRefInd = nrCSIRSIndices(carrier,csirs);
    if (~isempty(csirsRefInd))
        % Perform channel estimate by considering 'AveragingWindow' as [5 1]
        [Hest,nVar] = nrChannelEstimate(rxGridPractical(:,(1:carrier.SymbolsPerSlot)+(carrier.SymbolsPerSlot*slotIdx)),csirsRefInd,csirsSym,'AveragingWindow',[5 1]);

         % CQI value reported for each slot is stored in a new column
         % In subband case, a column of CQI values is reported, where each element corresponds to each subband
        cqiPracticalPerSlot(:,slotIdx+1) = hCQISelect(carrier,bwp,cqiConfig,csirsRefInd,Hest,nVar); %#ok<SAGROW>
    end
end

% Plot the practical CQI estimates for one frame
plotCQI(cqiPracticalPerSlot,'CQI Reported with Practical Channel Estimation');

Выполните CQI, сообщающий с совершенной оценкой канала

Этот раздел показывает, как вы выполняете CQI, сообщающий с совершенной оценкой канала.

Выполните совершенную оценку синхронизации, коррекцию смещения и демодуляцию OFDM

pathFilters = getPathFilters(channel);                                % Get path filters for perfect channel estimation
[offsetPerfect,mag] = nrPerfectTimingEstimate(pathGains,pathFilters);
rxWaveformPerfect = rxWaveform(1+offsetPerfect:end, :);
rxGridPerfect = hOFDMDemodulate(gnb,rxWaveformPerfect);

Сконфигурируйте запрошенную информацию, чтобы вычислить CQI

Информацией, запрошенной для создания отчетов CQI, является CQI создание отчетов о режиме, размере поддиапазона и интерполяционной таблице SINR для конкретной модели канала. Считайте тот же режим и размер поддиапазона используемыми в практическом канале.

cqiConfig.CQIMode = 'Subband';   % Select one of two possible choices from 'Wideband' or 'Subband'
cqiConfig.NSBPRB  = 4;           % The size of subband in resource blocks

Следующая интерполяционная таблица вычисляется для 90%-й пропускной способности по каналу CDL-C с распространением задержки 300e-9 секунды, рассматривая совершенное средство оценки канала

cqiConfig.SINR90pc =  [-4.73, -3.04, -0.54, 1.87, 4.17, 6.77, 8.57, 10.57,...
    12.87, 14.27, 16.17, 18.37, 20.77, 23.67, 27.07];

Выполните вычисление CQI

Значения CQI вычисляются с помощью ресурса NZP-CSI-RS с периодичностью паза 4 и возмещают 0 по одной системе координат.

cqiPerfectPerSlot = [];
for slotIdx = 0:carrier.SlotsPerFrame - 1
    carrier.NSlot =  slotIdx;
    csirsSym = nrCSIRS(carrier,csirs);
    csirsRefInd = nrCSIRSIndices(carrier,csirs);
    if (~isempty(csirsRefInd))
        PerfectHest = nrPerfectChannelEstimate(pathGains,pathFilters,gnb.NRB,gnb.SubcarrierSpacing,carrier.NSlot,offsetPractical,sampleTimes,gnb.CyclicPrefix);

        % Get perfect noise estimate (from the noise realization)
        noiseGrid = hOFDMDemodulate(gnb,noise(1+offsetPractical:end ,:));
        nVar = var(noiseGrid(:));

        % CQI value reported for each slot is stored in a new column
        % In subband case, a column of CQI values, one value corresponding to each subband is reported
        cqiPerfectPerSlot(:,slotIdx+1)  = hCQISelect(carrier,bwp,cqiConfig,csirsRefInd,PerfectHest(:,(1:carrier.SymbolsPerSlot) + carrier.SymbolsPerSlot*slotIdx),nVar);  %#ok<SAGROW>
    end
end

% Plot the perfect CQI estimates for one frame
plotCQI(cqiPerfectPerSlot,'CQI Reported with Perfect Channel Estimation');

Сравните значения CQI, о которых сообщают в практических и совершенных сценариях оценки канала

Получите CQI создание отчетов об ошибке из-за практической ошибки оценки канала:

cqiError = cqiPerfectPerSlot - cqiPracticalPerSlot;

% Plot the error
plotCQI(cqiError,'CQI Estimation Error (Perfect vs. Practical Channel Estimation)');

Локальные функции

function plotCQI(cqi,Title)
%    plotCQI(CQI,TITLE) plots the CQI values with the title
%    TITLE.

    figure()
    imagesc(cqi)
    axis xy;
    colorbar;

    title(Title);
    xlabel('Slots');
    ylabel('Subbands');
end

Ссылки

[1] 3GPP TS 38.211. “NR; Физические каналы и модуляция”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

[2] 3GPP TS 38.214. “NR; процедуры Физического уровня для данных”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

Смотрите также

Функции

Объекты

Похожие темы