Генерация формы волны восходящего канала NB-IoT

Этот пример показывает, как сгенерировать Усовершенствованный LTE Pro Узкополосные формы волны восходящего канала IOT Релиза 13 (NB-IOT), состоящие из Узкополосного Физического Восходящего Разделяемого Канала (NPUSCH) и связанных сигналов ссылки демодуляции для теста и приложений измерения с помощью LTE Toolbox™.

Введение

3GPP ввел новый воздушный интерфейс, Узкополосная IOT (NB-IOT), оптимизированная для низкой машины скорости передачи данных, вводят коммуникации, Усовершенствованные LTE Pro Релиз 13. NB-IoT предоставляет стоимость и улучшения эффективности степени, когда это избегает потребности в сигнализации комплекса, наверху требуемой для основанных на LTE систем.

LTE Toolbox может использоваться, чтобы сгенерировать комплексные основополосные формы волны восходящего канала стандартного совместимого NB-IoT, представляющие узкополосного поставщика услуг на 180 кГц, подходящего для приложений измерения и теста. LTE Toolbox поддерживает все режимы работы NB-IoT, описанные ниже - автономная, защитная полоса и внутриполосный.

  • Автономный: поставщик услуг NB-IoT, развернутый вне спектра LTE, например, спектра, используемого для GSM или спутниковой связи

  • Защитная полоса: поставщик услуг NB-IoT, развернутый в защитной полосе между двумя поставщиками услуг LTE

  • Внутриполосный: поставщик услуг NB-IoT, развернутый в блоках ресурса поставщика услуг LTE

Восходящий канал NB-IoT состоит из следующих каналов физического уровня и сигналов:

  • Узкополосный сигнал ссылки демодуляции (DM-RS)

  • Узкополосно передайте физический восходящий канал совместно использованный канал (NPUSCH)

  • Узкополосно передайте физический канал произвольного доступа (NPRACH)

В этом примере мы демонстрируем сетку элемента ресурса (RE) восходящего канала NB-IoT и генерацию формы волны, состоящую из сигналов DM-RS и NPUSCH. Разделы ниже вводят эти физические сигналы и каналы, которые формируют сетку наряду с ключевыми концепциями включая повторение подкадра, логические и транспортные отображения канала и соответствующие сетки для различных настроек.

Пример выводит комплексную основополосную форму волны наряду с заполненной сеткой, содержащей сигналы DM-RS и NPUSCH. Форма волны может использоваться для области значений приложений от тестирования РФ до симуляции реализаций получателя.

Выделение NPUSCH

Этот раздел предоставляет полное описание того, как NPUSCH сопоставлен в слоты восходящего канала NB-IoT.

NPUSCH может нести восходящий канал совместно использованный канал (UL-SCH) или восходящая управляющая информация согласно этим двум форматам:

  • Формат 1 NPUSCH, используемый, чтобы нести восходящий канал совместно использованный канал (UL-SCH)

  • Формат 2 NPUSCH, используемый, чтобы нести восходящую управляющую информацию

NPUSCH передается на одном или нескольких модулях ресурса, и каждый из этих модулей ресурса повторяются до 128 раз, чтобы улучшить надежность передачи и покрытие, не идя на компромисс на малой мощности и низких требованиях сложности, чтобы соответствовать крайним вариантам использования IoT низкого уровня.

Самый маленький модуль отображения для NPUSCH является модулем ресурса. Это задано как 7 * NslotsUL последовательные символы SC-FDMA во временном интервале и NscRU последовательные поднесущие в частотном диапазоне, где NslotsUL и NscRU заданы в таблице 10.1.2.3-1 [1] TS 36.211. NB-IoT UL-SCH может нести Канал Общего контроля (CCCH), Специализированный Канал Управления (DCCH) или Специализированный Канал Трафика (DTCH) и карты на физическом канале NPUSCH (раздел TS 36.300 6.1.3.1 и разделить 5.3.1a [6]). NPUSCH может быть сопоставлен с одним или несколькими, чем модули ресурса, NRU, как задано Разделом TS 36.211 10.1.3.6 [1] и каждый модуль ресурса могут быть переданными временами Nrep.

Примеры в фигуре показывают шаблон повторения с NRep = 4. Общая длительность для передачи блока данных дана NRU * NULSlots * MidenticalNPUSCH, как задано в Разделе TS 36.211 10.1.3.6 [1]. Для первого случая, показанного ниже, каждый транспортный блок передается по NRU = 2 и каждый из них, NRU содержит два слота UL, обозначенные NULSlots. После отображения с Nslots этими слотами будет повторенный MidenticalNPUSCH = 2 (принятие NscRU> 1) времена. Во втором случае мы принимаем, что NscRU равняется 1 и следовательно MidenticalNPUSCH = 1. Это, объединенное с Nslots = 1 результат в шаблоне передачи, куда каждый блок передается без внутренних повторений. Во всех случаях борющаяся последовательность сбрасывается в начале передачи кодовой комбинации или повторной передачи (см. Раздел TS 36.211 10.1.3.1 [1]). Подробная спецификация схемы повторения может быть найдена в TS 36.211 10.1.3 [1].

Сетка слота восходящего канала NB-IoT

В дополнение к назначению слотов, описанному выше, этот раздел далее объясняет выделение RE в слоте. Сетка состоит из одного или нескольких кадров, содержащих NPUSCH и соответствующий DM-RS.

  • DM-RS: DM-RS передается в каждом слоте NPUSCH с той же пропускной способностью как связанный NPUSCH. Ссылочные сигналы зависят от количества поднесущих NscRU, узкополосная ячейка ID NNcellID и формат NPUSCH NPUSCHFormat. Положения RE зависят от формата NPUSCH и интервала поднесущей. Для формата 1 NPUSCH с интервалом поднесущей 3.75 кГц DM-RS передается на символе 4 и с интервалом поднесущей 15 кГц, DM-RS передается на символе 3. Для формата 2 NPUSCH с интервалом поднесущей 3.75 кГц DM-RS передается на символах 0,1,2 и с интервалом поднесущей 15 кГц, DM-RS передается на символах 2,3 и 4 в слоте.

  • NPUSCH: NPUSCH поддерживает одну тональную пропускную способность в дополнение к многочастотному (12 поднесущих) пропускная способность. Одна тональные передачи могут использовать или интервал поднесущей на 3.75 кГц или на 15 кГц, тогда как многочастотные передачи используют интервал поднесущей на 15 кГц. Это означает, что длительность слота для режима на 15 кГц составляет 0,5 мс, и для 3.75 кГц длительность слота составляет 2 мс. Борющаяся последовательность инициализируется в первом слоте передачи кодовой комбинации. Если существуют включенные повторения, то борющаяся последовательность повторно инициализируется после каждой передачи MidenticalNPUSCH кодовой комбинации, как описано в Разделе TS 36.211 10.1.3.1 [1]. Кодовыми комбинациями является BPSK/QPSK, модулируемый на единственном слое и предварительно закодированный прежде, чем сопоставить с одним или несколькими модулями ресурса. Все элементы ресурса кроме используемых для сигналов ссылки демодуляции используются для передачи NPUSCH. Если более высокая сигнализация слоя (npusch-AllSymbols, как описано в Разделе TS 36.211 10.1.3.6 [1]) указывает на присутствие символа SRS, эти символы считаются в отображении NPUSCH, но не используются для передачи NPUSCH (т.е. эти положения NPUSCH проколоты SRS).

Настройка NPUSCH

В этом разделе мы конфигурируем параметры, требуемые для генерации NPUSCH. UE использует комбинацию MCS (модуляция и схема кодирования) и присвоение ресурса, сообщенное через DCI, чтобы определить транспортный размер блока от набора, заданного в таблице 16.5.1.2-2 [3] TS 36.213, чтобы использовать для передачи NPUSCH. В этом примере это задано через параметр, tbs и длительностью сгенерированной формы волны управляют через параметр totNumBlks.

tbs = 144;                          % The transport block size
totNumBlks = 1;                     % Number of simulated transport blocks

ue = struct();                      % Initialize the UE structure
ue.NBULSubcarrierSpacing = '15kHz'; % 3.75kHz, 15kHz
ue.NNCellID = 0;                    % Narrowband cell identity

chs = struct();
% NPUSCH carries data or control information
chs.NPUSCHFormat = 'Data'; % Payload type (Data or Control)
% The number of subcarriers used for NPUSCH 'NscRU' depends on the NPUSCH
% format and subcarrier spacing 'NBULSubcarrierSpacing' as shown in TS
% 36.211 Table 10.1.2.3-1. There are 1,3,6 or 12 continuous subcarriers for
% NPUSCH
chs.NBULSubcarrierSet = 0;        % Range is 0-11 (15kHz); 0-47 (3.75kHz)
chs.NRUsc = length(chs.NBULSubcarrierSet);
chs.CyclicShift = 0;   % Cyclic shift required when NRUsc = 3 or 6
chs.RNTI = 0;          % RNTI value
chs.NLayers = 1;       % Number of layers
chs.NRU = 2;           % Number of resource units
chs.NRep = 4;          % Number of repetitions of the NPUSCH
chs.SlotIdx = 0;       % Start slot index in a bundle
% The symbol modulation depends on the NPUSCH format and NscRU as
% given by TS 36.211 Table 10.1.3.2-1
chs.Modulation = 'QPSK';
rvDCI = 0;             % RV offset signaled via DCI (See 36.213 16.5.1.2)
if strcmpi(chs.NPUSCHFormat,'Control')
    if length(chs.NBULSubcarrierSet) ~= 1
        error('The number of useful subcarriers must be 1 for control information');
    end
end

% Specify the NPUSCH and DM-RS power scaling in dB for plot visualization
chs.NPUSCHPower = 30;
chs.NPUSCHDRSPower = 34;

Для сигналов DM-RS в формате 1 NPUSCH скачкообразное движение группы последовательности может быть включено или отключено более высоким слоем специфичный для ячейки параметр groupHoppingEnabled. Группа последовательности, скачкообразно двигающаяся для конкретного UE, может быть отключена через более высокий параметр слоя groupHoppingDisabled, как описано в Разделе TS 36.211 10.1.4.1.3 [1]. В этом примере мы используем параметр SeqGroupHopping, чтобы включить или отключить скачкообразное движение группы последовательности

chs.SeqGroupHopping = true; % Enable/Disable Sequence-Group Hopping for UE
chs.Deltass = 0;            % Higher-layer parameter groupAssignmentNPUSCH

% Get number of time slots in a resource unit NULSlots
if strcmpi(chs.NPUSCHFormat,'Data')
    if strcmpi(ue.NBULSubcarrierSpacing,'3.75kHz')
        NULSlots = 16;
    elseif strcmpi(ue.NBULSubcarrierSpacing,'15kHz')
        if chs.NRUsc == 12
            NULSlots = 2;
        elseif chs.NRUsc == 6
            NULSlots = 4;
        elseif chs.NRUsc == 3
            NULSlots = 8;
        elseif chs.NRUsc == 1
            NULSlots = 16;
        else
            error('Invalid number of subcarriers, should be one of 1,3,6,12');
        end
    else
        error('Invalid subcarrier spacing, should be either 3.75kHz or 15kHz');
    end
elseif strcmpi(chs.NPUSCHFormat,'Control')
    NULSlots = 4;
else
    error('Invalid NPUSCH Format (%s), should be either Data or Control',chs.NPUSCHFormat);
end
chs.NULSlots = NULSlots;
NSlotsPerBundle = chs.NRU*chs.NULSlots*chs.NRep; % Number of slots in a codeword bundle
TotNSlots = totNumBlks*NSlotsPerBundle;   % Total number of simulated slots

Генерация формы волны восходящего канала NB-IoT

В этом разделе мы создаем сетку ресурса, заполненную с NPUSCH и соответствующими сигналами ссылки демодуляции. Этой сеткой является затем SC-FDMA, модулируемый, чтобы сгенерировать форму волны области времени.

% Initialize the random generator to default state
rng('default');

% Get the slot grid and number of slots per frame
if strcmpi(ue.NBULSubcarrierSpacing,'15kHz')
    slotGrid = zeros(12, 7);
    NSlotsPerFrame = 20; % Slots 0...19
else
    slotGrid = zeros(48, 7);
    NSlotsPerFrame = 5;  % Slots 0...4
end

estate = [];    % NPUSCH encoder state, auto re-initialization in the function
trblk = [];     % Initialize the transport block
txgrid = [];    % Full grid initialization
statedmrs = []; % DM-RS state

% Display the number of slots being generated
fprintf('\nGenerating %d slots corresponding to %d transport block(s)\n',TotNSlots,totNumBlks);
for slotIdx = 0+(0:TotNSlots-1)
    % Calculate the frame number and slot number within the frame
    ue.NFrame = fix(slotIdx/NSlotsPerFrame);
    ue.NSlot = mod(slotIdx,NSlotsPerFrame);

    if isempty(trblk)
       if strcmpi(chs.NPUSCHFormat,'Data')
           % UL-SCH encoding is done for the two RV values used for
           % transmitting the codewords. The RV sequence used is determined
           % from the rvDCI value signaled in the DCI and alternates
           % between 0 and 2 as given in TS 36.213 Section 16.5.1.2

           % Define the transport block which will be encoded to create the
           % codewords for different RV
           trblk = randi([0 1],tbs,1);

           % Determine the coded transport block size
           [~, info] = hNPUSCHIndices(ue,chs);
           outblklen = info.G;
           % Create the codewords corresponding to the two RV values used
           % in the first and second block, this will be repeated till all
           % blocks are transmitted
           chs.RV = 2*mod(rvDCI+0,2); % RV for the first block
           cw = hNULSCH(chs,outblklen,trblk); % CRC and Turbo coding is repeated
           chs.RV = 2*mod(rvDCI+1,2); % RV for the second block
           cw = [cw hNULSCH(chs,outblklen,trblk)]; %#ok<AGROW> % CRC and Turbo coding is repeated
       else
           trblk = randi([0 1],1); % 1 bit ACK
           % For ACK, the same codeword is transmitted every block as
           % defined in TS 36.212 Section 6.3.3
           cw = hNULSCH(trblk);
       end
       blockIdx = 0; % First block to be transmitted
    end

    % NPUSCH encoding and mapping onto the slot grid
    [txsym, estate] = hNPUSCH(ue,chs,cw(:,mod(blockIdx,size(cw,2))+1),estate);
    % If a full block is transmitted, increment the clock counter so that
    % the correct codeword can be selected
    if estate.EndOfBlk
        blockIdx = blockIdx + 1;
    end
    % Map NPUSCH symbols in the grid of a slot
    indicesNPUSCH = hNPUSCHIndices(ue,chs);
    slotGrid(indicesNPUSCH) = txsym*db2mag(chs.NPUSCHPower);

    % Create DM-RS sequence and map to the slot grid
    [dmrs,statedmrs] = hNPUSCHDRS(ue,chs,statedmrs);
    indicesDMRS = hNPUSCHDRSIndices(ue,chs);
    slotGrid(indicesDMRS) = dmrs*db2mag(chs.NPUSCHDRSPower);

    % Concatenate this slot to the slot grid
    txgrid = [txgrid slotGrid]; %#ok<AGROW>

    % trblk err count and re-initialization
    if estate.EndOfTx
       % Re-initialize to enable the transmission of a new transport block
       trblk = [];
    end

end

% Perform SC-FDMA modulation to create time domain waveform
ue.CyclicPrefixUL = 'Normal'; % Normal cyclic prefix length for NB-IoT
[waveform,scfdmaInfo] = lteSCFDMAModulate(ue,chs,txgrid);
Generating 128 slots corresponding to 1 transport block(s)

Постройте переданную сетку

Постройте заполненную сетку и наблюдайте NPUSCH и соответствующий DM-RS. Положения NPUSCH и DM-RS зависят от количества поднесущих chs.NRUsc и поднесущие, используемые, как задано chs.NBULSubcarrierSet. Обратите внимание на то, что график сетки ресурса использует уровни мощности PUSCH и DM-RS, чтобы присвоить цвета элементам ресурса.

% Create an image of overall resource grid
figure
image(abs(txgrid(:,:,1)));
axis xy;
title(sprintf('NB-IoT Uplink RE Grid (NRep = %d, NRUsc = %d, NRU = %d)',chs.NRep,chs.NRUsc,chs.NRU))
xlabel('OFDM symbols')
ylabel('Subcarriers')
% Create the legend box to indicate the channel/signal types associated with the REs
reNames = {'NPUSCH';'DM-RS'};
clevels = round(db2mag([chs.NPUSCHPower chs.NPUSCHDRSPower]));
N = numel(reNames);
L = line(ones(N),ones(N), 'LineWidth',8); % Generate lines
% Index the color map
cmap = colormap(gcf);
% Set the colors according to cmap
set(L,{'color'},mat2cell(cmap( min(1+clevels,length(cmap) ),:),ones(1,N),3));
legend(reNames{:});

Приложение

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

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

  1. 3GPP TS 36.211 "Физические каналы и модуляция"

  2. 3GPP TS 36.212 "Мультиплексирование и кодирование канала"

  3. 3GPP TS 36.213 "Процедуры физического уровня"

  4. 3GPP TS 36.321 "Среднее управление доступом (MAC); спецификация Протокола"

  5. 3GPP TS 36.331 "Радио-управление ресурсами (RRC); спецификация Протокола"

  6. 3GPP TS 36.300 "Полное описание; Этап 2 дюйма

  7. О. Либерг, М. Зундберг, Y.-P. Ван, Дж. Бергман и Дж. Сакс, сотовый Интернет вещей: технологии, стандарты и производительность, Elsevier, 2018.

Для просмотра документации необходимо авторизоваться на сайте