主要内容

NB-IOT小区搜索和MIB恢复

本示例展示了如何使用LTE工具箱™完全同步、解调和解码实时窄带物联网(NB-IoT)下行信号。用户设备(UE)在与网络通信之前,必须执行小区搜索和选择程序,并获得初始系统信息。这包括获取槽位和帧同步,找出单元身份并解码主信息块(MIB)。本示例演示了该过程并对MIB进行了解码。为了对MIB进行解码,需要一个能够对下行信道和信号进行解调和解码的综合接收器。

介绍

由于NB-IOT是LTE基础设施的扩展,NB-IOT波形与LTE的一些相似之处。这两个之间的相似之处包括:

  • 子载波间隔(15kHz)

  • 框架结构(10个子框架,每个子框架2个槽)

  • 帧持续时间(10毫秒)

  • 体育频道

然而,与LTE不同,NB-IOT中的子载波的数量固定为12(一个资源块),其中子载波的数量随带宽而变化。此外,NB-IOT的资源网格上的物理信道映射与LTE的资源网格不同。有关更多信息,请参阅窄带物联网下行波形生成

为了与网络通信,UE必须获得一些基本系统信息。这由MIB和SIBs携带。MIB承载最重要的系统信息:

  • 系统帧号(SFN)

  • SIB1-NB的调度信息

  • LTE-NB的操作模式信息

  • 访问禁止

MIB在映射到窄带物理广播频道(NPBCH)中的广播信道(BCH)上进行[1]。这通过固定的编码和调制方案发送,并且可以在初始小区搜索过程之后解码。MIB对应于一个BCH传输块。发送单个传输块的BCH传输时间间隔(TTI)或发送单个传输块所需的时间为640毫秒或64帧[3.]。BCH在64个部分中发送,每个部分映射到帧的第一子帧(子帧0),并且根据信号条件,每个传输可以独立地解码。为了确保接收到子帧0,捕获应该是至少11个子帧长,以考虑在子帧0期间启动捕获的可能性。对于不良的信号条件,可能需要所有64个部分TTI,在这种情况下捕获应该是至少641个子帧长。有关NPBCH符号的更多详细信息,请参阅窄带物联网下行波形生成

NB-IOT下行链路波形生成和初始化参数

根据TS 36.101附件A.3.12 [4,生成用于窄带物理下行链路共享信道(NPDSCH)性能要求的参考测量信道(RMC)的时域波形。2]。使用类中的GenerateWaveForm方法生成波形NBIoTDownlinkWaveformGenerator.调用方法,一个对象ngen使用?创建并调用该方法生成waveform(ngen)

%初始化nbiotdownlinkwaveformgenerator对象%使用'r.nb.5'和'r.nb.6'的'rc'值进行MIB解码。注意%rmcs'r.nb.5-1','r.nb.6-1'和'r.nb.7'对应于非锚型%不包含所需的NPS,NSS和NPBCH的载体。rc ='r.nb.5';ngen = nbiotdownlinkwaveformgenerator(RC);ngen.config.nncellid = 120;ngen.config.nbrefp = 1;ngen.config.nframe = 640;ngen.config.totsubframes = 50;ngen.config.npbch.datasource ='mib'%生成时域窄带物联网波形[eNodeBoutput,网格,OFDMINFO] =生成WaveForm(ngen);sr = ofdminfo.samplingrate;%引入延迟以模拟相关的未知定时对齐百分比是任意信号捕获。这在接收器处得到补偿%同时同步接收信号。延迟= 50;波形= circshift(eNodeBOutput, delay);%初始化图如果(〜存在('ChannelFigure''var')||〜IsValid(ChannelFigure))ChannEvigure = Figure('可见的''离开');结尾[Spectrumanalyzer,Synchcorlplot,PdcchConstdiagram] =...hSIB1RecoveryExamplePlots (channelFigure sr);%显示接收信号频谱流('\ npplotting接收信号谱... \ n');简介(awgn(波形,100.0));
绘制接收信号频谱…

单元格搜索和定时同步

调用hNBCellSearch函数获取cell身份和定时偏移抵消到第一帧头。产生接收信号与窄带主同步信号(NPSS)/窄带二次同步信号(NSSS)之间的相关性的曲线图被产生用于检测到的小区标识。使用时域相关性检测NPS,并且使用频域相关性检测NSSS。在NSSS检测之前,执行使用循环前缀相关性的频率偏移估计/校正。时间域NPSS检测对于小频率偏移是强大的,但较大的偏移可能会降低NPSS相关性。

%细胞搜索流('\ n informing小区搜索... \ n');alg。SSSDetection ='postfft';alg.maxcellcount = 1;[nncellid,偏移,峰] = hnbcellsearch(波形,all);nbenb = struct;nbenb.nncellid = nncellid;[〜,corr] = ltenbdlframeoffset(setfield(nbenb,'操作模式'“独立”),波形);% #好< SFLD >%作为NB-IOT具有与LTE波形相似的波形结构,使用功能与LTE有关的%与NB-IOT一起使用。为此,创建一个设置结构enb。enb = nbenb;%plot npss / nsss相关和阈值Synchcorlplot.ylimits = [0 max(corr(:))* 1.1];同步载推(Corr);%执行时序同步流(“时间偏移到帧开始:%d样本\ n',抵消);timesynced =波形(1 +抵消:最终,);%显示单元格范围的设置流(单元格搜索后的单元格范围设置:\n);DISP(NBENB);
执行单元格搜索...时序偏移到帧开始:50个示例单元格/宽设置细胞搜索后:Nncellid:120

频率偏移的估计和校正

在OFDM解调之前,任何显著的频率偏移都必须去掉。对I/Q波形中的频率偏移进行了估计和校正lteFrequencyOffsetltefrequencycorrect..频率偏移是通过循环前缀的相关来估计的,因此可以估计偏移达到子载波间距的+/-一半,即+/- 7.5kHz。窄带物联网下行波形产生与LTE上行波形产生类似,因为两种波形都有半子载波偏移。因此,使用LTE上行功能来估计频率偏移,并对窄带物联网OFDM下行收到的波形进行解调。

频率偏移估计流('\n执行频率偏移估计…\n');enb。NULRB = 6;频率偏移计算的%enb。DuplexMode =“FDD”;foffset = ltefrequencyOffset(eNB,倍增,0);流('频率偏移:%0.3FHz \ n', foffset);%补偿频率偏差freqsynced = ltefrequencycorect(eNB,乘时,foffset);
进行频率偏移估计…频率偏移:-0.031赫兹

OFDM解调和信道估计

OFDM下采样I/Q波形被解调以产生一个资源网格rxgrid..这用于执行信道估计。命令是频道估计,是对噪声(MMSE均等)的估计,cec是信道估计器配置。

对于信道估计,示例假设四个小区特定参考信号和两个窄带参考信号。这意味着可以从所有可能的小区特定参考信号端口到每个接收器天线的信道估计。特定于小区的参考信号端口的真实数目尚不清楚。信道估计仅在第一子帧上执行,即使用第一个子帧执行lOFDM符号rxgrid.

在频率和时间上采用保守的13 × 9导频平均窗,以减少信道估计过程中噪声对导频估计的影响。

%信道估计器配置cec。PilotAverage ='用户自定义'%类型的飞行员平均cec.freqwindow = 13;%频率窗口大小cec。TimeWindow = 9;%时间窗口大小cec.interpype ='立方体'%2D插值类型cec.interpwindow ='中心'%插值窗口类型cec.Interpwinsize = 1;%插值窗口大小cec.reference =.'nrs'%NB-IOT下行链路信道估计%假设4个小区特定和2个窄带参考信号,用于初始%解码尝试。这确保了所有可用的通道估计%的参考信号enb.cellrefp = 4;enb.nbrefp = 2;eNB.ntxants = 2;nbenb.nbrefp = 2;流('执行OFDM解调...... \ n \ n');griddims = lteresourcegridsize(eNB);%资源网格尺寸l = griddims(2);子帧中的%OFDM符号数enb.nbulsubcarierspacing =“15 khz”NB-IOT下行链路的%需要DDM解调rxgrid = LTESCFDMADEMODULES(eNB,Freqsynced);NB-IOT中OFDM解调的百分比如果(isempty(rxgrid))fprintf(“定时同步后,信号短于一个子帧,因此不会执行进一步的解调。\ n');返回结尾%进行信道估计enb。NSubframe = 0;%初始化nsubframe以进行信道估计[hest, nest] = lteDLChannelEstimate(enb, cec, rxgrid(:,1:L,:));
执行OFDM解调......

NPBCH解调,BCH解码,MIB解析

MIB现在随着BCH CRC上作为掩码传输的窄带参考信号端口的数量被解码。这个函数Ltenpchdecode.建立帧定时取模64并在nfmod64参数。它还以向量的形式返回MIB位mib以及分配到的窄带参考信号端口的真实数nbenb.nbrefp.在此函数调用的输出。如果窄带参考信号端口的数量被解码为nbenb.nbrefp.=0,这表示BCH解码失败。

%解码MIB%从第一个NPBCH中提取对应的资源元素(REs)所有接收天线的%子帧和信道估计分隔符= repmat (“- - -”,1,50);流('%s \ n',分隔器);流(“执行MIB解码…\ n”);流('%s \ n \ n',分隔器);npbchindices = ltenbchindices(nbenb);[npbchrx,npbchht] = lteextractresouse(npbchindices,...rxgrid(1:12,1:l,:),hest(:,1:l:,:));%解码NPBCHdstate = [];[bchBits, dstate npbchSymbols nfmod64, mib, nbenb。NBRefP] = lteNPBCHDecode (...NBENB,NPBCHRX,NPBCHHEST,NEST,DSTATE);%parse mib bitsnbenb nbenb = hNBMIB (mib);如果(nbenb.nbrefp == 0)fprintf('MIB解码失败(nbenb.nbrefp = 0)。\ n \ n');返回结尾%将lteNPBCHDecode函数中的nfmod64值合并为%从MIB建立的NFRAME值是SFN Modulo 64(它是%作为floor(SFN/64)存储在MIB中。如果nbenb.nbrefp.如果传递了NPBCH解码,则会设置nframe值nbenb.nframe = nbenb.nframe + nfmod64;结尾如果Strcmpi(nbenb.operationMode,“Inband-SamePCI”) nbenb。NCellID = NNCellID;结尾% MIB解码后显示整个单元的设置流('MIB解码后的单元格设置:\ n');DISP(NBENB);
----------------------------------------------------------------表演MIB解码... -------------------------------------------------------------------------电池范围设置MIB解码后:NNCellid:120 NBREFP:1 NFRAME:640 Hypersfn:0 aspenabled:0 operationMode:'inband-someterspci'rofessiontransmissionsib1:0

附录

这个例子使用了以下帮助文件:

选定的书目

  1. 3GPP TS 36.211。“物理渠道和调制。”第三代伙伴关系项目;技术规范组无线接入网;进化的通用地面无线电接入(E-UTRA)。URL:https://www.3gpp.org.

  2. 3 gpp TS 36.101。“用户设备(UE)无线电发射和接收”。第三代伙伴关系项目;技术规范组无线接入网;进化的通用地面无线电接入(E-UTRA)。URL:https://www.3gpp.org.

  3. O. Liberg,M. Sundberg,Y.-P。王,J.Bergman和J. Sachs。蜂窝互联网:技术,标准和性能。elsevier,2018年。