细胞搜索,MIB和SIB1恢复

这个例子说明了LTE工具箱™如何可以用来完全同步,解调和解码的实时eNodeB的信号。前的用户设备(UE)能够与网络进行通信,必须进行小区搜索和选择的程序和获得初始的系统信息。这涉及获取时隙和帧同步,找出小区标识和解码主信息块(MIB)和系统信息块(SIB)。这个例子说明了这个过程和解码MIB和SIB1,第一系统信息块。到解码MIB和SIB1的综合接收机是必需的,能够解调和广大的下行链路信道和信号的解码。

介绍

为了与网络通信,UE必须获取一些基本的系统信息。这是由MIB和sib携带的。MIB载有最重要的系统资料:

  • 系统带宽

  • 系统帧号(SFN)

  • 物理混合自动重复请求(HARQ)指示通道(PHICH)配置

所述MIB是在映射到物理广播信道(PBCH)的广播信道(BCH)进行。这是通过一个固定的编码和调制方案发送,并且可以在初始小区搜索过程之后被解码。与从MIB的UE现在可以解码控制格式指示符(CFI),其表示物理下行链路控制信道(PDCCH)长度所得到的信息。这允许将被解码PDCCH,并且搜寻下行链路控制信息(DCI)消息。DCI消息CRC掩蔽系统信息无线电网络临时标识符(SI-RNTI)指示SIB是在同一子帧进行。的SIB被在广播控制信道(BCCH)的逻辑信道传送。通常,BCCH消息是在下行链路共享信道(DL-SCH),并且在物理下行链路共享信道(PDSCH)发送。的PDSCH传输的格式和资源分配是通过在PDCCH的DCI消息中指示。

该实例中,MIB和SystemInformationBlockType1(SIB1)进行解码。后者被发送到指定的其它系统信息的调度,以如公共陆地移动网络(PLMN)的身份的小区身份的各方面一起。虽然SIB1以固定时间表被发送时,PDSCH携带SIB1的资源分配是动态的并且在相关联的DCI消息中指示。

加载和处理I / Q波形

MATLAB®可用于使用“仪器控制工具箱”™从广泛的仪器中获取I/Q数据。在本例中,使用了带有两个发射天线的单天线I/Q捕获eNodeB。捕获以15.36 Msamples/s进行,这足以正确采样所有有效的eNodeB带宽,最高10 MHz: 1.4 MHz、3 MHz、5 MHz、10 MHz。捕获的数据存储在eNodeBOutput.mat文件中。

可替换地,可以使用LTE工具箱生成合适的LTE信号。这可以通过可变地控制loadFromFile

loadFromFile = 1;将%设置为0以在本地生成eNodeB输出

所述MIB对应于一个BCH传输块。在BCH传输时间间隔(TTI),或发送单个传输块所需要的时间,是40毫秒或4帧。BCH被在4个部分中发射,每个部分映射到一个帧的第一子帧(子帧0)以及可能的是,每个传输是可独立解码的,这取决于信号的条件。为了确保子帧0中接收,捕获至少应为11子帧长,以考虑到该子帧0。对于差信号的条件在捕获开始的可能性,所有4份TTI的可能需要,在这种情况捕获至少应为41个子帧长。类似的情况适用于SIB1;它是在每一个偶数帧的子帧5发送,具有四个不同的冗余版本(RV S)被传递给连续或80毫秒8帧的整个周期。因此,需要捕获的21个子帧,以确保SIB1的(在偶数帧的子帧5)的单个RV的接收,但是,如果信号条件使得所有的RV需要组合需要捕获的高达81子帧。

如果loadFromFile负荷eNodeBOutput.mat%负载I / e节点B输出的Q Capture的eNodeBOutput =双(eNodeBOutput)/ 32768;%样本规模SR = 15.36e6;%采样速率加载的样品其他的RMC = lteRMCDL('R.3');%#确定rmc。NCellID = 17;rmc。TotSubframes = 41;rmc.PDSCH。RNTI = 61;%SIB参数rmc.SIB。使='上';rmc.SIB。DCIFormat ='Format1A';rmc.SIB。所有ocationType = 0; rmc.SIB.VRBStart = 8; rmc.SIB.VRBLength = 8; rmc.SIB.Gap = 0;充满随机位%SIB数据字段,这不是有效的SIB% 信息rmc.SIB.Data =兰迪([0 1],176,1);[eNodeBOutput,〜,信息] = lteRMCDLTool(RMC,[1; 0; 0; 1]);SR = info.SamplingRate;生成的样品的%采样速率结束

在此之前的MIB解码时,UE不知道完整的系统带宽。初级和次级同步信号(PSS和SSS)和PBCH(包含MIB)全部位于系统带宽的中心的72个副载波(6个资源块),允许UE最初解调只是该中心区域。因此,带宽被初始设置为6个资源块。在I / Q波形需要进行相应的重采样。在这个阶段,我们还显示输入信号的频谱eNodeBOutput

%设置一些看家变量:%分离器,用于命令窗口记录隔板= repmat(' - ',1,50);地块%如果(〜存在(“channelFigure”“var”)||〜的isValid(channelFigure))channelFigure =系数(“可见”“关”);结束[spectrumAnalyzer,synchCorrPlot,pdcchConstDiagram] =...hSIB1RecoveryExamplePlots(channelFigure,SR);%PDSCH EVMpdschEVM = comm.EVM();pdschEVM.MaximumEVMOutputPort = TRUE;%,为初始小区搜索的采样速率,使用既定的%lteOFDMInfo配置为6个资源块。enb.CyclicPrefix是集%暂居调用lteOFDMInfo压制默认值%警告(不影响采样率)。基站=结构;%的eNodeB配置结构enb.NDLRB = 6;资源块的数量%ofdmInfo = lteOFDMInfo (setfield (enb'CyclicPrefix''正常'));%#确定如果(的isEmpty(eNodeBOutput))fprintf中(“\ nReceived信号不能为空。\ n”);返回;结束%显示接收信号频谱fprintf中('绘制接收信号频谱…');spectrumAnalyzer(AW​​GN(eNodeBOutput,100.0));如果(SR〜= ofdmInfo.SamplingRate)如果(SR “接收到的信号采样率(%0.3fMs / S)比为小区搜索所需的采样率下/ MIB解码(%0.3fMs / S);小区搜索/ MIB解码可能失败“。,SR / 1E6,ofdmInfo.SamplingRate / 1E6);结束fprintf中('\ nResampling来自%0.3fMs / s到%0.3fMs / s的小区搜索/ MIB解码... \ N',SR / 1E6,ofdmInfo.SamplingRate / 1E6);其他的fprintf中(' \ nResampling不是必需的;接收到的信号以期望的采样率进行小区搜索/ MIB解码(%0.3fMs/s)。,SR / 1E6);结束%缩减像素采样接收到的信号NSAMPLES =小区(ofdmInfo.SamplingRate /轮(SR)*大小(eNodeBOutput,1));nRxAnts =尺寸(eNodeBOutput,2);降频采样=零(NSAMPLES,nRxAnts);对于I = 1:nRxAnts下采样(:,1)=重采样(eNodeBOutput(:,i)中,ofdmInfo.SamplingRate,圆(SR));结束
警告:MATLAB连接器没有运行。警告:MATLAB连接器没有运行。绘制接收信号频谱…重新采样从15.360Ms/s到1.920Ms/s进行单元搜索/ MIB解码…

小区搜索,循环前缀长度和双工模式检测

呼叫lteCellSearch获取单元标识和时间偏移量抵消到第一帧头部。小区搜索重复循环前缀长度和双工模式的每个组合,并与相关性最强的组合允许这些参数被识别。对检测到的小区标识所接收到的信号和PSS / SSS之间的相关性的曲线被产生。该PSS是使用时域相关检测,并使用频域相关检测SSS。之前SSS检测,频率进行使用循环前缀相关偏移估计/校正。时域PSS检测是稳健的小的频率偏移,但较大的偏移可能会降低PSS相关。

fprintf中('\ nPerforming小区搜索... \ N');%设置双工模式和循环前缀长度组合进行搜索;如果这些参数中的任何一个在|enb|中配置,则其值为%假设是正确的如果(~ isfield (enb'DuplexMode'))duplexModes = {“TDD”'FDD'};其他的duplexModes = {enb.DuplexMode};结束如果(~ isfield (enb'CyclicPrefix'))cyclicPrefixes = {'正常'“扩展”};其他的cyclicPrefixes = {enb.CyclicPrefix};结束%进行跨越双工模式和循环前缀长度的小区搜索%的组合和记录与所述最大相关的组合;如果%多单元搜索已配置,本例将解码第一个单元%(最强)检测到的细胞searchalg。MaxCellCount = 1;searchalg。SSSDetection =“PostFFT”;peakMax = -Inf;对于duplexMode = duplexModes对于cyclicPrefix = cyclicPrefixesDuplexMode = DuplexMode {1};enb。CyclicPrefix = CyclicPrefix {1};[enb。NCellID, offset, peak] = lteCellSearch(enb, down, searchalg);enb。NCellID = enb.NCellID (1);抵消=抵消(1);峰=峰(1);如果(峰值> peakMax)enbMax =基站;offsetMax =偏移;peakMax =峰;结束结束结束%使用小区标识,循环前缀长度,双工模式和定时%偏置这给了小区搜索时的最大相关基站= enbMax;偏移量= offsetMax;%计算每个所述三种可能的主小区的相关性%的身份;对于小区身份的相关性建立的峰值%以上与相关的其它两个峰相比%,以主小区标识建立的质量%的相关性。科尔=细胞(1,3);idGroup =地板(enbMax.NCellID / 3);对于I = 0:2 enb.NCellID = idGroup * 3 + MOD(enbMax.NCellID + 1,3);[〜,科尔{I + 1}] = lteDLFrameOffset(ENB,下采样);科尔{I + 1} =总和(相应{I + 1},2);结束阈值= 1.3 * max([corr{2};corr {3}]);根据经验得出的乘数为1.3如果(最大(相应{1})<阈值)警告(同步信号相关性弱;检测到的细胞身份可能不正确。”);结束%返回到原来检测到的单元格标识enb.NCellID = enbMax.NCellID;%绘制PSS/SSS相关性和阈值synchCorrPlot。max([corr{1};阈值)* 1.1);{1}synchCorrPlot ([corr阈值*的(大小{1})(corr)]);%执行定时同步fprintf中(帧开始的定时偏移:%d采样\n',偏移量);下采样下采样=(1 +偏移:端,:);enb.NSubframe = 0;%显示单元格范围的设置fprintf中(“小区搜索后的细胞级设置:\ N”);DISP(ENB);
执行单元的搜索…帧开始的时间偏移量:481采样单元搜索后的单元范围设置:NDLRB: 6 DuplexMode: 'FDD' CyclicPrefix: 'Normal' NCellID: 17 NSubframe: 0

频偏估计和校正

前OFDM解调,任何显著频率偏移必须被去除。频率在I / Q波形的偏移估计和校正使用lteFrequencyOffsetlteFrequencyCorrect。频率偏移是通过循环前缀的相关来估计的,因此可以估计偏移量达到子载波间隔的+/-一半,即+/- 7.5kHz。

fprintf中('\ nPerforming频偏估计... \ N');%对于TDD,TDDConfig和SSC被默认为0。这些参数不%建立的系统,直到SIB1解码,所以在这个阶段,0%值做出最保守的假设(最少下行%子帧和最短的特殊子帧)。如果(strcmpi(enb.DuplexMode,“TDD”enb))。TDDConfig = 0;enb。SSC = 0;结束delta_f = lteFrequencyOffset(ENB,下采样);fprintf中(“频率偏移:% 0.3 fhz \ n”,delta_f);下采样= ltefrequency - correct (enb,下采样,delta_f);
执行频偏估计...频偏:2.663Hz

OFDM解调和信道估计

在OFDM下采样I / Q波形解调,以产生一个资源网格rxgrid。这被用来执行信道估计。HEST为信道估计,是噪声的估计(用于MMSE均衡)和CEC是信道估计器的配置。

对于信道估计,本例假设有4个单元特定的参考信号。这意味着从所有可能的细胞特异性参考信号端口到每个接收器天线的信道估计都是可用的。细胞特异性参考信号端口的真实数目还不清楚。信道估计仅在第一个子帧上执行,即使用第一个子帧大号在OFDM符号rxgrid

用于保守13乘9的导频平均窗,在频率和时间,以减少噪声对导频估计信道估计时的冲击。

%信道估计的配置cec.PilotAverage =“UserDefined”;导频平均化的%类型cec。FreqWindow = 13;频率窗口大小cec.TimeWindow = 9;%时间窗口大小cec。InterpType =“立方”;%2D插值类型cec.InterpWindow =“中心”;%插值窗型cec.InterpWinSize = 1;插值窗口大小%假设为初始解码尝试4小区特定参考信号;%,确保信道估计可用于所有小区特定的参考%的信号enb.CellRefP = 4;fprintf中(“执行OFDM解调。\ n \ n”);griddims = lteResourceGridSize(ENB);%资源网格尺寸L = griddims(2);在子帧中的OFDM符号的数量%%OFDM解调信号rxgrid = lteOFDMDemodulate(ENB,下采样);如果(的isEmpty(rxgrid))fprintf中(在定时同步后,信号短于一个子帧,因此不会进行进一步的解调。);返回;结束%进行信道估计[HEST,巢] = lteDLChannelEstimate(ENB,CEC,rxgrid(:,1:L,:));
执行OFDM解调...

PBCH解调,BCH解码,MIB解析

MIB现在与细胞特异性参考信号端口的数量一起解码,在BCH CRC上作为掩码传输。这个函数ltePBCHDecode建立帧定时模4,并返回这种在nfmod4参数。它还返回矢量的MIB位MIB以及所分配到的细胞特异性参考信号端口的真实数目enb.CellRefP在这个函数调用的输出处。如果单元特定的参考信号端口的数目被解码为enb.CellRefP = 0这表示无法BCH解码。这个函数lteMIB用于解析的比特向量MIB并添加相关领域的配置结构enb。MIB解码之后,所检测的带宽的存在enb.NDLRB

%在解码MIB从第一对应于PBCH%提取资源元素(RE)%子帧通过所有接收天线和信道估计fprintf中('表演MIB解码... \ N');pbchIndices = ltePBCHIndices(ENB);[pbchRx,pbchHest] = lteExtractResources(...pbchIndices,rxgrid(:,1:L,:),HEST(:,1:L,:,:));%解码PBCH[bchBits,pbchSymbols,nfmod4,MIB,enb.CellRefP] = ltePBCHDecode(...基站,pbchRx,pbchHest,巢);%解析MIB位enb = lteMIB(mib, enb);将来自ltePBCHDecode函数的nfmod4值输出合并为%从MIB建立NFrame值是系统帧号%(SFN)模4(它是存储在MIB地板(SFN / 4))enb.NFrame = enb.NFrame + nfmod4;MIB解码之后%显示细胞范围的设置fprintf中(' MIB解码后的小区范围设置:\n');DISP(ENB);如果(enb.CellRefP = = 0)流('MIB解码失败(enb.CellRefP = 0)。\ n \ n');返回;结束如果(enb.NDLRB == 0)fprintf中('MIB解码失败(enb.NDLRB = 0)。\ n \ n');返回;结束
执行MIB解码…在MIB解码后的小区范围设置:NDLRB: 50 DuplexMode: 'FDD' CyclicPrefix: 'Normal' NCellID: 17 NSubframe: 0 CellRefP: 2 PHICHDuration: 'Normal' Ng: 'One' NFrame: 406

OFDM解调的全带宽

已知信号带宽后,将信号重新采样到LTE Toolbox为该带宽使用的名义采样率(请参阅lteOFDMModulate了解详细信息)。频率偏移估计和校正在二次采样信号进行。定时同步和OFDM解调,然后执行。

fprintf中('现在重新启动接收带宽(NDLRB =%d)是已知的... \ N',enb.NDLRB);%重新取样现在我们知道真正带宽ofdmInfo = lteOFDMInfo(ENB);如果(SR〜= ofdmInfo.SamplingRate)如果(SR “接收到的信号采样率(%0.3fMs / S)是比NDLRB =%d所需的采样率下(%0.3fMs / S);PDCCH搜索/ SIB1解码可能失败“。,SR / 1E6,enb.NDLRB,ofdmInfo.SamplingRate / 1E6);结束fprintf中('\ nResampling从%0.3fMs / s到%0.3fMs /秒... \ N',SR / 1E6,ofdmInfo.SamplingRate / 1E6);其他的fprintf中(' \ nResampling不是必需的;接收的信号是在用于NDLRB =%d所需的采样率(%0.3fMs / S)。\ N”,enb.NDLRB,SR / 1E6);结束NSAMPLES =小区(ofdmInfo.SamplingRate /轮(SR)*大小(eNodeBOutput,1));重采样=零(NSAMPLES,nRxAnts);对于i = 1:nRxAnts resam(:,i) = resample(eNodeBOutput(:,i), ofdmInfo。SamplingRate圆(sr));结束%进行频率偏移估计和校正fprintf中('\ nPerforming频偏估计... \ N');delta_f = lteFrequencyOffset(ENB,重采样);fprintf中(“频率偏移:% 0.3 fhz \ n”,delta_f);重采样= ltefrequency - correct (enb,重采样,delta_f);%查找帧的开始fprintf中(执行定时偏移估计…);偏移量= lteDLFrameOffset(ENB,重采样);fprintf中(帧开始的定时偏移:%d采样\n',偏移量);调整信号与帧的开始重新采样的再采样=(1 +偏移:端,:);% OFDM解调fprintf中(“\ nPerforming OFDM解调。\ n \ n”);rxgrid = lteOFDMDemodulate(ENB,重采样);
现在带宽(NDLRB = 50)是已知的重采样...不要求重新启动接收;接收的信号是在用于NDLRB = 50(15.360Ms / s)的期望采样率。执行频率偏移估计...频率偏移:51.925Hz执行定时偏移估计...定时偏移,以帧开始:3848个样本执行OFDM解调...

SIB1解码

本节执行以下步骤:

  • 物理控制格式指示信道(PCFICH)解调,CFI解码

  • PDCCH解码

  • 盲PDCCH搜索

  • SIB位恢复:PDSCH解调和DL-SCH译码

  • 缓冲和重新设置DL-SCH HARQ状态

恢复后的SIB CRC应为0。

这些解码步骤在一个循环为在所接收的信号携带SIB1的子帧的每一次出现进行。如上面提到的,SIB1在每一个偶数帧的子帧5传送,所以输入信号首先被核查,以证实SIB1中的至少一个发生的存在。对于每个子帧SIB1,信道估计幅度响应绘制,由于是接收到的PDCCH的星座。

%检查此帧是否包含SIB1,如果我们没有提前1帧%有足够的数据,否则终止。如果(MOD(enb.NFrame,2)〜= 0)如果(大小(rxgrid,2)> =(L * 10))rxgrid(:,1:(L * 10),:) = [];fprintf中('跳过帧%d(奇数帧不包含SIB1)。\n\n',enb.NFrame);其他的rxgrid = [];结束enb.NFrame = enb.NFrame + 1;结束%预付款项子帧5,或终止,如果我们有少于5个子帧如果(大小(rxgrid,2)> =(L * 5))rxgrid(:,1:(L * 5),:) = [];%删除子帧0〜4其他的rxgrid = [];结束enb.NSubframe = 5;如果(的isEmpty(rxgrid))fprintf中(“接收到的信号中不包含的子帧携带SIB1。\ n \ n”);结束%重置HARQ缓冲器decState = [];%,而我们有更多的数据离开了,尝试解码SIB1(大小(rxgrid,2)> 0)fprintf中(“% s \ n”、分离器);fprintf中('SIB1解码为帧%d \ N',MOD(enb.NFrame,1024));fprintf中('%s的\ n \ n'、分离器);用每组新的8帧作为SIB1重置HARQ缓冲区%的信息可能会有所不同如果(MOD(enb.NFrame,8)== 0)fprintf中(“重置HARQ缓冲区。\ n \ n”);decState = [];结束提取当前子帧rxsubframe = rxgrid(:,1:L,:);%进行信道估计[HEST,巢] = lteDLChannelEstimate(ENB,CEC,rxsubframe);%PCFICH解调,CFI进行解码。原讼法庭现在解调%解码使用类似的资源提取和解码功能%那些BCH接收已经示出。lteExtractResources用于从接收的子帧中提取与PCFICH对应的REs%rxsubframe和信道估计HEST。fprintf中('解码CFI ... \ n \ n');pcfichIndices = ltePCFICHIndices(ENB);%得到PCFICH指数[pcfichRx,pcfichHest] = lteExtractResources(pcfichIndices,rxsubframe,HEST);%解码PCFICHcfiBits = ltePCFICHDecode(enb, pcfichRx, pcfichHest, nest);cfi = lteCFIDecode (cfiBits);%得到CFI如果(isfield (enb'CFI')&& CFI〜= enb.CFI)释放(pdcchConstDiagram);结束enb.CFI = CFI;fprintf中('解码CFI值:%d \ n \ n',enb.CFI);%对于TDD,PDCCH必须盲目地跨越的可能值解码%在TS36.211表6.9-1 PHICH配置因子M_I(0,1,2)。M_I的%值= 0,1和2可以通过配置TDD来实现%的上行链路 - 下行链路配置1,分别为6和0。如果(strcmpi(enb.DuplexMode,“TDD”))tddConfigs = [1 6 0];其他的tddConfigs = 0;%不用于FDD,只用于控制while循环结束alldci = {};(isempty (alldci) & & ~ isempty (tddConfigs))%配置TDD上行链路 - 下行链路配置如果(strcmpi(enb.DuplexMode,“TDD”enb))。TDDConfig = tddConfigs (1);结束tddConfigs(1)= [];%PDCCH解调。该PDCCH现在解调和解码使用类似的资源提取和解码功能%已经显示为BCH和CFI接收pdcchIndices = ltePDCCHIndices (enb);%得到PDCCH指数[pdcchRx,pdcchHest] = lteExtractResources(pdcchIndices,rxsubframe,HEST);%PDCCH进行解码和情节的星座[dciBits,pdcchSymbols] = ltePDCCHDecode(ENB,pdcchRx,pdcchHest,巢);pdcchConstDiagram(pdcchSymbols);%PDCCH盲目搜索系统信息(SI)和DCI解码。%的LTE工具箱提供全盲搜索PDCCH的发现带有指定RNTI(在本例中为SI-RNTI)的任何DCI消息。fprintf中('PDCCH搜索SI-RNTI ... \ n \ n');pdcch =结构(“RNTI”,65535);pdcch.ControlChannelType ='PDCCH';pdcch.EnableCarrierIndication =“关”;pdcch.SearchSpace ='共同';pdcch.EnableMultipleCSIRequest =“关”;pdcch。EnableSRSRequest =“关”;pdcch.NTxAnts = 1;alldci = ltePDCCHSearch(ENB,PDCCH dciBits);%搜索PDCCH的DCI结束%如果DCI被解码,则继续PDSCH / DL-SCH的解码对于I = 1:numel(alldci)DCI = alldci {I};fprintf中(带SI-RNTI的DCI信息:\n');DISP(DCI);从DCI获取PDSCH配置[pdsch, trblklen] = hPDSCHConfiguration(enb, dci, pdcch.RNTI);%如果PDSCH创建配置的,则继续进行解码PDSCH% / DL-SCH如果〜的isEmpty(PDSCH)pdsch.NTurboDecIts = 5;fprintf中(DCI解码后的PDSCH设置:\n');DISP(PDSCH);%PDSCH解调和DL-SCH的解码,以恢复SIB比特。%的DCI消息现在解析,得到的结构%对应的PDSCH携带SIB1,该PDSCH为%解调,最后所接收的位是DL-SCH的解码%生成SIB1位。fprintf中('解码SIB1 ... \ n \ n');%获取PDSCH指数[pdschIndices,pdschIndicesInfo] = ltePDSCHIndices(enb, pdsch, pdsch. prbset);[pdschRx, pdschHest] = lteExtractResources(pdschIndices, rxsubframe, hest);%解码PDSCH[dlschBits,pdschSymbols] = ltePDSCHDecode(ENB,PDSCH,pdschRx,pdschHest,巢);%译码DL-SCH与HARQ组合的软缓冲器的输入/输出如果〜的isEmpty(decState)fprintf中('与先前的传输重组。\ n \ n');结束[SIB1,CRC,decState] = lteDLSCHDecode(ENB,PDSCH,trblklen,dlschBits,decState);%计算PDSCH EVM重新编码的= lteDLSCH(ENB,PDSCH,pdschIndicesInfo.G,SIB1);remod = ltePDSCH(ENB,PDSCH,重新编码);[〜,refSymbols] = ltePDSCHDecode(ENB,PDSCH,remod);[rmsevm,peakevm] = pdschEVM(refSymbols {1},pdschSymbols {1});fprintf中('PDSCH RMS EVM: %0.3f%%\n',rmsevm);fprintf中('PDSCH峰值EVM:%0.3f %% \ n \ n',peakevm);fprintf中('SIB1 CRC:%d \ n'CRC);如果CRC == 0 fprintf中('成功SIB1恢复。\ n \ n');其他的fprintf中('SIB1解码失败。\ n \ n');结束其他的表示从DCI创建一个PDSCH配置%消息失败fprintf中('从DCI消息创建PDSCH的配置失败。\ n \ n');结束结束如果(元素个数(alldci) = = 0)%表示DCI解码失败fprintf中(“DCI解码失败。\ n \ n”);结束%更新信道估计情节图(channelFigure);冲浪(ABS(HEST(:,:,1,1)));hSIB1RecoveryExamplePlots(channelFigure);channelFigure.CurrentAxes.XLim = [0大小(HEST,2)+1];channelFigure.CurrentAxes.YLim = [0大小(HEST,1)+1];%跳过2帧并再次尝试SIB1解码,或终止如果我们%只剩下不到2帧。如果(大小(rxgrid, 2) > = (L * 20)) rxgrid (:, 1: (L * 20):) = [];再删除2帧其他的rxgrid = [];%还不到2帧结束enb.NFrame = MOD(enb.NFrame + 2,1024);结束
--------------------------------------------------SIB1解码为帧406 --------------------------------------------------解码CFI ...解码CFI值:2 PDCCH搜索SI-RNTI ...与SI-RNTI DCI消息:DCIFormat: 'Format1A' CIF:0 AllocationType:0分配:[1x1的结构] ModCoding:6 HARQNo:0 NewData:0 RV:1 TPCPUCCH:0 TDDIndex:0 SRSRequest:0 HARQACKResOffset:RNTI:65535 PRBSet:[8X1 UINT64] NLayers:0 PDSCH设置DCI解码之后2 CSI: '打开' 调制方式:{'QPSK“} RV:1 TxScheme: 'TxDiversity' NTurboDecIts:5解码SIB1 ... PDSCH RMS EVM:27.029%PDSCH峰值EVM:76.752%SIB1 CRC:0成功SIB1恢复。

附录

此示例使用以下辅助功能: