Генерация сигналов восходящего канала 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, e.g. спектр используется для GSM или спутниковой связи

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

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

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

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

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

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

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

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

Выделение 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 \times.

Примеры на рисунке показывают шаблон повторения с 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 (i.e. эти положения 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 contiguous 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)

% 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 = 'on'; % Enable/Disable Sequence-Group Hopping for UE
chs.SeqGroup = 0;           % Delta_SS. Higher-layer parameter groupAssignmentNPUSCH

% Get number of time slots in a resource unit NULSlots according to
% TS 36.211 Table 10.1.2.3-1
if strcmpi(chs.NPUSCHFormat,'Data')
    if chs.NRUsc == 1
        NULSlots = 16;
    elseif any(chs.NRUsc == [3 6 12])
        NULSlots = 24/chs.NRUsc;
    else
        error('Invalid number of subcarriers. NRUsc must be one of 1,3,6,12');
    end
elseif strcmpi(chs.NPUSCHFormat,'Control')
    NULSlots = 4;
else
    error('Invalid NPUSCH Format (%s). NPUSCHFormat must be ''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
emptySlotGrid = lteNBResourceGrid(ue);
slotGridSize = size(emptySlotGrid);
NSlotsPerFrame = 20/(slotGridSize(1)/12);

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

% 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] = lteNPUSCHIndices(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 = lteNULSCH(chs,outblklen,trblk); % CRC and Turbo coding
           chs.RV = 2*mod(rvDCI+1,2); % RV for the second block
           cw = [cw lteNULSCH(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 = lteNULSCH(trblk);
       end
       blockIdx = 0; % First block to be transmitted
    end

    % Initialize grid
    slotGrid = emptySlotGrid;

    % NPUSCH encoding and mapping onto the slot grid
    txsym = lteNPUSCH(ue,chs,cw(:,mod(blockIdx,size(cw,2))+1),state);

    % Map NPUSCH symbols in the grid of a slot
    indicesNPUSCH = lteNPUSCHIndices(ue,chs);
    slotGrid(indicesNPUSCH) = txsym*db2mag(chs.NPUSCHPower);

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

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

    % If a full block is transmitted, increment the clock counter so that
    % the correct codeword can be selected
    if state.EndOfBlk
        blockIdx = blockIdx + 1;
    end

    % trblk err count and re-initialization
    if state.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
im = image(abs(txgrid));
cmap = parula(64);
colormap(im.Parent,cmap);
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
% 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.