主要内容

NB-IoT上行波形生成

本示例展示了如何使用LTE Toolbox™生成由窄带物理上行链路共享信道(NPUSCH)和相关解调参考信号组成的LTE- advanced Pro Release 13窄带物联网(NB-IoT)上行链路波形,用于测试和测量应用。

简介

3GPP在LTE-Advanced Pro Release 13中推出了新的空中接口窄带物联网(NB-IoT),针对低数据速率机器类型通信进行了优化。NB-IoT提高了成本和电源效率,因为它避免了基于LTE的系统所需的复杂信号开销。

LTE工具箱可用于生成符合标准的NB-IoT上行复杂基带波形,代表适合测试和测量应用的180kHz窄带载波。LTE工具箱支持下面描述的所有N金宝appB-IoT操作模式-独立、保护带和带内。

  • 独立:部署在LTE频谱之外的NB-IoT运营商,例如用于GSM或卫星通信的频谱

  • 警卫带:部署在两个LTE运营商之间的警卫带上的NB-IoT运营商

  • 带内:部署在LTE运营商资源块中的NB-IoT运营商

NB-IoT上行链路由以下物理层通道和信号组成:

  • 窄带解调参考信号(DM-RS)

  • 窄带物理上行共享信道(NPUSCH)

  • 窄带物理随机接入信道(NPRACH)

本例演示了由NPUSCH和DM-RS信号组成的NB-IoT上行链路资源单元(RE)网格和波形生成。下面的部分将介绍这些构成网格的物理信号和通道,以及关键概念,包括子帧重复、逻辑和传输通道映射,以及不同配置的相应网格。

该示例输出复杂基带波形以及包含NPUSCH和DM-RS信号的填充网格。该波形可用于从射频测试到接收机实现模拟的一系列应用。

NPUSCH分配

本节将全面介绍NPUSCH如何映射到NB-IoT上行插槽。

NPUSCH可携带上行链路共享信道(UL-SCH)或上行链路控制信息,格式如下:

  • NPUSCH格式1,用于承载上行链路的共享信道(UL-SCH)

  • NPUSCH格式2,用于携带上行控制信息

NPUSCH在一个或多个资源单元上传输,每个资源单元重复多达128次,以提高传输可靠性和覆盖范围,同时不影响低功耗和低复杂性要求,以满足超低端的物联网用例。

NPUSCH的最小映射单元是资源单元。定义为7 *NslotsUL连续的SC-FDMA符号在时域和NscRU频域连续子载波,其中NslotsUL而且NscRU表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可以映射到一个或多个资源单元,NRUTS 36.211 Section 10.1.3.6的定义[1],每个资源单元都可以传输Nrep次了。

图中的例子显示了与的重复模式NRep= 4。传输一个数据块的总持续时间由NRUNULSlotsMidenticalNPUSCHTS 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,窄带小区IDNNcellID和NPUSCH格式NPUSCHFormat.RE位置取决于NPUSCH格式和子载波间距。对于子载波间距为3.75kHz的NPUSCH格式1,DM-RS在符号4上传输;对于子载波间距为15kHz的NPUSCH格式1,DM-RS在符号3上传输。对于子载波间距为3.75kHz的NPUSCH格式2,DM-RS在符号0、1、2上传输;对于子载波间距为15kHz的NPUSCH格式2,DM-RS在插槽中的符号2、3、4上传输。

  • NPUSCH:除支持多音(12个子载波金宝app)带宽外,还支持单音带宽。单音传输可以使用15kHz或3.75kHz子载波间隔,而多音传输则使用15kHz子载波间隔。这意味着15kHz模式的插槽持续时间为0.5ms,而3.75kHz模式的插槽持续时间为2ms。置乱序列在码字传输的第一个槽中初始化。如果启用了重复,则在每个重复之后重新初始化置乱序列MidenticalNPUSCHTS 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信号的资源分配的组合来确定TS 36.213中定义的集中的传输块大小,表16.5.1.2-2 [3.用于NPUSCH传输。在本例中,这是通过参数指定的tbs所产生的波形的持续时间是通过totNumBlks参数。

TBS = 144;%传输块大小totNumBlks = 1;%模拟传输块数Ue = struct();初始化UE结构问题。NBULSubcarrierSpacing =“15 khz”% 3.75kHz, 15kHz问题。NNCellID = 0;%窄带单元识别CHS = struct();% NPUSCH携带数据或控制信息chs。NPUSCHFormat =“数据”有效载荷类型(数据或控制)用于NPUSCH 'NscRU'的子载波数量取决于NPUSCH%格式和子载波间距'NBULSubcarrierSpacing',如TS所示表10.1.2.3-1. % 36.211。有1、3、6或12个相邻子载波% NPUSCHchs。NBULSubcarrierSet = 0;%范围0-11 (15kHz);0-47 (3.75 khz)chs。NRUsc = length(chs.NBULSubcarrierSet); chs.CyclicShift = 0;当NRUsc = 3或6时,需要%循环移位chs。Rnti = 0;% RNTI值chs。NLayers = 1;%层数chs。NRU= 2;%资源单位数chs。NRep= 4;% NPUSCH的重复次数chs。SlotIdx = 0;包中的起始槽索引符号调制取决于NPUSCH格式和NscRU格式表10.1.3.2-1chs。调制=“正交相移编码”;rvDCI = 0;通过DCI信号的RV偏移百分比(见36.213 16.5.1.2)在dB中指定NPUSCH和DM-RS功率缩放,用于图形可视化chs。NPUSCHPower = 30;chs。npuschdrpower = 34;

对于NPUSCH格式1的DM-RS信号,可以通过上层cell特定参数启用或禁用序列组跳变groupHoppingEnabled.可以通过较高层参数禁用特定UE的序列组跳转groupHoppingDisabled如TS 36.211节10.1.4.1.3所述[1].在本例中,我们使用SeqGroupHopping参数来启用或禁用序列组跳转。

chs。SeqGroupHopping =“上”启用/禁用终端序列组跳转功能chs。SeqGroup = 0;% Delta_SS。上层参数groupAssignmentNPUSCH获取资源单元NULSlots中的时隙个数表10.1.2.3-1 . % TS 36.211如果strcmpi (chs。NPUSCHFormat,“数据”如果chs。NRUsc == 1 NULSlots = 16;elseif任何(chs。NRUsc== [3 6 12]) NULSlots = 24/chs.NRUsc;其他的错误(无效的子载波数。NRUsc必须是1,3,6,12'中的一个);结束elseifstrcmpi (chs。NPUSCHFormat,“控制”) NULSlots = 4;其他的错误(无效的NPUSCH格式(%s)。NPUSCHFormat必须为" Data "或" Control ", chs.NPUSCHFormat);结束chs。NULSlots = NULSlots;nsslotsperbundle = chs.NRU*chs.NULSlots*chs.NRep;码字包中的槽数TotNSlots = totNumBlks*NSlotsPerBundle;%模拟插槽总数

NB-IoT上行波形生成

在本节中,您将创建用NPUSCH和相应的解调参考信号填充的资源网格。然后对该网格进行SC-FDMA调制以生成时域波形。

将随机生成器初始化为默认状态rng (“默认”);获取每帧的槽网格和槽数emptySlotGrid = lteNBResourceGrid(ue);slotGridSize = size(emptySlotGrid);NSlotsPerFrame = 20/(slotGridSize(1)/12);State = [];% NPUSCH编码器和DM-RS状态,自动重新初始化的功能TRBLK = [];初始化传输块Txgrid = [];%完全网格初始化显示正在生成的槽位数流(生成%d个插槽,对应%d个传输块\n'、TotNSlots totNumBlks);slotIdx = 0+(0:TotNSlots-1)%计算帧号和帧内槽号问题。NFrame = fix(slotIdx/NSlotsPerFrame);问题。NSlot = mod(slotIdx,NSlotsPerFrame);如果isempty (trblk)如果strcmpi (chs。NPUSCHFormat,“数据”% UL-SCH编码用于的两个RV值%传输码字。所使用的RV序列已确定%从rvDCI值在DCI和交替信号%在0和2之间,如TS 36.213节16.5.1.2所述定义传输块,该传输块将被编码以创建%码字用于不同RVTRBLK = randi([0 1],tbs,1);确定编码的传输块大小[~, info] = lteNPUSCHIndices(ue,chs);outblklen = info.G;创建对应于所使用的两个RV值的码字%在第一个和第二个块,这将重复直到所有传输块的百分比chs。RV = 2*mod(rvDCI+0,2);% RV为第一个块cw = lteNULSCH(chs,outblklen,trblk);% CRC和Turbo编码chs。RV = 2*mod(rvDCI+1,2);% RV为第二个块cw = [cw lteNULSCH(chs,outblklen,trblk)];%#ok % CRC和Turbo编码重复其他的TRBLK = randi([0 1],1);% 1比特ACK对于ACK,每个块传输相同的码字%定义在TS 36.212节6.3.3cw = lteNULSCH(trblk);结束blockIdx = 0;要传输的第一个数据块结束初始化网格slotGrid = emptySlotGrid;% NPUSCH编码并映射到插槽网格txsym = lteNPUSCH(ue,chs,cw(:,mod(blockIdx,size(cw,2))+1),state);将NPUSCH符号映射到插槽的网格中indicesNPUSCH = lteNPUSCHIndices(ue,chs);slotGrid(indicesNPUSCH) = txsym*db2mag(chs.NPUSCHPower);创建DM-RS序列并映射到插槽网格[dmrs,state] = lteNPUSCHDRS(ue,chs,state);indicesDMRS = lteNPUSCHDRSIndices(ue,chs);slotGrid(indicesDMRS) = dmrs*db2mag(chs. npuschdrpower);将此插槽连接到插槽网格txgrid = [txgrid slotGrid];% #好< AGROW >%如果传输了一个完整的块,增加时钟计数器,使%可以选择正确的码字如果状态。EndOfBlk blockIdx = blockIdx + 1;结束% TRBLK错误计数和重新初始化如果状态。EndOfTx重新初始化以启用新的传输块的传输TRBLK = [];结束结束%执行SC-FDMA调制以创建时域波形问题。CyclicPrefixUL =“正常”NB-IoT正常循环前缀长度[波形,scfdmaInfo] = lteSCFDMAModulate(ue,chs,txgrid);
生成128个插槽对应1个传输块

传输网格

绘制填充网格,观察NPUSCH和对应的DM-RS。NPUSCH和DM-RS的位置取决于子载波的数量chs。NRUsc和子载波所指定的chs。NBULSubcarrierSet.请注意,资源网格图使用PUSCH和DM-RS的功率级别为资源元素分配颜色。

%创建一个整体资源网格的图像图im = image(abs(txgrid));Cmap = parula(64);colormap (im.Parent提出);轴xy;标题(sprintf ('NB-IoT上行RE网格(NRep = %d, NRUsc = %d, NRU = %d)', chs.NRUsc chs.NRep chs.NRU)包含(OFDM符号的) ylabel (副载波的创建图例框以指示与REs相关的通道/信号类型重命名= {“NPUSCH”“DM-RS”};Clevels = round(db2mag([chs。NPUSCHPower chs.NPUSCHDRSPower])); N = numel(reNames); L = line(ones(N),ones(N),“线宽”8);%生成行根据cmap设置颜色集(L, {“颜色”}, mat2cell(提出(min (1 + clevels长度城市规划机构(cmap)),:), (1, N), 3));传奇(重命名{:});

选定的参考书目

  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”总体描述;第二阶段”

  7. O. Liberg, M. Sundberg, y . p。Wang, J. Bergman和J. Sachs,蜂窝物联网:技术、标准和性能,爱思唯尔,2018。