主要内容

NB-IOT上行链路波形生成

该示例显示了如何生成由窄带物理上行链路共享信道(NPUSCH)和用于使用LTE工具箱™的测试和测量应用的相关联的解调参考信号组成的LTE-Advance Pro Release 13窄带IOT(NB-IOT)上行链路波形。

介绍

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

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

  • 独立:部署在LTE频谱之外的窄带物联网运营商,例如用于GSM或卫星通信的频谱

  • Guardband: NB-IoT运营商,部署在两个LTE运营商之间的Guardband

  • 频段:部署在LTE运营商的资源块中的NB-IOT载波

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

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

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

  • 窄带物理随机存取信道(NPRACH)

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

该示例输出复数基带波形以及包含NPUSCH和DM-RS信号的填充网格。波形可用于从RF测试到仿真接收器实现的一系列应用。

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可以映射到一个或多个资源单元,nru.由TS 36.211条第10.1.3.6条定义[1]并且可以传输每个资源单元Nrep次了。

图中的示例显示了重复模式nrep.= 4.发送数据块的总持续时间nru.*纽尔斯*MidenticalNPusch.如TS 36.211条第10.1.3.6条规定[1].对于下面所示的第一种情况,每个传输块都被传输nru.= 2和每一个nru.包含两个UL插槽,由纽尔斯.在映射到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].

窄带物联网上行槽网格

除了上述时隙分配之外,该部分还介绍了槽中的重新分配。电网包括一个或多个包含NPUSCH和相应DM-RS的帧。

  • DM-RS: DM-RS以相同的带宽在每个NPUSCH槽中传输。参考信号取决于子载波的数量nscru.,窄带单元IDnncellid.和NPUSCH格式npuschformat..重新定位取决于NPUSCH格式和子载波间距。对于NPUSCH格式1,具有3.75kHz的子载波间隔,DM-RS在符号4上传输,并且在15kHz的子载波间隔上传输,DM-RS在符号3上传输。对于NPUSCH格式2,具有3.75kHz的子载波间距为3.75kHz,DM-RS在符号0,1,2上发送,并且具有15kHz的子载波间隔,DM-RS在槽中的符号2,3和4上发送。

  • NPUSCH: NPUSCH除了支持多金宝app音(12子载波)带宽外,还支持单音带宽。单音传输可以使用15kHz或3.75kHz的子载波间距,而多音传输使用15kHz的子载波间距。也就是说,15kHz模式下的槽位持续时间为0.5ms, 3.75kHz模式下的槽位持续时间为2ms。置乱序列在码字传输的第一个槽中初始化。如果允许重复,则置乱序列在每次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配置

在本节中,您可以配置NPUSCH生成所需的参数。UE使用MCS(调制和编码方案)的组合和经由DCI信号通知的资源分配,以确定从TS 36.213中定义的集合的传输块大小。表16.5.1.2-2 [3.]用于NPUSCH传输。在此示例中,这通过参数指定TBS.并且通过该生成波形的持续时间受到控制totnumblks.范围。

TBS = 144;%传输块大小totnumblks = 1;百分比的模拟传输块UE = struct();%初始化UE结构UE.nbulsubcarierspacing =“15 khz”;% 3.75 khz, 15 khzUE.nncellid = 0;窄带单元识别chs = struct();%NPUSCH带有数据或控制信息chs。NPUSCHFormat ='数据';%有效载荷类型(数据或控制)用于NPUSCH ' nscu '的子载波数量取决于NPUSCH%格式和子载波间隔'nbulsubcarierspacing'如ts所示表10.1.2.3-1。有1、3、6或12个连续的子载波%npusch.chs.nbulsubcarierset.= 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.modulation =.“正交相移编码”;rvdci = 0;%RV偏移通过DCI信号信号(参见36.213 16.5.1.2)%指定NPUSCH和DM-RS功率缩放在dB中用于绘图可视化chs.npuschpower = 30;chs.npuschdrspower = 34;

对于NPUSCH格式1的DM-RS信号,序列组跳变可以由更高层次的细胞特定参数启用或禁用GrouphoppingElebabled..可以通过更高的层参数禁用特定UE的序列组跳跃groupHoppingDisabled如TS 36.211第10.1.4.1.3条所述[1].在这个例子中,我们使用seqgrouphping.参数来启用或禁用序列组跳变。

Chs.seqgrouphopping ='在';%启用/禁用序列组跳跃的UEchs.seqgroup = 0;%delta_ss。高层参数Groupassignmentnpusch%获取资源单元纽尔斯中的时间插槽数量%TS 36.211表10.1.2.3-1如果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必须是''数据''或'''''''',chs.npuschformat);结尾chs.nulslots =鼻子;nslotsperbundle = 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);国家= [];%NPUSCH编码器和DM-RS状态,在功能中自动重新初始化trblk = [];%初始化传输块txgrid = [];%全网格初始化%显示正在生成的槽位数fprintf('\ ngeneration%d槽对应于%d传输块(s)\ n'、TotNSlots totNumBlks);为了slotidx = 0+(0:totnslots-1)%计算帧内的帧号和插槽号问题。NFrame =修复(slotIdx / NSlotsPerFrame);问题。NSlot =国防部(slotIdx NSlotsPerFrame);如果isempty(trblk)如果Strcmpi(Chs.npuschformat,'数据'对于用于的两个RV值来说,完成%UL-SCH编码%发送码字。使用的RV序列确定%从rvDCI值在DCI和交替信号在TS 36.213第16.5.1.2节中给出的0和2之间的%%定义将被编码以创建的传输块不同RV的%码字trblk = randi([0 1],TBS,1);%确定编码传输块大小[〜,INFO] = LTEPUSCHINDICES(UE,CHS);outblklen = info.g;%创建与使用的两个RV值对应的码字%在第一个和第二个块中,这将重复直到全部传输%块chs。房车= 2 *国防部(rvDCI + 0, 2);第一个块的%RVCw = Ltenulsch(Chs,Outblklen,Trblk);%CRC和Turbo编码chs。房车= 2 * mod (rvDCI + 1, 2);第二块的%RVCW = [CW LTTULSCH(CHS,OUTBLKLEN,TRBLK)];%#ok % CRC和Turbo编码重复别的trblk = randi([0 1],1);% 1位ACK对于ACK的%,每个块发送相同的码字TS 36.212第6.3.3节中定义的%cw = ltenulsch(trblk);结尾blockidx = 0;要传输的%第一个块结尾%初始化网格slotgrid = emptyslotgrid;%NPUSCH编码和映射到插槽网格Txsym = Ltenusch(UE,CHS,CW(:,mod(blockidx,尺寸(cw,2))+ 1),状态);%在槽的网格中映射NPUSCH符号chs indicesNPUSCH = lteNPUSCHIndices(问题);slotGrid (indicesNPUSCH) = txsym * db2mag (chs.NPUSCHPower);%创建DM-RS序列并映射到插槽网格[DMRS,状态] = LTEPUSCHDRS(UE,CHS,状态);indicsdmrs = ltenuschdrsindices(UE,chs);SlotGrid(indicsdmrs)= dmrs * db2mag(chs.npuschdrspower);%将此插槽连接到插槽网格txgrid = [txgrid slotGrid];%#OK %如果传输完整块,则递增时钟计数器%可以选择正确的码字如果状态。endofblock blockIdx = blockIdx + 1;结尾%trblk err count和重新初始化如果State.endoftX.%重新初始化以启用新传输块的传输trblk = [];结尾结尾%执行SC-FDMA调制以创建时域波形UE.CyclicPrefixul ='普通的';NB-IOT的%常规循环前缀长度[波形,scfdmainfo] = LTESCFDMAMODULES(UE,CHS,TxGrid);
生成对应于1个传输块的128个插槽

情节传播网格

绘制填充的网格并观察NPUSCH和相应的DM-RS。NPUSCH和DM-R的位置取决于子载波的数量chs.nrusc.并且按照规定使用的子载波chs.nbulsubcarierset..注意,资源网格图使用PUSCH和DM-RS的功率级别为资源元素分配颜色。

%创建了整个资源网格的图像图IM =图像(ABS(TxGrid));CMAP = Parula(64);Colormap(IM.Parent,CMAP);轴XY.;标题(Sprintf('NB-IOT上行链路RE网格(NREP =%D,NRUSC =%D,NRU =%d)',chs.nrep,chs.nrusc,chs.nru))xlabel('OFDM符号') ylabel (副载波的%创建图例框以指示与res关联的频道/信号类型重命名= {'NPUSCH';'dm-rs'};CLEVELS = ROUND(DB2MAG([CHS.NPUSCHPOWER CHS.NPUSCHDRSPOWER]));n = numel(重命名);l =行(那些(n),一个(n),'行宽',8);%生成线%根据CMAP设置颜色set(l,{“颜色”},mat2cell(cmap(min(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. "无线电资源控制(RRC);协议规范”

  6. 3GPP TS 36.300 "总体描述;第二阶段”

  7. O. Liberg,M. Sundberg,Y.-P。王,J.Bergman和J. Sachs,蜂窝互联网:技术,标准和表现,elsevier,2018。