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可以映射到一个或多个资源单元,NRU
TS 36.211 Section 10.1.3.6的定义[1],每个资源单元都可以传输Nrep
次了。
图中的例子显示了与的重复模式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].
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。置乱序列在码字传输的第一个槽中初始化。如果启用了重复,则在每个重复之后重新初始化置乱序列
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结构问题。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));传奇(重命名{:});
选定的参考书目
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”总体描述;第二阶段”
O. Liberg, M. Sundberg, y . p。Wang, J. Bergman和J. Sachs,蜂窝物联网:技术、标准和性能,爱思唯尔,2018。