В этом примере показано, как сгенерировать Усовершенствованный 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 сопоставлен в пазы восходящего канала 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].
В дополнение к назначению слотов, описанному выше, этот раздел далее объясняет выделение 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. 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
В этом разделе вы создаете сетку ресурса, заполненную с 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{:});
3GPP TS 36.211 "Физические каналы и модуляция"
3GPP TS 36.212 "Мультиплексирование и кодирование канала"
3GPP TS 36.213 "Процедуры физического уровня"
3GPP TS 36.321 "Среднее управление доступом (MAC); спецификация Протокола"
3GPP TS 36.331 "Радио-управление ресурсами (RRC); спецификация Протокола"
3GPP TS 36.300 "Полное описание; Этап 2 дюйма
О. Либерг, М. Зундберг, Y.-P. Ван, Дж. Бергман и Дж. Сакс, сотовый Интернет вещей: технологии, стандарты и эффективность, Elsevier, 2018.