主要内容

NB-IOT上行链路波形生成

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

介绍

3GPP推出了一个新的空中接口,窄带IOT(NB-IOT)针对LTE-Advanced Pro版本的低数据速率机器类型通信优化.NB-IOT提供了成本和功率效率的改进,因为它避免了需要复杂的信号开销基于LTE的系统。

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

  • 独立:例如,在LTE频谱外部部署的NB-IOT载波,例如,用于GSM或卫星通信的频谱

  • 保护带:NB-IOT载体部署在两个LTE运营商之间的保护带中

  • 频段:部署在LTE运营商的资源块中的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次以提高传输可靠性和覆盖,而不会影响低功率和低复杂性要求以满足超低端IOT使用情况。

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*纽尔斯*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].

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.: 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结构UE.nbulsubcarierspacing ='15khz'%3.75khz,15khzUE.nncellid = 0;%窄带细胞标识chs = struct();%NPUSCH带有数据或控制信息chs.npuschformat ='数据'%负载类型(数据或控制)用于NPUSCH ' nscu '的子载波数量取决于NPUSCH%格式和子载波间隔'nbulsubcarierspacing'如ts所示%36.211表10.1.2.3-1。有1,3,6或12个连续的子载波%npusch.chs.nbulsubcarierset = 0;%范围为0-11(15kHz);0-47(3.75kHz)chs.nrusc =长度(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由TS 36.211给出的%表10.1.3.2-1chs。调制='QPSK';rvDCI = 0;通过DCI信号的% RV偏移量(见36.213 16.5.1.2)%在DB中指定NPUSCH和DM-RS功率缩放,用于绘图可视化chs.npuschpower = 30;chs.npuschdrspower = 34;

对于NPUSCH格式1中的DM-RS信号,可以通过更高的层单元格式参数启用或禁用序列组跳跃groupHoppingEnabled.可以通过更高的层参数禁用特定UE的序列组跳跃grouphoppingdisabled.如TS 36.211第10.1.4.1.3节所述[1].在这个例子中,我们使用SeqGroupHopping参数启用或禁用序列组跳跃。

Chs.seqgrouphopping ='在'%启用/禁用序列组跳跃的UEchs.seqgroup = 0;%delta_ss。高层参数Groupassignmentnpusch%获取资源单元纽尔斯中的时间插槽数量%TS 36.211表10.1.2.3-1如果Strcmpi(Chs.npuschformat,'数据'如果chs.nrusc == 1 nulslots = 16;eleesif任何(chs。NRUsc == [3 6 12]) NULSlots = 24/chs.NRUsc;别的错误('子载波的数量无效。NRUSC必须是1,3,6,12'中的一个);结尾eleesifStrcmpi(Chs.npuschformat,'控制')Nulslots = 4;别的错误('无效的NPUSCH格式(%s)。NPUSCHFormat必须是" Data "或" Control ",chs.npuschformat);结尾chs。NULSlots = NULSlots;NSlotsPerBundle = chs.NRU * chs.NULSlots * chs.NRep;码字捆绑中的次数totnslots = totnumblks * nslotsperbundle;模拟插槽的%总数

NB-IOT上行链路波形生成

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

%将随机生成器初始化为默认状态RNG('默认');%获取每个框架的插槽网格和插槽数emptySlotGrid = lteNBResourceGrid(问题);slotGridSize =大小(emptySlotGrid);NSlotsPerFrame = 20 / (slotGridSize (1) / 12);状态= [];%NPUSCH编码器和DM-RS状态,在功能中自动重新初始化trblk = [];%初始化传输块txgrid = [];全网格初始化%显示正在生成的时隙数fprintf('\n生成%d个槽,对应%d个传输块(s)\n',totnslots,totnumblks);为了slotidx = 0+(0:totnslots-1)%计算帧内的帧号和插槽号UE.NFRAME =修复(SLOTIDX / NSLOTSPERFREME);ue.nslot = mod(slotidx,nslotsperframe);如果isempty(trblk)如果Strcmpi(Chs.npuschformat,'数据'对于用于的两个RV值来说,完成%UL-SCH编码%发送码字。使用的RV序列确定从DCI中发出的RVDCI值的%并交替在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.rv = 2 * mod(rvdci + 0,2);第一个块的%RV连续波= lteNULSCH (chs、outblklen trblk);% CRC和Turbo编码chs.rv = 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符号indicsnpusch = ltenuschindices(Ue,chs);SlotGrid(indicsnpusch)= txsym * db2mag(chs.npuschpower);%创建DM-RS序列并映射到槽网格(dmr、州)= lteNPUSCHDRS(问题、chs、状态);chs indicesDMRS = lteNPUSCHDRSIndices(问题);slotGrid (indicesDMRS) = dmr * db2mag (chs.NPUSCHDRSPower);%将此插槽连接到插槽网格txgrid = [txgrid slotgrid];%#OK %如果传输完整块,则递增时钟计数器%可以选择正确的码字如果state.endofblk blockidx = blockidx + 1;结尾% TRBLK错误计数和重新初始化如果状态。EndOfTx%重新初始化以启用新传输块的传输trblk = [];结尾结尾%执行SC-FDMA调制以创建时域波形UE.CyclicPrefixul ='普通的'NB-IOT的%常规循环前缀长度[波形,scfdmainfo] = LTESCFDMAMODULES(UE,CHS,TxGrid);
生成128个槽位对应1个传输块

绘制传输网格

绘制填充的网格并观察NPUSCH和相应的DM-RS。NPUSCH和DM-R的位置取决于子载波的数量chs.nrusc.和所指定的子载波chs.nbulsubcarierset..请注意,资源网格图使用PUSCH和DM-RS的功率电平将颜色分配给资源元素。

%创建了整个资源网格的图像图im = image(abs(txgrid));提出= 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(重命名);l =行(那些(n),一个(n),“线宽”,8);%生成线条%根据CMAP设置颜色集(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. 3GPP TS 36.331“无线电资源控制(RRC);协议规范”

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

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