主要内容

LTE-M下行链路波形生成

这个例子展示了如何创建一个下行LTE-M传输,包括MTC物理下行控制信道(MPDCCH)及其相关的物理下行共享信道(PDSCH)和物理广播信道(PBCH),包括重复和跳频。与pre-Release 13设备相比,Cat-M设备提供了更低的成本和复杂性,通过引入重复和扩展DRX来增强覆盖范围,从而进一步节省电力。

介绍

LTE标准中引入的LTE- m增加了针对机器类型通信(MTC)的支持。金宝app从发布12中的Cat-0设备开始,在以后的版本中进一步扩展,以定义一个单独的Cat-M设备类。两种类型现在已经添加到LTE, Cat-M1在第13版(通过emtc.工作项),然后是版本14中的Cat-M2 (feMTC)。

CAT-M器件有两种覆盖增强(CE)操作模式(也称为3GPP标准文档中的BL / CE UE),CE模式A和CE模式B. CE模式A针对额外的覆盖率增强32重复,而CE模式B针对数据通道的多达2048次重复提供了广泛的覆盖范围。CE模式A通过DCI格式6-0A / 6-1A消息和CE模式B通过6-0B / 6-1B消息发出信号。MPDCCH处理链,DM-RS创建和映射几乎与增强的物理下行链路控制信道(EPDCCH)相同,加上重复和跳频行为。此示例对LTE Toolbox™的EPDCCH功能进行了特定于实现MPDCCH模型。LTE-M数据通道是LTE PDSCH,其中添加重复和跳频。LTE-M广播频道由两部分组成;对应于LTE PBCH的“核心”部分和LTE-M特定的“重复”部分,其中重复了“核心”部分中的符号和小区RS信号。

LTE- m可以部署在标准LTE小区中,因此并非所有子帧都必须用于BL/CE传输。BL/CE子帧由MIB-M消息中发送的位图表示(类似于NB-IoT的机制)。为了简单起见,在这个例子中,我们假设所有的子帧都定义为BL/CE。用于LTE-M传输的MPDCCH/PDSCH启动OFDM符号是特定于小区的,并在系统信息(SI)中广播。

这个MATLAB®示例的主要输出是一个多子帧Cat-M1/Cat-M2资源网格,包含MPDCCH资源单元(RE)、相关DM-RS、LTE-M PDSCH REs、PBCH REs(“核心”和“重复”部分以及相应的单元参考信号)和配置为整个传输序列的其他参考信号。这个网格也被OFDM调制以产生相关的时域基带波形。绘制图表以提供网格中的RE分配和基带信号大小的可视化。

LTE-M物理层概念

  • 重复,为了显著扩展LTE-M设备的覆盖范围,在第13版中为Cat-M设备引入了MPDCCH、PDSCH和PBCH的重复。这将提供比预发布13设备至少15dB的性能改进。MPDCCH最多可重复256次,PDSCH最多2048次,PBCH最多5次(包括“核心”部分)。

  • 窄带 -LTE-M使用窄带的概念来分配用于数据和控制信道的宽带LTE载波中的子载波。每个窄带由6个连续的PRB组成,但并非所有PRB都必须是窄带的一部分(取决于整个载体BW)。

  • 宽带 -版本14 LTE-M使用宽带的概念为数据通道分配更高的带宽。可以有一个或多个宽带,每个宽带组成4个窄带或由1,2或3个窄带组成的单个宽带。对于CE CA模式A(DCI格式6-1A)配置的CAT-M2设备,如果IF在单个宽带上传输数据通道CE-PDSCH-MAXBANDWIDTH-CONFIG设置为5MHz还是资源块分配标志在情况下,通过RBG位图设置为1或跨越完整LTE载波带宽资源块分配标志设置为0。的资源块分配标志只有在CE-PDSCH-MAXBANDWIDTH-CONFIG设置为20MHz。对于CE模式B (DCI格式6-1B)配置的Cat-M2设备,数据通道采用单宽带if传输CE-PDSCH-MAXBANDWIDTH-CONFIG设置为5MHz和多达4个宽带,如果CE-PDSCH-MAXBANDWIDTH-CONFIG设置为20MHz。

  • 跳频-尽管Release 13 eMTC设备的瞬时带宽为1.4MHz(最简单的LTE- m设备的最大带宽为1.4MHz),但它可以通过子帧之间的不同窄带访问更宽的LTE运营商。如果传输涉及多个子帧的重复,可以应用可选的子帧间跳频。频率跳变发生在不同的窄带之间,并且在1到16个子帧的块中,这取决于CE模式。跳跃块长度和跳跃偏移是特定于细胞的参数。在下行链路中,对于控制和数据,跳频可以超过2个窄带或4个等间距的窄带。

PDSCH物理层处理和程序

LTE- m数据传输使用与LTE相同的物理通道(PDSCH)。不同的是,LTE-M允许可选的重复和频率跳变。

  • 传输模式 -LTE-M的PDSCH有效传输模式为1(单天线)、2(发射分集)、6(闭环码本预编码)和9(非码本预编码,单层)。传输模式6在CE模式下只支持一个,而1、2和9都支持这个金宝app模式和CE模式b与LTE PDSCH不同,多输入多输出(MIMO)操作不支持在LTE-M因为大多数LTE-M设备预计将低成本设备用一个接收天线。

  • 重复和打乱块-PDSCH传输nreppdsch.(>=1)连续的BL/CE下行子帧。这些nreppdsch.子帧以块的形式传输Nacc子帧(参见TS 36.211第6.8b.2节[1),并对块中的所有子帧应用相同的置乱顺序。NaccFDD双工模式取值为1或4,TDD双工模式取值为1或10。在CE模式A中可以有多达32个重复,在CE模式b中可以有多达2048个重复。PDSCH重复的数量是由半静态配置和特定传输的动态选择的组合定义的。

  • 窄带和宽带-用于LTE-M PDSCH传输的PRB必须属于窄带(如果CAT-M2,则宽带)。CAT-M1设备在窄带中具有1.4MHz的瞬时传输带宽。CAT-M2设备具有5MHz或20MHz的带宽,如较高的层参数所示CE-PDSCH-MAXBANDWIDTH-CONFIG,在这种情况下,PDSCH传输可以在宽带(s),其中每个宽带由多达4个不重叠的窄带组成。

  • 跳频-如果PDSCH在多个子帧上重复,则可以选择性地应用子帧间跳频,在CE模式A和CE模式b中,长度为1,2,4,8的子帧块和长度为2,4,8,16的子帧块发生跳频。跳频块长度和跳频偏移是细胞特定的参数。跳频可以超过2个窄带或4个等间距窄带。在每个跳频窄带内,携带PDSCH的RBs的相对位置保持不变。

MPDCCH物理层处理和程序

MPDCCH携带LTE-M下行链路控制信息(DCI)。MPDCCH和相应的解调参考信号(DM-RS)在集(107,108,109,110)的一个或多个端口上传输。MPDCCH和EPDCCH的物理层处理阶段和操作非常相似,不同之处在于重复、可选跳频和置乱的应用方式。

  • 重复和打乱块-使用一个或多个连续增强控制信道元素(ECCE)的聚合来发送MPDCCHNRepMPDCCH(>=1)连续的BL/CE下行子帧。这些NRepMPDCCH子帧以块的形式传输Nacc子帧(参见TS 36.211第6.8b.2节[1),并对块中的所有子帧应用相同的置乱顺序。例如,MPDCCH与P-RNTI或SC-RNTI没有关联,且配置为CE模式A,Nacc= 1,如TS 36.211 section 6.8B所述。2 (1]因此,加扰会初始化每个BL / CE子帧,如EPDCCH的情况。NaccFDD双工模式取值为1或4,TDD双工模式取值为1或10。MPDCCH重复的数量由用于特定传输的半静态配置和动态选择的组合来定义。网络半静态配置最大重复征求然后,从该组(1,2,4,8,16,32,64,128,256)然后动态地选择来自SET的特定传输的实际重复(RMAX,RMAX / 2,RMAX / 4,RMAX / 8)。

  • 窄带 -MPDCCH在每个子帧内的单个窄带中以2,4或6个RBs传输。MPDCCH PRB集包含从0开始编号的ECCEs…N'ECCEpk,其中N'ECCEpk是MPDCCH- prb -set p of subframe k中的ecce的数量。一个MPDCCH中使用的ecce的数量由TS 36.211给出1 - 2 (1]如果未配置重复,则为2或4个PRB,以及所有其他案例的表6.8b.1-2。

  • 跳频-如果MPDCCH在多个子帧上重复,则可以选择性地应用子帧间跳频,在CE模式A和CE模式b中,长度为1,2,4,8的子帧块和长度为2,4,8,16的子帧块发生跳频。跳频块长度和跳频偏移是细胞特定的参数。跳频可以超过2个窄带或4个等间距窄带。在每个跳跃窄带内携带MPDCCH的RBs的相对位置保持不变。

物理层处理和程序

与PDSCH类似,LTE- m使用与LTE相同的物理广播信道(PBCH),但可选择重复。

  • 核心PBCH和非核心PBCH -LTE-M PBCH分为两部分;“核心”PBCH,即普通的LTE PBCH,在每帧的第一帧以40ms的周期传输。非核心部分是LTE-M特定的重复,其中“核心”PBCH符号根据双工模式和循环前缀长度最多重复5次。

  • 重复,PBCH重复发生在FDD的当前无线电帧的前帧和子帧0的子帧9中,如TS 36.211表6.6.4-1 [1].对于TDD,重复出现在表6.6.4-2中给出的同一无线电帧的子帧0和5中。核心部分和重复部分的子载体保持不变。注意,与核心部分不同,PBCH重复不应该映射到CSI参考信号所使用的REs。重复次数是根据双工模式和循环前缀长度定义的。对于FDD,所有PBCH核心符号如果普通循环前缀重复4次,如果扩展循环前缀重复3次。对于TDD,如果扩展循环前缀,则所有符号重复3次。对于TDD和普通循环前缀,PBCH核心符号0和1重复5次,符号2和3重复3次。

仿真设置

此示例分为以下步骤:

  • 配置仿真参数(单元格和MPDCCH / PDSCH特定)

  • 创建并编码用于在MPDCCH上传输的DCI消息有效负载

  • 创建并编码一个DL-SCH有效载荷,以便在PDSCH上传输

  • 生成MPDCCH子帧序列和DM-RS的符号,并将它们映射到多子帧资源网格的资源元素中

  • 生成LTE-M PDSCH子帧序列的符号,将它们映射到多子帧资源网格的资源元素中

  • 生成LTE-M PBCH子帧序列的符号,将其映射到多子帧资源网格的资源元素中

  • 应用CP-OFDM调制到最终栅格,以创建相关的基带波形

  • 显示资源网格和时间序列波形的绘图

在第一部分中,我们将指定在后面的部分中用于DCI、MPDCCH和DM-RS创建的仿真参数。本例使用带宽为5MHz、普通循环前缀的LTE FDD载波。单元格范围的设置包含在结构中eNB.,MPDCCH特定参数包含在结构中MPDCCH.结构中包含PDSCH的具体参数pdsch

enb =结构();enb。NDLRB = 25;LTE运营商BWenb。NCellID = 1;单元格IDenb.cellrefp = 1;%特定单元的端口数enb。CFI = 3;% CFI指示器eNB.DuplexMode ='FDD'%双工模式enb.tddconfig = 1;上行/下行配置(TDD)enb。CyclicPrefix ='普通的'%循环前缀持续时间enb。NSubframe = 0;%子帧数enb.nframe = 0;%帧号enb。CSIRSPeriod =“关闭”% CSI-RS周期控制enb.csirsconfig = 0;%CSI-RS配置enb。CSIRefP = enb.CellRefP;% CSI-RS天线接口个数enb。ZeroPowerCSIRSPeriod =“关闭”零功率CSI-RS周期控制enb。ZeroPowerCSIRSConfig = 0;%零功率CSI-RS配置enb。Ng =“六”%HICH组乘数enb。PHICHDuration =“扩展”% PHICH持续时间%设置跳跃特定参数enb。HoppingOffset = 1;%跳频偏移1…maxAvailableNarrowbands (TS 36.331)enb。NChDLNBhop = 2;% MPDCCH/PDSCH跳跃的窄带数(2或4)enb。NChDLNB = 2;一个跳跃/跳频块长度的百分比子帧数
%MPDCCH配置mpdcch = struct();mpdcch.hopping = true;%启用/禁用跳频(仅为1.4MHz)mpdcch。NRepMPDCCH = 8;%MPDCCH重复的总数mpdcch。Epdcchecce = [0 7];MPDCCH使用的ECCE范围(8 ECCE)mpdcch.epdcchtype ='本地化'%传输类型(“本地化”,“分布式”)mpdcch。EPDCCHNID = 1;% Cell ID/MPDCCH ID取决于搜索空间类型mpdcch.epdcchstart = 4;%MPDCCH在每个子帧中启动OFDM符号mpdcch。RNTI = 1;% RNTI用于“本地化”传播

MPDCCH分配 -用于MPDCCH传输的(初始)PRBS由用于MPDCCH传输的PRBS由向宽带载波内的PRB的绝对位置指定的基于0的PRB索引的矢量定义。这些PRB应该落在有效的窄带内。如果为MPDCCH禁用跳频,则将始终在“initprbset”参数指定的PRB中传输MPDCCH候选。如果为MPDCCH启用跳频,则MPDCCH候选将在PRB的相同位置发送,但在TS 36.211第6.8b.5节中定义的不同窄带中。对于在该示例中使用的5MHz LTE载波,有四个窄带,由TS 36.211第6.2.7节给出[1].第一个窄带有PRBS 0 ... 5,第二个有PRBS 6 ... 11,第三个有PRB 13 ... 18,第四个有PRB 19 ... 24。5MHz带内的所有其他PRB在窄带之外落在窄带外,不能用于LTE-M传输。在此示例中,我们使用MPDCCH格式2,其中8个ECCE用于MPDCCH传输。每个PRB插槽对由4个ECCE组成,因此我们需要定义2 PRB的最小分配。在此示例中,我们在第一个窄带中选择第3和第4个PRB

mpdcch.initprbset =(2:3)';mpdcch.initnsubframe = 0;百分比绝对子帧的第一个MPDCCH子帧的数量
%PDSCH配置pdsch =结构();pdsch。跳= true;%启用/禁用跳频(仅为1.4MHz)pdsch。NRepPDSCH = 16;% PDSCH总重复次数pdsch。CEMode =“一个”% A表示CE模式A, B表示CE模式Bpdsch。TxScheme ='port0'%端口0或TxDiversity或Spatial Mux或端口7pdsch。调制=“正交相移编码”%调制方式(QPSK/16QAM)pdsch。NLayers = 1;%层数pdsch.rv = 0;DL-SCH处理的%冗余版本pdsch。RNTI = 1;用于UE的%RNTIpdsch.nscid = 0;%匆忙身份pdsch。TrBlkSizes = 100;%传输块大小

PDSCH分配- - - - - -PRB分配在CE模式A(通过DCI格式6-1a发出信号)的情况下是灵活的,并且在CE模式B的情况下固定(通过DCI格式6-1B的信号)。在CE模式A中,分配可以在一个或多个窄带内,如资源分配类型2所定义的一个或多个窄带内,或者通过资源分配类型0的整个LTE载波带宽。在CE模式B中,分配跨越整个配置窄带的6个PRB或前4个PRB(S)。对于CAT-M1设备,传输位于单个窄带中。对于CAT-M2设备,如果更高的图层参数CE-PDSCH-MAXBANDWIDTH-CONFIG在CE模式B中设置为20MHz,传输可以跨越多个窄带,总体分配最多可达96个prb(分组为宽带,每个宽带由4个窄带组成)。所使用的宽带通过DCI中的宽带组合索引字段发出信号,如TS 36.213表7.1.6-2所示[3.].如果CE-PDSCH-MAXBANDWIDTH-CONFIG设置为5MHz时,传输发生在一个由1,2,3或4个窄带组成的单一宽带上,这取决于LTE载波带宽(NDLRB)。

在本例中,我们使用InitPRBSet参数和initnarrowbandindex.。如果禁用跳频,则LTE-M PDSCH将始终在指定的PRB中传输InitPRBSetinitnarrowbandindex.参数。如果使能跳频,PDSCH将在prb相同的相对位置发射,但在TS 36.211章节6.4.1中定义的不同窄带内[1].如果分配跨越多个窄带或一个或多个宽带,则initnarrowbandindex.应该是指定组成窄带索引的矢量。作为一个例子,如果CE-PDSCH-MAXBANDWIDTH-CONFIG为20MHz, LTE- m传输在20MHz LTE载波内,有4个宽带(0,1,2,3)可用于LTE- m PDSCH传输,并有相应的窄带指标{(0 12 3)(4 5 6 7)(8 9 10 11)(12 13 14 15)}。如果期望的分配是带宽2和3,那么initnarrowbandindex.然后必须设置为[8 9 10 11 12 13 14 15]。

pdsch。InitPRBSet = (1:2) ';基于% 0的PRB指数pdsch.initnarrowBandIndex = 0;基于% 0的宽带指数在这个例子中,当传输超过2时,我们禁用跳频%或更多窄频带如果numel(pdsch. init窄bandindex) > 1 pdsch. numel(pdsch. init窄bandindex)跳= false;mpdcch。跳= false;结尾

启用或禁用PBCH重复

eNB.Reppbcchenable = true;%在DB中指定了MPDCCH,MPDCCH DM-RS,PDSCH和的电源缩放%参考信号(小区RS或DM-RS)mpdcch。MPDCCHPower = 30;mpdcch。MPDCCHDMRSPower = 32;pdsch。ρ= 25;pdsch。RSPower = 80;PBCH核心和代表部件的%功率水平enb。PBCHPower = 33;enb。PBCHRepsPower = 36;% PBCH电池RS代表的功率水平enb。PBCHCellRSRepsPower = 28;

模拟的子帧总数(所有下行子帧都是BL/CE子帧),MPDCCH和PDSCH传输时没有任何子帧间隙

totmtcSubframes = mpdcch.InitNSubframe + mpdcch.NRepMPDCCH + 2 + pdsch.NRepPDSCH;%识别帧中的所有下行链路子帧信息= arrayfun (@ (x) lteDuplexingInfo (setfield (enb,'nsubframe', x)), 0:9);dlsfs = arrayfun (@ (x) strcmpi (x。SubframeType,“下行”),信息);要模拟的绝对子帧总数sfsnumlastFrame = getlastabsSF (dlsfs totmtcSubframes);tsubframes = floor(tmttcsubframes /sum(dlsfs)) *10 + sfsnumlastFrame;%第一个PDSCH子帧的绝对子帧数,这将是2MPDCCH子帧之后的%子帧(假设没有非BL / CE子帧)lastsfformpdcchplus2 = getlastabssf(dlsfs,mpdcch.nrepmpdcch + 2);MPDCCH + 2的最后一个帧中的最后一个子帧号码pdsch.initnsubframe = mpdcch.initnsubframe +地板((mpdcch.nrepmpdcch + 2)/ sum(dlsfs))* 10 + lastsfformpdcchplus2;找到MPDCCH传输的最后一帧绝对子帧lastsfformpdcch = getlastabssf(dlsfs,mpdcch.nrepmpdcch);% MPDCCH的最后一帧的最后一个子帧数mtclastabssfforpdcch = mpdcch.initnsubframe +地板((mpdcch.nrepmpdcch)/ sum(dlsfs))* 10 + lastsfformpdcch;

DCI消息编码

位向量dciBits传递给函数LTEDCIENCODE.的CRC掩蔽和插入、尾咬卷积编码和速率匹配,遵循TS 36.212节5.3.3.2至5.3.3.4。注意,第三个参数LTEDCIENCODE.指定与子帧MPDCCH数据位容量相等的速率匹配输出大小。这里我们使用一个假的26位DCI消息,对应于TS 36.212节5.3.3.1.12中规定的DCI格式6-1A消息。

%找到MPDCCH数据位容量[〜,INFO] = LTEEPDCCHINDICES(eNB,SETFIELD(MPDCCH,'epdcchprbset',mpdcch.initprbset));% #好< SFLD >%定义DCI消息位dcibits =那些(26,1);%创建编码的DCI位CodedDcibits = LTEDCIENCODE(MPDCCH,DRCIBITS,INFO.EVDCCHG);

DL-SCH编码

%找到LTE-M PDSCH数据位容量,这不应该包括PBCH,% PSS, SSS和CSI-RS。所以我们选择了子帧9,它是一个DL%子帧在FDD和TDD双工模式下(注意:子帧9不是DL% TDDConfig 0, TDDConfig 0没有'normal' DL子帧)fullPDSCHsf = 9;[~, fullInfo] = ltePDSCHIndices (setfield (enb,'nsubframe'fullPDSCHsf)、pdsch getPDSCHAllocation (enb pdsch));% #好< SFLD >%定义DL-SCH消息位trData = 1 (pdsch.TrBlkSizes (1), 1);%创建DL-SCH编码位codedTrBlock = lteDLSCH (enb pdsch、fullInfo.G trData);

MPDCCH代

在本例中,我们使用带有MPDCCH格式2和2 PRBs的本地化类型。MPDCCH有2或4个prb且没有重复使用与EPDCCH相同的格式表(TS 36.211 table 6.8A.1-2)。对于所有其他情况,格式由TS 36.211表6.8B.1-2给出。同样使用CE模式A,没有重复和所有的LTE-M子帧,置乱将初始化每一个子帧,对于EPDCCH和cinit是一样的(因为Nacc= 1CEmodeAnabsmpdcch.= 1)。对于EPDCCH和MPDCCH,所有其他处理阶段I. I.符号调制,层映射,预编码和映射到资源元素的映射是相同的。因此,我们使用EPDCCH函数来生成MPDCCH符号和索引。

扰块中的%子帧数Nacc = 1;如果strcmpi (enb。DuplexMode,'FDD')&& mpdcch.nrepmpdcch> = 4 nacc = 4;elseifstrcmpi (enb。DuplexMode,'TDD') & & mpdcch。NRepMPDCCH>= 10 Nacc = 10;结尾%为整个传输创建资源网格。MPDCCH,PDSCH和% DM-RS符号将被映射到这个数组中。注意,我们正在创建由于MPDCCH传输可以在端口上发送,所以4个天线平面的%网格从集合(107,108,109和110)中选择的%subframeSize = lteDLResourceGridSize (enb 4);sfgrid = zeros([subframeSize(1) subframeSize(2)* tosubframes subframeSize(3:end)]); / /结束mpdcchSym = [];%初始化MPDCCH符号mpdschSym = [];%初始化PDSCH符号mpbchcoresymfull = [];%初始化PBCH符号startSubframe = enb.NFrame * 10 + enb.NSubframe;%初始绝对子帧数为了sf = startsubframe +(0:totsubframes -1)
%设置当前绝对子帧和帧号enb。NSubframe = mod(科幻,10);enb。NFrame =地板((sf) / 10);%如果这不是下行子帧,跳过处理duplexInfo = lteDuplexingInfo (enb);如果〜Strcmpi(DuplexInfo.subframetype,“下行”继续结尾%传输MPDCCH如果(sf >= mpdcch.InitNSubframe) && (sf < mtclastabsSfForMPDCCH)%计算当前子帧中使用的PRBSetprbset = gethoppingallocation(eNB,MPDCCH);%计算当前子帧的MPDCCH索引mpdcch.epdcchprbset = prbset;[MPDCCHINDICES,INFO] = LTEEPDCCHINDICES(eNB,MPDCCH);%创建一个空的子帧网格子帧= lteDLResourceGrid (enb 4);%从DCI码字编码MPDCCH符号在重复的情况下,相同的符号在每一个中重复%nrepmpdcch子帧块。根据需要应用跳频如果〜mod(sf,nacc)||isempty(mpdcchsym)mpdcchsym = ltealdcch(eNB,MPDCCH,CodedDibits)* DB2MAG(MPDCCH.MPDCCHPower);结尾%将MPDCCH符号映射到子帧网格子帧(mpdcchIndices) = mpdcchSym;%创建MPDCCH DM-RS%MPDCCH及其参考符号在相同中传输% port(s),只在prb上传输映射%相应的MPDCCH。DM-RS序列与其相同%根据TS 36.211第6.10.3A节中的公式给出的EPDCCHmpdcchDMRS = lteEPDCCHDMRS (enb mpdcch) * db2mag (mpdcch.MPDCCHDMRSPower);%MPDCCH DM-RS符号mpdcchDMRSIndices = lteEPDCCHDMRSIndices (enb mpdcch);% MPDCCH DM-RS指数子帧(mpdcchDMRSIndices) = mpdcchDMRS;%将DM-RS信号映射到网格%现在将当前的子帧分配到整个网格中sfgrid(:,(1:子帧(2))+ SF *子帧(2),:) =子帧;结尾

提单/ CE PDSCH一代

对于LTE-M PDSCH, PBCH、PSS、SSS和CSI-RS RE位置在映射中计算,但在传输中不使用。这意味着匹配容量的速率应该包括这些RE位置,但这些位置的符号不被传输。所以我们相应地创造了编码并戳穿了与冲突位置相对应的符号

如果(科幻> = pdsch.InitNSubframe)%计算当前子帧中使用的PRBSetprbset = getPdschallocation(eNB,PDSCH);%计算当前子帧的PDSCH索引pdsch。PRBSet = PRBSet;mpdschIndices = ltePDSCHIndices (enb pdsch pdsch.PRBSet);%如果子帧包含PBCH,PSS,SSS,CSI-RS或零功率% CSI-RS re,然后我们需要刺穿相应的符号从映射的%,但速率匹配应该是完整的% PDSCH容量忽略这些符号的可能存在。%这是通过设置子帧和tddconfig(如果tdd模式)完成的%的子帧不包含PBCH, PSS和SSS,并关闭%CSI-RS和ZP CSI-RS。全套可能的PDSCH指数是%重新计算每个子帧,因为这些可以改变时,频率%跳跃enbTemp = enb;enbTemp。TDDConfig = 1;% TDDConfig 0没有完整的PDSCH子帧enbTemp。NSubframe = fullPDSCHsf;%将子帧设置为完整的PDSCH子帧enbTemp。CSIRSPeriod =“关闭”% CSI-RS周期控制Enbtemp.zeropowerCsirsperiod =.“关闭”零功率CSI-RS周期控制mpdschindicesfull = ltepdschindices(ENBTEMP,PDSCH,PDSCH.PRBSET);[〜,txmpdschindicespositions] =相交(MPDSchindicesfull,MPDSchindices);%创建一个空的子帧网格子帧= lteDLResourceGrid (enb 4);%从码字编码PDSCH符号在重复的情况下,相同的符号在每一个中重复%nreppdsch子帧块。根据需要应用跳频如果~mod(sf,Nacc) || isempty(mpdschSym) mpdschSym = ltePDSCH(enb,pdsch,codedTrBlock)*db2mag(pdch . rho);结尾%将穿孔的PDSCH符号映射到子帧网格子帧(mpdschindices)= mpdschsym(txmpdschindicespositionspositions;%如果适用,发送特定于ue的参考信号(DM-RS)如果任何(strcmpi (pdsch。TxScheme, {'port5''port7-8'“Port8”“Port7-14”}))UERSindices = LTEDMRSindices(eNB,PDSCH);uerssymbols = LTEDMRS(eNB,PDSCH);子帧(uersindices)= uerssymbols * db2mag(pdsch.rspower);将符号映射到网格中结尾%现在将当前的子帧分配到整个网格中sfgrid(:,(1:子帧(2))+ SF *子帧(2),:) =子帧;结尾

提单/ CE PBCH一代

资源网格中PBCH符号的生成和映射。LTE- m PBCH由正常的LTE“核心”部分和LTE- m特定的重复组成。核心PBCH符号仅存在于第一帧,周期为4帧。

子帧= sfgrid (:, (1: subframeSize(2)) +科幻* subframeSize (2):);如果(mod(eNB.NSUBFRAME,10)== 0)%生成符号,如果它是第一个模拟帧或当mod(NFrame,4)为0时%;如果~mod(enb. nframe,4) || isempty(mpbchCoreSymFull) mpbchCoreSymFull = getMPBCHCore(enb);结尾mpbchCoreIndices = ltePBCHIndices (enb, {'1基于'});%现在提取框架的核心部分mpbchCoreSym = mpbchCoreSymFull(:,国防部(enb.NFrame, 4) + 1);%将PBCH核心符号映射到子帧子帧(mpbchCoreIndices) = mpbchCoreSym * db2mag (enb.PBCHPower);%现在将当前的子帧分配到整个网格中sfgrid(:,(1:子帧(2))+ SF *子帧(2),:) =子帧;%如果PBCH,则重复单元格RS符号和指数%重复启用[mpbchcorecellrssymbols,mpbchcorecellrsindices] = getpbchcorecellrs(eNB);elseifenb。RepPBCHEnable & & strcmpi (enb。DuplexMode,'FDD') & & (mod (enb.NSubframe, 10) = = 9)%如果这是FDD模式的第9个子帧,那么创建核心用于PBCH的下一个帧的%符号和索引%在这个子帧中重复enbNext = enb;enbNext。NSubframe = 0;enbNext。NFrame = enbNext.NFrame + 1;%进入下一帧%如果当前帧包含最后一个PBCH块,那么我们需要%新一组PBCH符号如果mod(enb.NFrame,4)==3 mpbchCoreSymFull = getMPBCHCore(enbNext);结尾%现在提取框架的核心部分mpbchcoresym = mpbchcoresymfull(:,mod(enbnext.nframe,4)+1);mpbchcoreindices = ltepbchindices(enbnext,{'1基于'});[mpbchcorecellrssymbols,mpbchcorecellrsindices] = getpbchcorecellrs(enbnext);结尾% PBCH重复部分如果启用如果(enb.RepPBCHEnable)%得到由重复PBCH符号组成的PBCH重复部分%和重复Cell RS信号及相应的指数[Pbchrepsymbols,Pbchrepindices,pbchcellrsrepsymbols,pbchcellrsrepindices] = getpbchrep(eNB,mpbchcoresym,mpbchcoreindices,mpbchcorecellrssymbols,mpbchcorecellrsindices);%将PBCH重复映射到网格子帧(pbchrepIndices) = pbchrepSymbols * db2mag (enb.PBCHRepsPower);%将单元格RS重复映射到网格子帧(Pbchcellrsrepindices)= pbchcellrsrepsymbols * db2mag(enb.pbchcellrsrepshow);结尾%现在将当前的子帧分配到整个网格中sfgrid(:,(1:子帧(2))+ SF *子帧(2),:) =子帧;
结尾

创建时域基带波形

通过对资源网格进行OFDM调制,生成时域基带波形。得到的矩阵有四列;其中一个将包含MPDCCH的复基带时域波形样本

波形= lteOFDMModulate (enb sfgrid);

绘制传输网格和基带波形

绘制网格和时域基带波形。如果传输使用多个端口,则仅示出了第一端口。请注意,资源网格图使用各个通道的功率电平和信号分配给资源元素的颜色。

%创建了整个资源网格的图像%绘制MPDCCH使用的端口以及所有其他通道的第一个端口图我=图像(abs (sfgrid (:,:, info.EPDCCHPorts (1) + sfgrid (:,: 1)));提出= parula (64);colormap (im.Parent提出);轴xy;标题(sprintf ('LTE-M CEMODE%S下行链路重新网格(nrepmpdcch =%d,nreppdsch =%d)', mpdcch.NRepMPDCCH pdsch.CEMode pdsch.NRepPDSCH)包含(OFDM符号的) ylabel (副载波的%创建图例框以指示与REs关联的通道/信号类型重命名= {“MPDCCH”'mpdcch drs'“PDSCH”“PBCH核心”'PBCH REPS'“细胞RS代表”};clevels =圆(db2mag ([mpdcch。MPDCCHPower mpdcch。MPDCCHDMRSPower pdsch。ρenb。PBCHPower enb。PBCHRepsPower enb.PBCHCellRSRepsPower]));%如果使用DM-RS,请包含在图例中如果任何(strcmpi (pdsch。TxScheme, {'port5''port7-8'“Port8”“Port7-14”}))重命名{end + 1} =dmr的;闪光(最终+ 1)= PDSCH.Rspower;结尾N =元素个数(重命名);L =线((N), (N),“线宽”8);%生成线%根据cmap设置颜色集(L, {“颜色”}, mat2cell(提出(min (1 + clevels长度城市规划机构(cmap)),:), (1, N), 3));%根据cmap设置颜色传奇(重命名{:});%创建单独的控制/数据波形图图绘图(ABS(波形(:,Info.epdcchports(1)))标题(“MPDCCH时域波形”)包含(“样本”) ylabel (“振幅”)图绘图(ABS(波形(:,1)))标题(“PBCH和PDSCH时域波形”)包含(“样本”) ylabel (“振幅”

本地功能

在此示例中使用以下本地功能:

  • calcnarrowbaandprbsets.-计算窄带和相关prb

  • getHoppingAllocation—计算子帧分配

  • getPDSCHAllocation- 计算PDSCH分配

  • getPBCHCore-计算核心PBCH符号和指标

  • getPBCHCoreCellRS-计算核心PBCH符号和指标

  • getPBCHRep- 计算PBCH重复部分

选定的书目

  1. 3GPP TS 36.211 "物理通道和调制"

  2. 3GPP TS 36.212 "多路复用和信道编码"

  3. 3GPP TS 36.213“物理层程序”

  4. 3GPP TS 36.331“无线电资源控制(RRC)协议规范”

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

  6. E. Dahlman, S. Parkvall和J Skold 4G LTE-Advanced Pro和5G之路

本地功能

计算LTE载波带宽的宽带,窄带和prbset函数[prbsets, nNB nWB] = calcNarrowbandPRBSets (NDLRB)窄带和宽带(见36.211第6.2.7节)NDLNB =地板(NDLRB / 6);nnb = 0 :( ndlnb-1);%窄带如果NDLNB >= 4 NDLWB = floor(NDLNB/4);别的NDLWB = 1;结尾nWB = 0: (NDLWB-1);%宽带% prb窄带2 = 0:5;i0 = floor(ndlb /2) - 6*(ndlb /2);prbsets = 0(6元素个数(nNB));为了nb = 1:元素个数(nNB)如果mod(ndlrb,2)&& nnb(nb)> =(ndlnb / 2)prbsets(:,nb)= 6 *(nnb(nb))+ II0 + II + 1;别的prbsets (:, nb) = 6 * (nNB (nb)) + ii0 + 2;结尾结尾结尾%计算跳跃窄带中分配的资源块函数prbset = gethoppingallocation(eNB,CHS)%如果跳频被禁用,分配与初始相同如果~ chs。跳跃prbset = chs.InitPRBSet;返回结尾%跳窄带计算根据TS 36.211第6.8b.5节nNBi0ss = 0;%获取可能的窄带和相关的prbset如果strcmpi (enb。DuplexMode,'FDD') iddelta = 0;别的idelta = enb.NChDLNB-2;结尾J0 =楼层((CHS.INITNSUBFRAME + IDELTA)/enB.NCHDLNB);%获取窄带和相应的资源[prbsets, nNB] = calcNarrowbandPRBSets (enb.NDLRB);%计算该子帧的窄带enb。NSubframe = enb.NFrame * 10 + enb.NSubframe;%获取绝对子帧号nnBi = mod((nNBi0ss + (mod(floor((enb. nsubframe +idelta))/enb。NChDLNB - j0),enb.NChDLNBhop))*enb. hoppinggoffset), numel(nNB));%计算这个子帧的PRBSet,它们在相同的RBs上窄带内%[rbstartIndex,nbstartIndex] = find(prbsets == chs.InitPRBSet(1));[rbendIndex,nbendIndex] = find(prbsets == chs.InitPRBSet(end));如果(isempty(rbstartIndex) || isempty(rbendIndex)) || (nbstartIndex ~= nbendIndex) error('指定的PRBSet无效,必须是单一窄带内的资源');结尾prbset = prbsets (rbstartIndex: rbstartIndex +元素个数(chs.InitPRBSet) 1, nnBi + 1);结尾%计算PDSCH分配函数prbset = getPdschallocation(eNB,PDSCH)如果pdsch.hopping.带有跳跃的% Cat-M1模式prbset = getHoppingAllocation (enb PDSCH);别的%计算窄带中的分配[prbsets, nNB] = calcNarrowbandPRBSets (enb.NDLRB);%计算这个子帧的PRBSet,它们在相同的RBs上%在所有窄波段内rbstartIndex = mod(find(prbsets == pdschr . initprbset(1))-1,6)+1; / /启动prbsetrbendIndex = mod(find(prbsets == pdschr . initprbset (end))-1,6)+1; / /将prbset == pdschr . initprbset (end))如果isempty(rbstartindex)||isempty(rbendindex)错误('指定的PRBSet无效,必须是窄带内的资源');结尾如果任何(pdsch.initnarrowbandindex> max(nnb))错误('指定的init窄频带索引无效,必须从集合0…%d',max(nnb));结尾prbset = prbsets(rbstartindex:rbendindex,pdsch.initnarrowbandindex + 1);prbset = prbset(:);结尾结尾计算单元RS REs和对应“核心”PBCH的符号%的部分函数[Pbchcorecellrssymbols,pbchcorecellrsindices] = getPbchcorecellrs(eNB)%我们需要在(k,l)区域内重复单元格参考信号NscRB = 12;k = (enb.NDLRB*NscRB)/2 -36 + (0) + 1;基于% 1的完全可能的PBCH子载波位置如果strcmpi (enb。CyclicPrefix,'普通的')nsymbdl = 7;别的NsymbDL = 6;结尾l = nsymbdl +(0:3)+ 1;对应于PBCH核心部分的子帧中的基于1的基于OFDM符号编号%注意:可以从中查找单元格RS符号和指数如果提供或可以在这里创建%网格,如下所示cellRSIndices = lteCellRSIndices (enb);cellRSSymbols = lteCellRS (enb);rsgrid = lteDLResourceGrid (enb);rsgrid (cellRSIndices) = cellRSSymbols;%现在移除核心PBCH波段外的所有RS符号excludeSubs = setdiff (1: enb.NDLRB * NscRB k);excludeofdmSymbols = setdiff (1: NsymbDL * 2, l);%现在删除所有不需要的RE位置rsgrid(:,compludeofdmsymbols,:) = 0;rsgrid(不包括:,:) = 0;%在网格中的是要重复的RS符号pbchCoreCellRSIndices =找到(rsgrid);pbchCoreCellRSSymbols = rsgrid (pbchCoreCellRSIndices);结尾计算PRBCH和Cell RS REs和对应的符号%重复部分函数[Pbchrepsymbols,pbchrepindices,pbchcellrsrepsymbols,pbchcellrsrepindices] = getpbchrep(eNB,pbchcoresymbols,pbchcoreindices,pbchcorecellrsssymbols,pbchcorecellrsindices)pbchrepindices = [];pbchrepsymbols = [];symmappings = {};pbchcellrsrepindices = [];pbchcellrsrepsymbols = [];%对于FDD和TDD模式,如果NDLRB = 6,没有重复如果enb。NDLRB = = 6返回结尾%获取PBCH核心部分的子载波[pbchCoreSubcarriers、ofdmSymbols ~] = ind2sub (lteDLResourceGridSize (enb) pbchCoreIndices);获得细胞RS核心部分的子载体[pbchCellRSCoreSubcarriers、ofdmSymbolsCellRS ~] = ind2sub (lteDLResourceGridSize (enb) pbchCoreCellRSIndices);仅在子帧9(帧N-1)和0(帧N)和TDD中%FDD代表%代表在同一帧的子帧0和5%获取代表所在的子帧符号号如果strcmpi (enb。DuplexMode,'FDD'如果strcmpi (enb。CyclicPrefix,'普通的')nsymbdl = 7;如果(mod(enb.nsubframe,10)== 0)symmappings = {5;12;13;[4 14]};elseif(mod(enb.NSubframe,10)==9) symMappings = {[4 8 12];[5 9 13];[6 10 14];11 [7]};结尾别的NsymbDL = 6;如果(mod(enb.nsubframe,10)== 0)symmappings = {[];4;11;12};elseif(mod(enb.NSubframe,10)==9) symMappings = {[4 7];8 [5];9 [6];11 [10]};结尾结尾别的如果strcmpi (enb。CyclicPrefix,'普通的')nsymbdl = 7;如果(mod(enb.NSubframe,10) == 0) symMappings = {[4 12];13 [5];6;7};elseif(国防部(enb.NSubframe 10) = = 5) & & enb。NDLRB>15 symMappings = {[4 8 12];[5 9 13];10 [6];11 [7]};结尾别的NsymbDL = 6;如果(mod(enb.NSubframe,10) == 0) symMappings = {4;5;6;11};elseif(国防部(enb.NSubframe 10) = = 5) & & enb。NDLRB>15 symMappings = {[4 7];8 [5];9 [6];11 [10]};结尾结尾结尾%如果这是一个重复子帧,找到索引如果~ isempty (symMappings)%创建一个空的子帧网格sfgrid = ltedlresourcegrid(eNB);sfgridrs = ltedlresourcegrid(eNB);为了OSYMB = 1:4%所有4个PBCH符号提取每个核心符号映射到一个或多个OFDM%符号coreofdmsymb = pbchcoresymbols(Ofdmsymbols ==(osymb + nsymbdl));coreofdmsymbrs = pbchcorecellrssymbols(Ofdmsymbolscellrs ==(Osymb + nsymbdl));%映射到当前所有新的重复OFDM符号%子帧为了m = 1:元素个数(symMappings {osymb, 1})%为当前符号创建指数(子载波%与核心符号相同)symtoMap = symMappings {osymb 1} (m);sfgrid (pbchCoreSubcarriers (ofdmSymbols = = (osymb + NsymbDL)), symtoMap,:) = coreOFDMsymb;sfgridRS (pbchCellRSCoreSubcarriers (ofdmSymbolsCellRS = = (osymb + NsymbDL)), symtoMap,:) = coreOFDMsymbRS;结尾结尾%根据TS 36.211第6.6.4节,PBCH重复和细胞RS%重复被CSI (& ZP CSI) RS信号刺穿。如此清晰%这些职位csirsIndices = lteCSIRSIndices (enb);sfgrid (csirsIndices) = 0;sfgridRS (csirsIndices) = 0;%现在获得PBCH重复符号和指数pbchrepIndices =找到(sfgrid);pbchrepSymbols = sfgrid (pbchrepIndices);%现在让Cellrs重复符号和索引pbchCellRSrepIndices =找到(sfgridRS);pbchCellRSrepSymbols = sfgridRS (pbchCellRSrepIndices);结尾结尾%获得MPBCH核心部分符号函数mpbchcoresym = getmpbchcore(eNB)bchbits = ltemib(eNB);PBCHBITS = LTEBCH(eNB,BCHBITS);mpbchcoresym = ltepbch(eNB,pbchbits);%重塑到四个部分,继续到4帧mpbchCoreSym =重塑(mpbchCoreSym元素个数(mpbchCoreSym) / 4, 4);结尾%获取用于最后一帧的帧的绝对子帧数信道传输百分比函数sfsnumlastFrame = getlastabsSF(dlsfs,totmtcSubframes) sfslastFrame = mod(totmtcSubframes,sum(dlsfs));最后帧中的%子帧到Tx如果sfslastframe.%找到与要传输的最后一帧相对应的子帧号sfsnumlastFrame =找到(dlsfs sfslastFrame);sfsnumlastFrame = sfsnumlastFrame(结束);别的%不需要部分帧sfsnumlastFrame = 0;结尾结尾