exponenta event banner

Генерация сигнала восходящей линии связи NB-IoT

В этом примере показано, как генерировать сигналы восходящей линии связи LTE-Advanced Pro Release 13 Narrowband IoT (NB-IoT), состоящие из узкополосного физического общего канала восходящей линии связи (NPUSCH) и связанных с ним опорных сигналов демодуляции для приложений тестирования и измерения с использованием Toolbox™ LTE.

Введение

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

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

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

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

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

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

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

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

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

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

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

Распределение NPUSCH

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

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

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

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

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

Наименьшим блоком отображения для NPUSCH является блок ресурсов. Определяется как 7 * NslotsUL последовательные символы SC-FDMA во временной области и NscRU последовательные поднесущие в частотной области, где NslotsUL и NscRU определены в TS 36.211 Таблица 10.1.2.3-1 [1]. 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 согласно ТУ 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, идентификатор узкополосной соты NNcellID и формат NPUSCH NPUSCHFormat. Позиции RE зависят от формата NPUSCH и интервала между поднесущими. Для формата 1 NPUSCH с интервалом между поднесущими 3.75kHz DM-RS передается по символу 4, а с интервалом между поднесущими 15kHz DM-RS передается по символу 3. Для 2 формата NPUSCH с интервалом между поднесущими 3 .75 кГц DM-RS передается по символам 0,1,2 а с интервалом между поднесущими 15kHz DM-RS передается по символам 2,3 и 4 в слоте.

  • NPUSCH: NPUSCH поддерживает полосу пропускания одного тонального сигнала в дополнение к полосе пропускания нескольких (12 поднесущих). Однотоновые передачи могут использовать либо 15kHz, либо 3.75kHz интервал между поднесущими, тогда как многотоновые передачи используют 15kHz интервал между поднесущими. Это означает, что длительность слота для режима 15kHz равна 0,5 мс, а для 3.75kHz длительность слота равна 2 мс. Последовательность скремблирования инициализируется в первом временном интервале передачи кодового слова. Если повторы включены, то последовательность скремблирования повторно инициализируется после каждого MidenticalNPUSCH передача кодового слова, как описано в TS 36.211 раздел 10.1.3.1 [1]. Кодовые слова модулируются на одном уровне и предварительно кодируются перед отображением на один или более ресурсных блоков. Все элементы ресурса, отличные от тех, которые используются для опорных сигналов демодуляции, используются для передачи 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 TS 36.213 [3], для использования для передачи 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 в формате NPUSCH 1 скачкообразная перестройка групп последовательностей может быть активизирована или деактивизирована параметром соты более высокого уровня. 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 ТС 36.211 «Физические каналы и модуляция»

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

  3. 3GPP ТС 36.213 «Процедуры физического уровня»

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

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

  6. 3GPP ТС 36.300 "Общее описание; Этап 2 "

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