主要内容

使用下行链路信号检测

这个例子展示了如何使用LTE工具箱™检测与eNodeB相关的UEs的存在。这是通过搜索下行信号的DCI消息和建立一组唯一标识符(C-RNTIs)来实现的。

介绍

在LTE中,物理下行链路控制信道(PDCCH)中携带下行链路控制信息(DCI)消息的形式的控制信息。该DCI消息发送上行链路或从eNodeB到目的地UE的下行链路调度信息,以使UE能够识别的资源上接收物理下行链路共享信道(PDSCH)或物理上行链路共享信道(PUSCH)发射必需的。每个UE被分配被称为C-RNTI(小区无线电网络临时标识符)的标识符。的C-RNTI被用于加扰的DCI消息的CRC比特用于该UE,并且还确定所述PDCCH内的DCI消息的位置。有关更多信息,请参阅PDCCH盲目搜索和DCI解码例子。

本示例的目的是解码PDCCH并查找候选DCI消息。然后从有效消息中获得C-RNTI,给出正在处理的ue的数量及其随时间变化的模式的指示。注意,在本例中,返回所有检测到的rti,而不仅仅是TS 36.321表7.1-1中定义的c - rti范围内的rti [1]。保持这些其他RNTI允许该示例用于识别与系统信息(SI-RNTI)或寻呼(P-RNTI)相关联的DCI消息的发生。

下的波形分析

在此示例中,正在分析的波形存储在文件UEDetectionWaveForm.mat中作为变量rxwaveform..假设带宽,双工模式,循环前缀长度,小区标识,小区特定参考信号端口和PHICH配置的数量都是已知的,并且相应的eNodeB配置变量enb也从文件加载。还可以使用eNodeB配置未知的波形,在这种情况下,需要解码eNodeB配置,如图所示小区搜索,MIB和SIB1恢复例子。

负载UEDetectionWaveForm.Mat;rxwaveform = double(rxwaveform)/ 32768;

同步

执行频率偏移估计和校正和定时同步。

%进行频率偏差估计和校正foffset = ltefrequencyOffset(eNB,RxWaveForm);rxwaveform = LtefRequencyCorrect(eNB,RxWaveForm,Foffset);的第一个完整子帧执行定时同步%波形toffset = ltedlframeoffset(eNB,RxWaveForm);OFDMINFO = LTEOFDMINFO(eNB);sflthength = OFDMINFO.SAMPLINGRATE * 1E-3;OffsetSubframes =楼层(Toffset / Sflength);toffset = toffset  - (offsetsubframes * sflength);rxwaveform = rxwaveform(1 + toffset:结束,:);enb.nsubframe = mod(-offsetsubframes,10);

OFDM解调

在I / Q波形rxwaveform.OFDM解调以产生所接收的资源网格rxgrid

rxgrid = lteofdmdemodulate(eNB,rxwaveform);

信道估计器配置

处理空中捕获的I/Q波形需要信道估计和均衡,因此配置信道估计器参数。

cec.pilotaverage =.'用户自定义'%类型的飞行员平均cec.freqwindow = 13;频率窗口大小cec.timewindow = 9;%时间窗口大小cec.interpype =.“立方”%2D插值类型cec.interpwindow ='中心'%插值窗口类型cec.Interpwinsize = 1;插值窗口大小

ue检测

正在分析的下行链路波形可以携带许多UE的信息。本节试图找到他们的RNTI。此处应用的方法使用了对于有效的DCI消息,CRC位用RNTI屏蔽。因此,假设没有错误(CRC = 0),最后16个解码位对应于RNTI。这种方法在[2]。

这个例子实现了以下算法:

  • 考虑特定于UE的搜索空间中的所有PDCCH格式(0 ... 3)

  • 对于每个PDCCH格式,计算可以承载DCI消息的控制区域中的所有可能的候选。

  • 对于每个候选人,尝试解码DCI消息(考虑具有唯一DCI消息长度的所有可能的DCI格式)。

执行以下步骤来检查译码位是否构成有效的DCI消息(算法的图形表示如下所示):

  • 假设传输中没有错误,即假设CRC = 0.这意味着最后16个解码比特构成C-RNTI。

  • 将DCI消息与16个C-RNTI位分开。

  • 计算新的CRC位并用C-RNTI屏蔽它们。

  • 重新编码DCI消息。

  • 与原来的编码DCI候选人比较重编码的消息。

缺乏在此最后一个步骤的比较错误的装置有效的DCI消息和C-RNTI(UE标识符)已被检测到。在一些情况下,特别是与波形捕获现成的空气,也可以在DCI解码处理出现一些错误。因此,本示例使用的阈值(maxErrors)控制接收的候选位和重新编码的候选位之间的比较中允许允许多少错误。

两个后处理步骤应用于检测到的UE列表,以减少错误检测的数量:

  • 接收到功率(以dB为单位)小于阈值的候选符号的DCI消息minpdcchpower.被排除在外。如果没有这个步骤,接收到的仅由噪声组成的候选比特(即使在低功耗)可以触发错误检测。

  • 在重叠结果的情况下(即一个结果的候选指数是另一个的子集),将选择具有最低数量错误数量的结果。

注意,对于完整性,还搜索公共搜索空间,用于分配系统信息,寻呼或随机访问响应消息的DCI格式1A和1C消息。

允许将检测视为有效的最大比特错误数maxerrors = 2;DB中的%最小PDCCH电源(相对于特定于单元格的参考信号%用于信道估计),以考虑检测有效minpdcchpower = -5.0;初始化结果表结果=表;%在公共搜索空间中获取DCI消息的DCI格式和长度pdcchcommon = struct(“SearchSpace”'常见的');pdcchCommon。ControlChannelType ='pdcch';CIF ='离开'%启用或禁用运营商指示符字段pdcchCommon。EnableCarrierIndication = CIF;[dciInfoCommon, pdcchCommon] = getUniqueDCILengths (enb pdcchCommon);%在特定于UE的搜索中获取DCI消息的DCI格式和长度%的空间。给定格式的DCI消息的长度可能受以下因素的影响%UE特定的高层参数所以所以不同的不同记录这些参数的%唯一长度以及%相应的参数组合pdcchUESpecific =结构(“SearchSpace”“UESpecific”);pdcchuespecific.controlchanneltype ='pdcch';pdcchUESpecific。EnableCarrierIndication = CIF;[dciInfoUESpecific, pdcchUESpecific] = getUniqueDCILengths (enb pdcchUESpecific);%在波形中建立子帧的数量griddims = lteresourcegridsize(eNB);l = griddims(2);nsubframes =楼层(尺寸(rxgrid,2)/ l);%对于波形中的每一个子帧,尝试解码PDCCHstartSubframe = enb.NSubframe;cfi = 0(1、nSubframes);我= 0:nSubframes-1%提取当前子帧rxSubframe = rxgrid(:,(i*L) + (1:L),:);%执行信道估计[hest,nest] = LtedLchanneLeStimate(eNB,CEC,RxSubFrame);%当前子帧包含MIB在%的波形,解码MIB建立帧号如果(enb。NSubframe==0 && i<10) startFrame = decodeMIB(enb,rxSubframe,hest,nest,i);结束%获得PCFICH指标,提取接收PCFICH符号和对应%的信道估计,解调PCFICH,解码和记录CFIpcfichIndices = ltePCFICHIndices (enb);[pcfichRx, pcfichHest] = lteExtractResources (pcfichIndices rxSubframe,命令);pcfichBits = ltePCFICHDecode (pcfichHest, enb, pcfichRx巢);enb。CFI = lteCFIDecode (pcfichBits);cfi (i + 1) = enb.CFI;%获得PDCCH指数pdcchindices = ltepdcchindices(eNB);%提取接收到PDCCH符号和相应的信道估计[pdcchrx,pdcchhest] = lteextractresources(pdcchindices,rxsubframe,hest);%进行PDCCH的解调,以获得接收到的PDCCH比特,其%可能包含一个或多个用户的编码DCI消息[pdcchBits, pdcchSymbols] = ltePDCCHDecode (pdcchHest, enb, pdcchRx巢);%初始化PDCCH格式/候选/ DCI格式的数组%组合,它代表可能的UE(即可能的位置为UE提供下行或上行授权的DCI消息%)可能会= [];UE特定搜索空间的%PDCCH格式可以是0,1,2或3pdcchformat = 0:3 UE = struct();%获得所有PDCCH候选指数和候选人的数量当前PDCCH格式的百分比UE.pdcchformat = pdcchformat;候选人= getpdcchcandidates(eNB,UE);m =大小(候选人,1);每位候选人%m = 1:m%记录PDCCH候选指数问题。候选人=候选人(m:);对于特定于ue的搜索空间中的每个DCI格式dciFormats =字段名(dciInfoUESpecific);dciformatidx = 1:长度(dcormats)%记录DCI格式问题。DCIFormat = dciFormats{dciFormatIdx};%记录此PDCCH格式/候选/ DCI格式%组合作为可能的“UE”。对于具有跨UE特定的高层的%不同的长度%的参数,每个长度被记录为不同%的问题dciLengths = dciInfoUESpecific。(ue.DCIFormat);dimplengthidx = 1:长度(diClencths)UE.DileChength = DiClengths(DileChengtIdX);UE.pdcch = pdcchuichecific。(Ue.dcifordat)(diClendondIDX);可能的可能= [可能的UE];%#OK 结束结束%对于PDCCH格式2或3,记录DCI的可能性此候选位置中的公共搜索空间中的%消息%,格式为1A或1C。这样的DCI消息对应于System%信息,分页或随机访问响应消息相反%,比用于UE的上行链路或下行链路准许,但搜索%在这个例子中为完整性如果(任何(pdcchformat == [2 3])))dciformat = {'Format1A''format1c'} UE.DCIFESAT = DCIFARMAT {1};UE.DINCHENTH = DCIINFOCOMMON。(UE.DCIFERAT);UE.PDCCH = PDCCHCOMMON。(UE.DCIFESAT);可能的可能= [可能的UE];%#OK 结束结束结束结束%对于每个可能的UEUE =可能%从收到的PDCCH位获取接收的候选位(for%DCI解码)BitIdx = UE.Candidate;CandAdateBits = PDCCHBits(BitIdx(1):BitIdx(2));%从收到的PDCCH获取收到的候选符号%符号(用于PDCCH功率估计)。调制顺序QM = 2%用于将候选位指数转换为候选符号%指数(PDCCH总是使用QPSK调制)QM = 2;Symidx = [((BitIDX(1) -  1)/ QM)+ 1位分点(2)/ QM];Candidatesymbols = pdcchsymbols(Symidx(1):Symidx(2));%解码所接收的候选位并获取RNTI。假设A.%CRC通过(CRC = 0),LTEDCIDECODE的第二输出将%对应于rnti[dcimessagebits,rnti] = ltedcidecode(ue.dcilenth,candidatebits);重新编码解码的DCI消息位(使用检测到的RNTI)%并建立重新编码之间的比特错误数%候选位和接收的候选位问题。RNTI = RNTI;dciMessageBits reencodedCandidateBits = lteDCIEncode(问题);numErrors = sum(int8(candidateBits > 0) ~= reencodedCandidateBits);%如果位错误的数量大于maxErrors,则继续%到下一个可能的UE(这里循环体的其余部分不是%执行)如果(NumErrors> MaxErrors)继续结束%从消息比特有效载荷创建DCI消息结构。这是%进行因为对于一些DCI格式(例如格式0与% format 1A),真正的DCI格式中的DCI格式%相同的长度可以由消息位的值确定DCI = LTEDCI(eNB,UE.PDCCH,DCIMessageBits);%为当前DCI消息创建表项结果=结构();结果。子帧=我;结果。DetectedRNTI =字符串(dec2hex (ue.RNTI 4));结果。NumErrors = NumErrors;结果。DCIFormat = string(dci.DCIFormat); result.PDCCHFormat = ue.PDCCHFormat; result.Candidate = ue.Candidate; result.PDCCHPower = round(10*log10(var(candidateSymbols)),2); result.DCI = {dci}; result = struct2table(result);%检查DCI消息是否先前已成功解码%在该子帧以相同的RNTI,DCI格式和启动%候选位置作为当前DCI消息(但使用%不同PDCCH格式)如果(〜isempty(结果))匹配=(结果.subframe ==结果.subframe);匹配=匹配&(结果.detectedrnti ==结果.detectedrnti);匹配=匹配&strcmpi(结果.dciformat,结果.dciformat);匹配=匹配和(结果。andidate(:,1)==结果。andidate(1));匹配=查找(匹配〜= 0);别的比赛= [];结束%如果一个DCI消息满足上面的标准,则必须是较小的PDCCH格式的%,因此代表成功%解码当前信息的一部分,即解码子集%候选控制通道元素(cce)。因此,%以前的结果可以替换为当前的结果。请注意对于较大的PDCCH格式的%将倾向于趋势%将随着候选比特数的增加而增大,因此在低信噪比时%检测到的PDCCH格式可能低于真正的PDCCH%格式(即真实PDCCH的比特中的错误数量%格式超过MaxErrors)如果(isempty(match))结果=[结果;结果];%#OK 别的结果(匹配,:) =结果;结束结束%更新的子帧号enb.nsubframe = mod(enb.nsubframe + 1,10);结束%去除估计PDCCH功率(dB)低于%最小功率阈值。没有这一步,收到候选符号%只包含噪音(即使在低功率)也会触发假%检测如果(〜isempty(结果))结果(结果.pdcchpower 结束%检查结果是否为空如果(Isempty(结果))DISP('没有找到RNTI。');返回结束%在任何给定的子帧中,在结果重叠的情况下(即一个结果的%候选指标是另一个的子集),结果%将选择最低数量的比特错误重叠= [];我=独特(results.Subframe)。”%查找与当前子帧对应的结果行并提取%这些结果sf = find(结果.subframe == i)。';%对于在该子帧的每对结果的a = sf.b = sf ca =结果{a,'候选人'};cb = {b,结果'候选人'};如果第一个结果的候选索引是%第二结果的候选指数如果(ca (1) > = cb (1) & & ca (2) < = cb (2))%如果第一个结果有更多的错误如果(结果{a,'numerrors'}>结果{B,'numerrors'})%标记对中的第一个结果为重叠%(即其标记为删除)重叠= [重叠a];%#OK 结束结束结束结束结束%删除重叠结果:结果(重叠)= [];%为结果表的每行添加标签结果.properties.rowname = strsplit(num2str(1:高度(结果)));

显示结果表

显示检测到的rti表和与检测到的DCI消息相关的其他信息。该表的每一行包括:

  • 子帧:检测到的rti发生的子帧号(相对于接收到的波形的开始)。

  • 侦察了:检测到的RNTI。

  • numerrors.:重新编码候选位和接收的候选位之间的比特错误数(小于或等于maxErrors).

  • dciformat.:DCI消息的DCI格式。注意,在UE检测过程期间,仅使用具有唯一长度的DCI格式,因为只有输出DCI消息的长度影响解码过程(具体地,卷积在卷积解码之前的速率匹配)。在LTE系统中,多个DCI消息对于相同的eNodeB配置可以具有相同的长度。通过被分配传输模式(TM),每个UE在正常系统操作中解决该模糊性。Ts 36.213表7.1-5 [3.]显示给定TM适用哪种DCI格式,给定TM的所有格式都具有唯一的长度。因为这个例子在没有UE的知识和其TMS的情况下操作,所以为UE检测的真正的DCI格式可能与此处的DCI格式不匹配,但长度将匹配。功能LTEDCIINFO.可用于确定其他DCI格式与此处的DCI格式相同的长度。

  • pdcchformat:接收到的DCI消息候选位的PDCCH格式。有关PDCCH格式的更多信息,请参见PDCCH盲目搜索和DCI解码例子。

  • 候选人:DCI消息的PDCCH候选位置的包含[开始,终端]比特指数(基于1-基于)。在整个接收的PDCCH比特集合中接收到的候选位的位置。可以使用用于给定eNodeB配置,PDCCH格式和RNTI的给定eNodeB配置,PDCCH格式和RNTI的整体组合集。ltepdcchspace.函数。

  • pdcchpower.:接收到的与此DCI消息相关联的候选符号(以dB为单位)的功率。

  • DCI:解码的DCI消息结构,假设上面指出的DCI格式是消息的真实DCI格式。

DISP(结果);
子帧DetectedRNTI NUMERRORS DCIFormat PDCCHFormat候选PDCCHPower DCI ________ ____________ _________ __________ ___________ ___________ __________ ____________ 1 0 “9397” 1 “Format0中” 1 1 144 0.32 {1x1的结构} 2 0 “F24A” 0 “Format0中” 2 289 576 3.24 {1x1的结构}3 0 “717A” 0 “Format2A” 2 577 864 3.36 {1x1的结构} 4 1 “717A” 0 “Format2A” 2 1 288 2.99 {1x1的结构} 5 1 “717A” 0 “Format0中” 2 289 576 3.02 {1x1的结构} 6 1 “9397” 0 “Format0中” 1 577 720 -0.22 {1x1的结构} 7 2 “717A” 0 “Format2A” 2 1 288 3.19 {1x1的结构} 8 2 “9397” 0 “Format0中” 1 289 432 0.52 {1x1 struct} 9 3 "4C87" 0 "Format2A" 2 1 288 3.16 {1x1 struct} 10 3 "9397" 0 "Format0" 1 289 432 -0.11 {1x1 struct} 11 3 "96C1" 0 "Format2A" 1 577 720 3.27 {1x1 struct} 12 4 "717A" 0 "Format0" 2 1 288 3.41 {1x1 struct} 13 4 "9397" 2 "Format0" 0 433 504 1.07 {1x1 struct} 14 4 "717A" 1 "Format2A" 1 577 720 3.57 {1x1 struct} 15 5 "9397" 0 "Format0" 0 1 72 2.42 {1x1 struct} 16 5 "96C1" 1 "Format0" 0 145 216 0.6 {1x1 struct} 17 5 "6C27" 2 "Format2C" 0 217 288 1.14 {1x1 struct} 18 5 "717A" 0 "Format0" 1 289 432 5.68 {1x1 struct} 19 5 "4C87" 2 "Format2A" 0 577 648 1.66 {1x1 struct} 20 6 "717A" 0 "Format2A" 2 1 288 2.95 {1x1 struct} 21 6 "9397" 0 "Format0" 1 289 432 0.27 {1x1 struct} 22 6 "077B" 0 "Format0" 1 433 576 6.17 {1x1 struct} 23 7 "FFFF" 0 "Format1A" 2 1 288 0.14 {1x1 struct} 24 7 "9397" 1 "Format0" 1 289 432 1.38 {1x1 struct} 25 7 "4C87" 0 "Format2A" 1 577 720 6.21 {1x1 struct} 26 8 "4C87" 0 "Format2A" 2 1 288 3.03 {1x1 struct} 27 8 "717A" 0 "Format2A" 2 577 864 3.05 {1x1 struct} 28 9 "717A" 0 "Format2A" 2 577 864 3.05 {1x1 struct} 29 10 "4C87" 0 "Format2A" 2 1 288 3.11 {1x1 struct} 30 10 "F24A" 0 "Format0" 2 289 576 3.25 {1x1 struct} 31 10 "9397" 0 "Format2A" 1 721 864 2.98 {1x1 struct} 32 11 "4C87" 0 "Format2A" 2 1 288 2.27 {1x1 struct} 33 11 "717A" 0 "Format0" 2 289 576 2.37 {1x1 struct} 34 11 "F24A" 0 "Format2A" 2 577 864 2.38 {1x1 struct} 35 12 "FFFF" 2 "Format1A" 1 1 144 0.7 {1x1 struct} 36 12 "4C87" 0 "Format2A" 2 865 1152 3.85 {1x1 struct} 37 14 "717A" 2 "Format0" 1 1 144 2.64 {1x1 struct} 38 14 "B073" 2 "Format2" 0 145 216 3.01 {1x1 struct} 39 14 "717A" 0 "Format2A" 2 577 864 3.58 {1x1 struct}

地图检测到RNTIS.

的曲线产生表示所检测到的RNTI与子帧编号。被显示在接收的下行链路资源网格和所述的RNTI用于标记由相应的DCI消息信号通知的PDSCH资源。也显示一个空的上行链路资源网格和显示由任何DCI格式0或格式4消息信号发送的PUSCH资源,并贴有相应的RNTI。问号出现任何RNTI后的量,重新编码的候选比特和接收的候选比特之间的比特错误的数量,numerrors.,大于零(小于或等于maxErrors).这里使用的系统帧号(SFN)使用整数来表示SFN,使用小数(十分位数)来表示SFN中的子帧。

enb。NFrame = startFrame;enb。NSubframe = startSubframe;enb。CFI = CFI;摘要= hPlotDetectedRNTIs(结果,enb, rxgrid);

显示检测到的PDSCH或PUSCH资源分配摘要

最后,显示检测到的PDSCH或PUSCH资源分配的摘要。对于每个检测到的DCI消息,将显示以下内容:

  • 系统帧号(SFN)

  • rnti.

  • 错误的数量

  • DCI格式(和相关链接方向)

  • 分配伪随机位序列

  • 估计分配的​​PRB中所接收的电力

注意,由于没有上行资源网格存在,上行DCI消息的功率估计为-Inf。注意,如果需要每个RNTI的摘要,那么可以很容易地对汇总表进行排序,以对相同RNTI的结果进行分组sortrows(总结,“RNTI”)

disp(总结);
SFN RNTI NUMERRORS DCIFormat LinkDirection PRBSet电源_____ ______ _________ __________ _____________ _______________________________________ _____ 833.3 “9397” 1 “Format0中”, “上行链路”, “[7 8]” -Inf 833.3 “F24A” 0 “Format0中”, “上行链路”,“[9 ...23]“-inf 833.3”717a“0”格式2a“下行链路”“[0 ... 24]”15.98 833.4“717a”0“格式2a”下行链路“”[0 ... 24]“16.24 833.4”717A“0”格式0“”上行链路“”“--inf 833.4”9397“0”格式0“”上行链路“”[20 21]“-inf 833.5”717a“0”格式2a“下行链路”[2 36 7 10 11 14 15 18 19 22 23]“15.95 833.5”9397“0”格式0“”上行链路“”[223]“-INF 833.6”4C87“0”格式2A“下行链路”[0 1 4 5 89 12 12 13 16 17 20 ... 24]“14.9 833.6”9397“0”格式0“”上行链路“”“ - ”-INF 833.6“96C1”0“格式2A”下行链路“[2 3 6 7 1011 14 15 18 19]“15.38 833.7”717a“0”格式0“”上行链路“”[16 17]“-Inf 833.7”9397“2”格式0“”上行链路“[14 15]”-inf 833.7“717a”1“FORMAT2A”“下行链路”“[0 ... 24]”13.96 833.8“9397”0“格式0”“上行链路”[16 17]“-INF 833.8”96C1“1”FORMAT0“上行链路”[14 15]“-INF 833.8”6C27“2”格式2C“”下行链路“[0 ... 3 8 9 12 ... 17 20 21 24]”13.98 833.8“717A”0“Format0“Uplink”“[12 13]”-inf 833.8“4c87”2“格式2a”downlink“”[0 ... 24]“13.98 833.9”717a“0”format2a“downlink”“[0 ...24]" 15.32 833.9 "9397" 0 "Format0" "Uplink" "[20 21]" -Inf 833.9 "077B" 0 "Format0" "Uplink" "[18 19]" -Inf 834 "FFFF" 0 "Format1A" "Downlink" "[0...7]" 17.31 834 "9397" 1 "Format0" "Uplink" "[20 21]" -Inf 834 "4C87" 0 "Format2A" "Downlink" "[8...24]" 16.71 834.1 "4C87" 0 "Format2A" "Downlink" "[20 21]" 17.68 834.1 "717A" 0 "Format2A" "Downlink" "[0...19 22...24]" 18.11 834.2 "717A" 0 "Format2A" "Downlink" "[0...24]" 18.38 834.3 "4C87" 0 "Format2A" "Downlink" "[0 1 4...24]" 17.51 834.3 "F24A" 0 "Format0" "Uplink" "[22 23]" -Inf 834.3 "9397" 0 "Format2A" "Downlink" "[2]" 18.42 834.4 "4C87" 0 "Format2A" "Downlink" "[0...3 6 7 10 11 14 15 18 19 22...24]" 15.9 834.4 "717A" 0 "Format0" "Uplink" "[22 23]" -Inf 834.4 "F24A" 0 "Format2A" "Downlink" "[4]" 16.8 834.5 "FFFF" 2 "Format1A" "Downlink" "[0...13]" 14.12 834.5 "4C87" 0 "Format2A" "Downlink" "[14...24]" 10.18 834.7 "717A" 2 "Format0" "Uplink" "[16 17]" -Inf 834.7 "B073" 2 "Format2" "Downlink" "[7 11 15 19]" 14.08 834.7 "717A" 0 "Format2A" "Downlink" "[0...24]" 14.32

上检测到的RNTI观察

利用结果汇总和绘图可以得出以下观察结果:

  • 系统信息(SI):用于系统信息(SI-RNTI)的RNTI是FFFF HEX。与系统信息块(SIB)相关联的DCI消息可以在SFN = 834.0(nframe = 834,nsubframe = 0)和sfn = 834.5(nframe = 834,nsubframe = 5)中看到。SystemInformationBlockType1(sib1)在偶数帧的子帧5中发生,因此SFN = 834.5中的发生是SIB1。其他SIBS是动态安排的,其中SIB1中包含的调度信息。

  • RNTIS在多个子帧中发生:RNTIs 717A和4C87在整个波形中频繁出现,通常无误差,因此它们很可能与有源终端相对应。

检测过程可能导致由于下行链路信号中的噪声和失真引起的误差。有两种主要类型的错误,下面使用示例描述:

  • 错过了检测:观察SFN 834.6。PDSCH资源块中有能量为0到7.但是,未检测到DCI消息。重新运行模拟设置maxerrors = 3..现在在该地区检测到RNTI 4C87。该RNTI存在于其他子帧中,这意味着这可能是一个真正的UE。

  • 假阳性:在波形的最后一帧中观察RNTI B073的PDSCH分配。它与PDSCH分配717A重叠。考虑到RNTI 717A在整个波形中频繁发生,而RNTI B073解码时有2个错误,RNTI B073很可能是“假阳性”检测。

附录

此示例使用辅助功能:

选定的书目

  1. 3GPP TS 36.321《介质访问控制(MAC)协议规范》

  2. Kumar,Hamed,Katabi和Li。“LTE无线电分析易于访问”,Sigcomm'14(2014):211-222

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

本地功能

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

  • getUniqueDCILengths:获取长度唯一的DCI格式的DCI消息信息

  • decodeMIB:解码主信息块(MIB)以获取帧号

  • getPDCCHCandidates:让所有的PDCCH考生参加

%获取DCI格式的DCI消息信息,具有唯一的长度,%所有UE特定的高层参数功能[infoOut,pdcchOut] = getUniqueDCILengths(enb,pdcchIn) infoOut = [];EnableSRSRequest = {'离开'“上”} pdcchIn。EnableSRSRequest = EnableSRSRequest {1};EnableMultIplecsirequest = {'离开'“上”pdcchin.enablemultiplecsirequest = eNableMultIplecsirequest {1};ntxants = [1 2 4] pdcchin.ntxants = ntxants;%获取所有格式的DCI消息长度% 结构体信息= lteDCIInfo (enb pdcchIn);%将结构转换为字段名称的单元格数组%和价值观格式= fieldnames(信息);sizes = struct2cell(信息);随着使用这些DCI格式,%删除DCI格式3和3A输送功率控制命令而不是资源的%%拨款dci3idx = ismember(格式,{'format3''format3a'});格式(dci3idx)= [];尺寸(dci3idx)= [];%只保留DCI格式1A和1C用于公共搜索% 空间如果(strcmpi(pdcchin.searchspeace,'常见的'))commonidx = ismember(格式,{'Format1A''format1c'});格式=格式(commonidx);尺寸大小= (commonidx);结束%找到独特的大小的指标,第一每个独特尺寸的%发生将保留在%原始订单[~, idx] =独特(猫(2,大小{:}),“稳定”);如果当前的UE特定设置产生唯一尺寸%格式的%(与所有其他格式相比和%特定于ui的设置),然后记录它们如果(isempty(infoOut)) infoOut = cell2struct(大小(idxs),格式(idxs));pdcchOut = cell2struct (repmat ({pdcchIn},大小(idx)),格式(idx));别的sizes_out = struct2cell (infoOut);sizes_out =猫(2,sizes_out {:});我= IDXS。'如果(〜任何(size_out == sizes {i}))格式=格式{i};Infoout。(格式)= [Infoout。(格式)尺寸{i}];pdcchout。(格式)= [pdcchout。(格式)pdcchin];结束结束结束结束结束结束结束%对Master Information Block (MIB)进行解码以获取帧号功能startframe = decodemib(eNB,rxsubframe,hest,nest,i)pbchindices = ltepbchindices(eNB);[pbchrx,pbchhhest] = lteextractresources(pbchindices,rxsubframe,hest);[〜,〜,nfmod4,mibbits] = ltepbchdecode(eNB,pbchrx,pbchhhest,巢);mib = ltemib(mibbits);startframe = double(mib.nframe)+ nfmod4;如果(i> 0)startframe = mod(startframe  -  1,1024);结束结束%获得给定eNodeB配置和UE的所有PDCCH候选者%配置,无需评估所有可能的RNTIS功能pdcchcandidates = getpdcchcandidates(eNB,UE)%PDCCH维度信息pdcchinfo = ltepdcchinfo(eNB);%聚合级别L = 2 ^ UE.pdcchformat;%候选人数量m =楼层(双(pdcchinfo.ncce)/ l);% 1 CCE = 9 REGs = 36 REs = 72位bitsPerCCE = 72;PDCCH比特中的%PDCCH候选指数(基于1)pdcchcandidates = l * bitpercce *(0:m-1)。'+ [1 l * bitpercce];结束