В этом примере показано, как сгенерировать Усовершенствованный 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 сопоставлен в пазы восходящего канала 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 (т.е. эти положения 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 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
В этом разделе мы создаем сетку ресурса, заполненную с 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 im = image(abs(txgrid(:,:,1))); 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.