主要内容

Cell搜索,MIB和SIB1恢复

本示例展示了如何使用LTE Toolbox™软件完全同步、解调和解码一个实时eNodeB信号。用户终端在与网络通信之前,必须执行cell搜索和选择过程,然后获取初始的系统信息。该过程包括获取槽位和帧同步、确定单元标识以及解码MIB和系统信息块(sib)。这个例子演示了这个过程,并解码了MIB和SIB1,这是系统信息块的第一个。解码MIB和SIB1需要一个能够解调和解码大部分下行通道和信号的综合系统。

简介

为了与网络通信,终端必须获取一些基本的系统信息。由MIB和sib承载。MIB承载着系统最重要的信息:

  • 系统带宽

  • 系统帧数(SFN)

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

MIB承载在广播通道BCH (broadcast channel)上,并映射到物理广播通道PBCH (physical broadcast channel)上。这是通过固定的编码和调制方案传输的,并且可以在最初的单元搜索过程之后进行解码。利用从MIB获得的信息,UE现在可以解码控制格式指示器(CFI),它指示物理下行链路控制通道(PDCCH)的长度。这允许对PDCCH进行解码,并搜索下行链路控制信息(DCI)消息。用系统信息无线网络临时标识符(SI-RNTI)掩盖的DCI消息CRC表示SIB在同一子帧中携带。sib在BCCH (broadcast control channel)逻辑通道中传输。一般情况下,BCCH消息在下行共享信道(DL-SCH)上承载,在物理下行共享信道(PDSCH)上传输。PDSCH传输的格式和资源分配由PDCCH上的DCI消息表示。

本例对MIB和SystemInformationBlockType1 (SIB1)进行解码。后者被传输以指定其他系统信息的调度,以及单元标识的各个方面,例如公共陆地移动网络(PLMN)标识。尽管SIB1是在固定的时间计划中传输的,但是携带SIB1的PDSCH的资源分配是动态的,并在关联的DCI消息中指示。

负载和过程I/Q波形

MATLAB®可以使用仪器控制工具箱™从各种仪器中获取I/Q数据。在本例中,使用了具有两个发射天线的eNodeB的单天线I/Q捕获。捕获以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)或传输单个传输块所需的时间为40msec或4帧。BCH传输分为4部分,每个部分映射到帧的第一个子帧(子帧0),并且根据信号条件,每个传输都可能是独立可解码的。为了确保接收到子帧0,捕获应该至少有11个子帧长,以考虑捕获在子帧0期间开始的可能性。对于较差的信号条件,可能需要TTI的所有4部分,在这种情况下,捕获应该至少有41个子帧长。类似的情况适用于SIB1;它在每个偶数帧的第5个子帧中传输,有四个不同的冗余版本(rv)连续传输,总周期为80msec或8帧。因此,需要21个子帧来确保接收到SIB1的单个RV(在偶数帧的子帧5中),但如果信号条件允许所有RV需要组合,则需要多达81个子帧的捕获。

如果loadFromFile负载eNodeBOutput.mat加载endeb输出的I/Q捕获eNodeBOutput = double(eNodeBOutput)/32768;%鳞片样本Sr = 15.36e6;%加载样品的采样率其他的rmc = lteRMCDL(“R.3”);% #好< UNRCH >rmc。NCellID = 17;rmc。TotSubframes = 41;rmc.PDSCH.RNTI = 61;% SIB参数rmc.SIB.Enable =“上”;rmc.SIB.DCIFormat =“Format1A”;rmc.SIB.AllocationType = 0;rmc.SIB.VRBStart = 8;rmc.SIB.VRBLength = 8;rmc.SIB.Gap = 0;% SIB数据字段填充随机位,这不是一个有效的SIB%的消息rmc.SIB.Data = randi([0 1],176,1);[eNodeBOutput,~,info] = 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 = figure(“可见”“关闭”);结束(简介、synchCorrPlot pdcchConstDiagram] =...hSIB1RecoveryExamplePlots (channelFigure sr);% PDSCH evmpdschEVM = com . evm ();pdschEVM。MaximumEVMOutputPort = true;初始单元搜索的采样率是使用为6个资源块配置% lteOFDMInfo。enb。设置CyclicPrefix%临时调用lteOFDMInfo来抑制默认值%警告(不影响采样率)。Enb = struct;eNodeB配置结构enb。NDLRB = 6;%资源块数量ofdmInfo = lteOFDMInfo(setfield(enb,“CyclicPrefix”“正常”));% #好< SFLD >如果(isempty (eNodeBOutput))流(\n接收到的信号必须不是空的。\n);返回结束显示接收信号频谱流('\n绘制接收信号频谱…\n');简介(awgn (eNodeBOutput, 100.0));如果(sr ~ = ofdmInfo.SamplingRate)如果(sr < ofdmInfo.SamplingRate)警告('接收到的信号采样率(%0.3fMs/s)低于单元搜索/ MIB解码所需的采样率(%0.3fMs/s);cell搜索/ MIB解码可能失败。1、sr / 1 e6 ofdmInfo.SamplingRate / e6);结束流(从%0.3fMs/s重新采样到%0.3fMs/s用于单元格搜索/ MIB解码…\n'1、sr / 1 e6 ofdmInfo.SamplingRate / e6);其他的流(\n不需要重采样;接收到的信号以单元格搜索/ MIB解码所需的采样率(%0.3fMs/s)。\n'1、sr / e6);结束%下采样接收信号nSamples = ceil(ofdinfo . samplingrate /round(sr)*size(eNodeBOutput,1));nRxAnts = size(eNodeBOutput, 2);downsamples = 0 (nSamples, nRxAnts);i=1:nRxAnts downsampled(:,i) = resample(eNodeBOutput(:,i), ofdmInfo。SamplingRate圆(sr));结束
绘制接收信号频谱…从15.360Ms/s重采样到1.920Ms/s用于单元格搜索/ MIB解码…

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

调用lteCellSearch以获得单元标识和定时偏移量抵消到第一架头。对于循环前缀长度和双工模式的每个组合重复单元搜索,具有最强相关性的组合允许识别这些参数。产生了接收到的信号和用于检测到的单元身份的PSS/SSS之间的相关性图。PSS采用时域相关检测,SSS采用频域相关检测。在SSS检测之前,使用循环前缀相关进行频偏估计/校正。时域PSS检测对小频率偏移具有鲁棒性,但较大的频率偏移会降低PSS相关性。

流(正在执行单元格搜索…\n');设置双工模式和循环前缀长度组合进行搜索;如果如果在|enb|中配置了其中一个参数,则值为%假设是正确的如果(~ isfield (enb“DuplexMode”)) duplexModes = {“TDD”“FDD”};其他的duplexmode = {enb.DuplexMode};结束如果(~ isfield (enb“CyclicPrefix”cyclicPrefixes = {“正常”“扩展”};其他的cyclicPrefixes = {enb.CyclicPrefix};结束跨双工模式和循环前缀长度执行单元格搜索%的组合,并记录相关性最大的组合;如果%多个单元格搜索配置,本例将解码第一个%(最强)检测细胞searchalg。MaxCellCount = 1;searchalg。SSSDetection =“PostFFT”;peakMax = -Inf;duplexMode =双工模式cyclicPrefix = cyclicPrefixes enb。双工模式=双工模式{1};enb。CyclicPrefix = CyclicPrefix {1};[enb。NCellID, offset, peak] = lteCellSearch(enb, downsampling, searchalg);enb。NCellID = enb.NCellID(1);Offset = Offset (1);峰值=峰值(1);如果(峰值>)enbMax = enb;偏移量=偏移量;peak max =峰值;结束结束结束使用小区标识、循环前缀长度、双工模式和定时%偏移量,在单元格搜索时给予最大的相关性enb = enbMax;offset = offsetMax;计算三个可能的主单元格的相关性%的身份;相关性峰为细胞身份建立以上的%与其他两个的相关性峰值进行比较%原代细胞鉴定,以建立质量%的相关性。Corr = cell(1,3);idGroup = floor(enbMax.NCellID/3);I = 0:2 enb。NCellID = idGroup*3 + mod(enbMax。NCellID + i,3);[~,corr{i+1}] = lteDLFrameOffset(enb, downsampled);Corr {i+1} = sum(Corr {i+1},2);结束阈值= 1.3 * max([corr{2};corr {3}]);%乘数的1.3经验获得如果{1} (max (corr) <阈值)警告(同步信号相关性较弱;检测到的细胞身份可能不正确。”);结束返回最初检测到的单元格标识enb。NCellID = enbMax.NCellID;绘制PSS/SSS相关性和阈值synchCorrPlot。YLimits = [0 max([corr{1};阈值)* 1.1);{1} synchCorrPlot ([corr阈值*的(大小{1})(corr)]);%执行定时同步流(帧开始时间偏移量:%d个采样\n,抵消);Downsampled = Downsampled (1+offset:end,:);enb。NSubframe = 0;显示单元格范围的设置流(单元格搜索后的单元格范围设置:\n);disp (enb);
执行单元格搜索…单元格搜索后的单元格范围设置:NDLRB: 6 DuplexMode: 'FDD' CyclicPrefix: 'Normal' NCellID: 17 NSubframe: 0

频偏估计与校正

在OFDM解调之前,任何显著的频率偏移都必须去除。在I/Q波形的频率偏移估计和校正使用lteFrequencyOffset而且lteFrequencyCorrect.频率偏移是通过循环前缀的相关性来估计的,因此可以估计高达+/-一半子载波间距的偏移,即+/- 7.5kHz。

流('\n执行频偏估计…\n');对于TDD, TDDConfig和SSC默认为0。这些参数不是%在系统中建立,直到SIB1被解码,所以在这一阶段%值为0是最保守的假设(最少的下行链路%子帧和最短特殊子帧)。如果(strcmpi (enb。DuplexMode,“TDD”enb))。TDDConfig = 0;enb。SSC = 0;结束delta_f = lteFrequencyOffset(enb, downsampling);流('频偏:%0.3fHz\n', delta_f);downsampled = lteFrequencyCorrect(enb, downsampled, delta_f);
执行频偏估计…频偏:-14.902Hz

OFDM解调与信道估计

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

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

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

%信道估计器配置cec。PilotAverage =“UserDefined”飞行员平均类型cec。FreqWindow = 13;%频率窗口大小cec。TimeWindow = 9;%时间窗口大小cec。InterpType =“立方”% 2D插值类型cec。InterpWindow =“中心”插补窗口类型cec。InterpWinSize = 1;插值窗口大小%%假设4个单元格特定的参考信号用于初始解码尝试;%确保通道估计可用于所有特定于单元格的引用%的信号enb。CellRefP = 4;流('正在进行OFDM解调…\n\n');griddim = lteResourceGridSize(enb);%资源网格维度L = griddimms (2);一个子帧中OFDM符号的数目% OFDM解调信号rxgrid = lteOFDMDemodulate(enb, downsampling);如果(isempty (rxgrid))流('计时同步后,信号短于一个子帧,因此不再执行进一步解调。);返回结束执行信道估计[hest, nest] = 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对应的资源元素(REs)%子帧通过所有接收天线和信道估计流('执行MIB解码…\n');pbchIndices = ltePBCHIndices(enb);[pbchRx, pbchest] = lteExtractResources(...pbchIndices, rxgrid(:,1:L,:), hest(:,1:L,:,:));%解码PBCH[bchBits, pbchSymbols, nfmod4, mib, enb.]CellRefP = ltePBCHDecode(...enb, pbchRx, pbchest, nest);解析MIB位enb = ltimib (mib, enb);从函数ltePBCHDecode中合并nfmod4值输出,如从MIB中建立的NFrame值%即为系统帧号% (SFN) modulo 4(在MIB中存储为floor(SFN/4))enb。NFrame = enb.NFrame+nfmod4;MIB解码后显示单元宽设置流(' MIB解码后的单元范围设置:\n');disp (enb);如果(enb.CellRefP = = 0)流('MIB解码失败(enb.CellRefP=0).\n\n');返回结束如果(enb.NDLRB = = 0)流('MIB解码失败(enb.NDLRB=0).\n\n');返回结束
执行MIB解码…MIB解码后的Cell-wide设置:NDLRB: 50 DuplexMode: 'FDD' CyclicPrefix: 'Normal' NCellID: 17 NSubframe: 0 CellRefP: 2 PHICHDuration: 'Normal' Ng: 'One' NFrame: 406

全带宽OFDM解调

现在已经知道了信号带宽,将信号重新采样到LTE工具箱对该带宽使用的标称采样率(参见lteOFDMModulate详情)。对重采样信号进行频偏估计和校正。然后进行定时同步和OFDM解调。

流('重新启动接收现在带宽(NDLRB=%d)是已知的…\n', enb.NDLRB);重新采样,现在我们知道了真正的带宽ofdmInfo = lteOFDMInfo(enb);如果(sr ~ = ofdmInfo.SamplingRate)如果(sr < ofdmInfo.SamplingRate)警告(接收到的信号采样率(%0.3fMs/s)低于NDLRB=%d (%0.3fMs/s)的期望采样率;PDCCH搜索/ SIB1解码可能失败。”sr / 1 e6, enb.NDLRB ofdmInfo.SamplingRate / 1 e6);结束流(\n从%0.3fMs/s重采样到%0.3fMs/s…\n'1、sr / 1 e6 ofdmInfo.SamplingRate / e6);其他的流(\n不需要重采样;接收信号以期望的采样率NDLRB=%d (%0.3fMs/s)。\n'1、enb.NDLRB sr / e6);结束nSamples = ceil(ofdinfo . samplingrate /round(sr)*size(eNodeBOutput,1));resampled = 0 (nSamples, nRxAnts);i = 1:nRxAnts resampled(:,i) = resample(eNodeBOutput(:,i), ofdmInfo。SamplingRate圆(sr));结束执行频偏估计和校正流('\n执行频偏估计…\n');delta_f = lteFrequencyOffset(enb,重采样);流('频偏:%0.3fHz\n', delta_f);resampled = lteFrequencyCorrect(enb, resampled, delta_f);找到帧的开始流('\n正在执行定时偏移估计…\n');offset = lteDLFrameOffset(enb,重采样);流(帧开始时间偏移量:%d个采样\n,抵消);%与帧开始对齐的信号Resampled = Resampled (1+offset:end,:);% OFDM解调流('\n正在进行OFDM解调…\n\n');rxgrid = lteOFDMDemodulate(enb,重采样);
重新启动接收现在带宽(NDLRB=50)是已知的…不需要重新采样;接收信号在NDLRB=50 (15.360Ms/s)的期望采样率。执行频偏估计…频偏:5.221Hz定时偏量估计…帧开始的定时偏移: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 ),:) = [];流('跳过帧%d(奇数帧号不包含SIB1).\n\n', enb.NFrame);其他的Rxgrid = [];结束enb。NFrame = enb。NFrame + 1;结束前进到子帧5,如果子帧少于5则终止如果(size(rxgrid,2)>=(L*5)) rxgrid(:,1:(L*5),:) = [];删除子帧0到4其他的Rxgrid = [];结束enb。NSubframe = 5;如果(isempty (rxgrid))流('接收信号不包含携带SIB1的子帧。\n\n');结束重置HARQ缓冲区decState = [];当我们有更多的数据时,尝试解码SIB1(size(rxgrid,2) > 0) fprintf(“% s \ n”、分离器);流(帧%d\n的SIB1解码,国防部(enb.NFrame, 1024));流(“% s \ n \ n”、分离器);重置HARQ缓冲区,每组新的8帧作为SIB1% info可能不同如果(mod (enb.NFrame 8) = = 0)流('重置HARQ缓冲区。\n\n');decState = [];结束提取当前子帧rxsubframe = rxgrid(:,1:L,:);执行信道估计[hest,nest] = lteDLChannelEstimate(enb, cec, rxsubframe);% PCFICH解调,CFI解码。CFI现在被解调了%解码使用类似资源提取和解码功能来实现%已显示的BCH接收。lteExtractResources用于%从接收到的子帧中提取PCFICH对应的REs% rxsubframe和通道估计。流(“解码CFI。\ n \ n”);pcfichIndices = ltePCFICHIndices(enb);获取PCFICH指数[pcfichRx, pcfichest] = lteExtractResources(pcfichices, rxsubframe, hest);解码PCFICHcfiBits = ltePCFICHDecode(enb, pcfichRx, pcfichest, nest);cfi = lteCFIDecode(cfiBits);%获得CFI如果(isfield (enb“CFI”) && cfi~=enb.CFI) release(pdchconstdiagram);结束enb。CFI = CFI;流(解码后的CFI值:%d\n\n, enb.CFI);对于TDD, PDCCH必须在可能的值之间盲解码表6.9-1 TS36.211中的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;%不用于软驱,仅用于控制while循环结束Alldci = {};(isempty(alldci) && ~isempty(tddconfig))配置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, pdcchest, nest);pdcchConstDiagram (pdcchSymbols);% PDCCH盲搜索系统信息(SI和DCI解码)。LTE工具箱提供了PDCCH的全盲搜索%任何带有指定RNTI的DCI消息,在本例中为SI-RNTI。流(“PDCCH搜索SI-RNTI…\n\n”);PDCCH = struct(“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-SCHI = 1:数字(alldci) dci = alldci{I};流(带SI-RNTI的DCI消息:\n);disp (dci);从DCI获取PDSCH配置[pdsch, trblklen] = hPDSCHConfiguration(enb, dci, pdch . rnti);%如果创建了PDSCH配置,则继续解码PDSCH% / dl-sch如果~ isempty (pdsch) pdsch。NTurboDecIts = 5;流(' DCI解码后PDSCH设置:\n');disp (pdsch);% PDSCH解调和DL-SCH解码恢复SIB位。% DCI消息现在被解析以给出的配置%对应携带SIB1的PDSCH,则PDSCH为%解调,最后对接收到的比特进行DL-SCH解码%以产生SIB1位。流(“解码SIB1。\ n \ n”);%获取PDSCH指数[pdschIndices,pdschIndicesInfo] = ltePDSCHIndices(enb, pdsch, pdsch. prbset);[pdschRx, pdschHest] = lteExtractResources(pdschIndices, rxsubframe, hest);解码PDSCH[dlschBits,pdschSymbols] = ltePDSCHDecode(enb, pdsch, pdschRx, pdschest, nest);解码DL-SCH软缓冲输入/输出的HARQ组合如果~ isempty (decState)流(“与之前的传输重新组合。\n\n”);结束[sib1, crc, decState] = lteDLSCHDecode(enb, pdsch, trblklen, dlschBits, decState);计算PDSCH EVMrecoded = lteDLSCH(enb, pdsch, pdschIndicesInfo.)G, sib1);remode = ltePDSCH(enb, pdsch, recoded);[~,refSymbols] = ltePDSCHDecode(enb, pdsch, remode);[rmsevm,peakevm] = pdschEVM(refSymbols{1}, pdschSymbols{1});流('PDSCH RMS EVM: %0.3f%%\n', rmsevm);流('PDSCH峰值EVM: %0.3f%%\n\n', peakevm);流('SIB1 CRC: %d\n', crc);如果fprintf == 0“成功恢复SIB1。\n\n”);其他的流('SIB1解码失败。\n\n');结束其他的%表示从DCI创建PDSCH配置%消息失败流(从DCI消息创建PDSCH配置失败。\n\n);结束结束如果(元素个数(alldci) = = 0)%表示DCI解码失败流('DCI解码失败。\n\n');结束更新通道估计图图(channelFigure);冲浪(abs(命令(:,:,1,1)));hSIB1RecoveryExamplePlots (channelFigure);channelFigure.CurrentAxes.XLim = [0 size(hest,2)+1];channelFigure.CurrentAxes.YLim = [0 size(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…DCI message with SI-RNTI: DCIFormat: 'Format1A' CIF: 0 AllocationType: 0 Allocation: [1x1 struct] ModCoding: 6 HARQNo: 0 NewData: 0 RV: 1 TPCPUCCH: 0 TDDIndex: 0 SRSRequest: 0 HARQACKResOffset: 0 PDSCH settings after DCI decoding: RNTI: 65535 PRBSet: [8x1 uint64] NLayers: 2 CSI: 'On' Modulation: {'QPSK'} RV: 1 TxScheme: 'TxDiversity' NTurboDecIts: 5 decoding SIB1…PDSCH RMS EVM: 27.072% PDSCH峰值EVM: 75.981% SIB1 CRC: 0成功的SIB1恢复。

附录

本例使用这些helper函数。