利用下行链路信号检测UE

这个例子展示了LTE工具箱™ 可用于检测与eNodeB相关联的ue的存在。这是通过在下行链路信号中搜索DCI消息并建立正在使用的唯一标识符集(C-RNTIs)来实现的。

介绍

在LTE中,物理下行链路控制信道(PDCCH)以下行链路控制信息(DCI)消息的形式携带控制信息。DCI消息将上行链路或下行链路调度信息从eNodeB发送到目的地ue,以便ue能够识别在物理下行链路共享信道(PDSCH)上接收或在物理上行链路共享信道(PUSCH)上发送所需的资源。每个UE被分配一个称为C-RNTI(蜂窝无线网络临时标识符)的标识符。C-RNTI用于对该UE的DCI消息的CRC比特进行置乱,并且还用于确定DCI消息在PDCCH中的位置。有关详细信息,请参见PDCCH盲搜索与DCI译码例子。

这个例子的目的是为了解码PDCCH,并寻找候选DCI消息。的C-RNTI,然后从有效消息获得,给被寻址的UE的数目,以及它们随时间图案的指示。注意,在这个例子中所有检测到的RNTI被返回,而不仅仅是的RNTI在C-RNTI范围在TS 36.321的表7.1-1 [定义1]. 保留这些其他RNTI允许使用此示例来标识与系统信息(SI-RNTI)或分页(P-RNTI)相关联的DCI消息的出现。

在波形分析

在本例中,所分析的波形存储在文件中uedetection波形.mat作为变量RX波形。假设带宽,双工模式,循环前缀长度,小区标识,细胞特定参考信号港口以及PHICH配置数都是已知的,并且相应的eNodeB配置变量基站也从文件加载。另外,也可以使用一个其波形的eNodeB配置是未知的,在这种情况下,所述eNodeB配置将需要如图中要被解码小区搜索,MIB和SIB1恢复例子。

加载ueDetectionWaveform.mat;rxWaveform =双(rxWaveform)/ 32768;

同步

频率偏移估计和校正和定时同步的处理。

%进行频率偏移估计和校正foffset = lteFrequencyOffset(ENB,rxWaveform);rxWaveform = lteFrequencyCorrect(ENB,rxWaveform,foffset);%对%波形Toffset中= lteDLFrameOffset(ENB,rxWaveform);ofdmInfo = lteOFDMInfo(ENB);sfLength = ofdmInfo.SamplingRate * 1E-3;offsetSubframes =地板(Toffset中/ sfLength);Toffset中= Toffset中 - (offsetSubframes * sfLength);rxWaveform = rxWaveform(1 + Toffset中:端,:);enb.NSubframe = MOD(-offsetSubframes,10);

OFDM解调

I/Q波形RX波形是OFDM解调,以产生接收到的资源网格rxgrid公司

rxgrid = lteOFDMDemodulate(ENB,rxWaveform);

信道估计器配置

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

cec.PilotAverage ='用户自定义';%导频平均类型cec.FreqWindow = 13;%频率窗口大小cec.TimeWindow = 9;%时间窗口大小cec.InterpType ='立方';%2D插值类型cec.窗口间=“中心”;%插值窗型cec.InterpWinSize = 1;%插值窗口大小

UE检测

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

此示例实现以下算法:

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

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

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

执行下面的步骤来检查是否解码比特构成一个有效的DCI消息(该算法的图形表示,还提供如下):

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

  • 分离从16 C-RNTI的比特DCI消息。

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

  • 重新编码的DCI消息。

  • 将重新编码的消息与原始编码的DCI候选消息进行比较。

最后一步的比较中没有错误意味着检测到有效的DCI消息和C-RNTI(UE标识符)。在某些情况下,特别是在空中捕获波形时,DCI解码过程中可能会出现一些错误。因此,本例使用一个阈值(MAXERRORS)来控制多少错误被允许在所接收的候选比特和再编码的候选比特之间的比较。

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

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

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

请注意,为了完整性,公共搜索空间也搜索DCI格式1A和1C消息系统信息,寻呼或随机接入响应消息的分配资源。

比特差错%最大数允许考虑检测为有效最大误差=2;%最小PDCCH功率以dB(相对于小区特定的参考信号%用于信道估计),以考虑检测为有效的minPDCCHPower = -5.0;%初始化结果表结果=表;%获取DCI格式,并在公共搜索空间的长度为DCI消息pdcchCommon =结构('搜索空间''共同');pdcchCommon.ControlChannelType =“PDCCH”;到岸价='关闭';%启用或禁用载波指示器字段pdcchcomon.enablecarriering指示=CIF;[dciInfoCommon,pdcchCommon]=获取唯一文件长度(enb,pdcchCommon);%获取的DCI格式和长度为在UE特定搜索DCI消息% 空间。一个给定格式的一个DCI消息的长度可受%的各种UE特定的高层参数,以便所述一组不同%跨这些参数独特长度被记录时,与沿%对应的参数组合pdcchuspecific=结构('搜索空间''特定');pdcchUESpecific.ControlChannelType =“PDCCH”;pdcchUESpecific.EnableCarrierIndication = CIF;[dciInfoUESpecific,pdcchUESpecific] = getUniqueDCILengths(ENB,pdcchUESpecific);%建立在波形的子帧的数量griddims=lteResourceGridSize(enb);L=griddims(2);nSubframes=floor(size(rxgrid,2)/L);%对于波形中的每个子帧,尝试解码PDCCHstartSubframe = enb.NSubframe;的CFI =零(1,nSubframes);对于I = 0:nSubframes-1%提取当前子帧rxSubframe=rxgrid(:,(i*L)+(1:L),:);%进行信道估计[HEST,巢] = lteDLChannelEstimate(ENB,CEC,rxSubframe);%如果当前子帧包含MIB在%的波形,解码MIB以建立帧号如果(enb.NSubframe==0&&i<10)startFrame=decode mib(enb,rxSubframe,hest,nest,i);结束%获取PCFICH索引,提取接收到的PCFICH符号及其对应的%信道估计、PCFICH解调、CFI解码和记录pcfichIndices = ltePCFICHIndices(ENB);[pcfichRx,pcfichHest] = lteExtractResources(pcfichIndices,rxSubframe,HEST);pcfichBits = ltePCFICHDecode(ENB,pcfichRx,pcfichHest,巢);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(ENB,pdcchRx,pdcchHest,巢);PDCCH格式/候补/ DCI格式的%初始化数组%组合,其代表可能的UE(即,可能的位置%对于为UE提供下行链路或上行链路许可的DCI消息)possibleUEs = [];对于UE特定搜索空间%PDCCH格式可以是0,1,2,或3对于pdcchFormat = 0:3 UE =结构();%得到所有PDCCH候选索引和候选数量M%用于当前PDCCH格式ue.PDCCHFormat格式=pdchformat;candidates=getpdchcandidates(enb,ue);M=大小(candidates,1);%为每位候选人对于m=1:m%记录PDCCH候选索引ue.Candidate =候选(米,:);%对于在UE特定搜索空间中的每个DCI格式dciFormats=字段名(dciInfoUESpecific);对于dciFormatIdx = 1:长度(dciFormats)%记录DCI格式伊夫莫特=dciFormats{dciFormatIdx};%记录此PDCCH格式/candidate/DCI格式%组合作为一个可能的“UE”。对于具有DCI格式%跨UE特定的较高层不同的长度%参数,每个长度都记录为不同的%可能的UEdciLengths = dciInfoUESpecific(ue.DCIFormat)。对于dciLengthIdx = 1:长度(dciLengths)ue.DCILength = dciLengths(dciLengthIdx);ue.PDCCH = pdcchUESpecific(ue.DCIFormat)(dciLengthIdx)。possibleUEs = [possibleUEs UE];%#确定结束结束%对于PDCCH格式2或3,记录DCI的可能性%此候选位置的公共搜索空间中的消息%与格式1A或1C。这样DCI消息对应于系统%的信息,寻呼,或者随机存取响应讯息,而%比UE的上行链路或下行链路授权,但是被搜索%在本实施例中的完整性如果(任何(pdcchFormat == [2 3]))对于dciFormat = {'格式1a''格式1c'} ue.DCIFormat = dciFormat {1};ue.DCILength = dciInfoCommon(ue.DCIFormat)。ue.PDCCH = pdcchCommon(ue.DCIFormat)。possibleUEs = [possibleUEs UE];%#确定结束结束结束结束%对于每个可能的UE对于UE = possibleUEs%获取从接收到的PDCCH位所接收的候选位(%DCI解码)比蒂克斯=ue.候选人;候选位=pdcchBits(bitIdx(1):bitIdx(2));%获取从接收到的PDCCH所接收的候选符号%符号(用于PDCCH功率估计)。调制阶数的Qm = 2%用于将候选位索引转换为候选符号%指数(QPSK调制总是用于PDCCH)Qm=2;symIdx=[((bitIdx(1)-1)/Qm)+1 bitIdx(2)/Qm];候选symbols=pdcchSymbols(symIdx(1):symIdx(2));%对接收到的候选比特进行解码,得到RNTI。假设%CRC通(CRC = 0),从lteDCIDecode输出的第二会%对应于RNTI[dciMessageBits,RNTI] = lteDCIDecode(ue.DCILength,candidateBits);%重新编码所解码的DCI消息位(使用检测到的RNTI)%,建立重新编码之间的位错误的数量%候选位和接收到的候选位ue.RNTI = RNTI;reencodedCandidateBits = lteDCIEncode(UE,dciMessageBits);NUMERRORS =总和(INT8(candidateBits> 0)〜= reencodedCandidateBits);%如果位错误的数量超过MAXERRORS较大,继续%到下一个可能的UE(循环体,这里的作息不%执行)如果(NUMERRORS> MAXERRORS)持续;结束%创建从消息比特有效载荷DCI消息结构。这是%因为某些DCI格式(例如,格式0与%格式1A),真实的DCI格式之间的DCI格式与%相同长度可由消息位的值确定dci=lteDCI(enb,ue.PDCCH公司,dciMessageBits);%创建当前DCI消息表项结果=struct();结果子帧=一;检测结果=字符串(dec2hex(恩蒂,4));结果数字错误=数字错误;结果.DCIFormat=字符串(dci.DCIFormat公司); 结果PDCCHFormat= ue.PDCCHFormat格式; 结果。候选人= ue.候选人; 结果PDCCHPower=圆形(10*log10(var(候选符号)),2);结果.DCI={dci};结果=struct2table(结果);%检查DCI消息之前已经成功解码%在此子帧中使用相同的RNTI、DCI格式并开始%候选位置作为当前DCI消息(但具有%不同的PDCCH格式)如果(〜的isEmpty(结果))匹配=(results.Subframe == result.Subframe);匹配=匹配&(results.DetectedRNTI == result.DetectedRNTI);匹配=匹配&strcmpi(results.DCIFormat,result.DCIFormat);匹配=匹配&(results.Candidate(:,1)== result.Candidate(1));匹配=找到(匹配〜= 0);其他匹配=[];结束%如果DCI消息满足上述条件,则它必须%对于较小的PDCCH格式,因此表示成功%解码当前消息的一部分,即解码子集%所述候选控制信道元素(CCE)的。因此,以往%结果可能与目前的结果进行更换。注意%对于较大的PDCCH格式,位错误的数量将趋于%要大些,因为在低SNR是多个候选比特,所以%此处检测到的PDCCH格式可能低于真实的PDCCH%格式(即真实PDCCH的位错误数%格式超过MAXERRORS)如果(的isEmpty(匹配))结果= [结果;结果];%#确定其他结果(匹配,:) =结果;结束结束%更新子帧编号enb.NSubframe = MOD(enb.NSubframe + 1,10);结束%删除估计的PDCCH功率(单位为dB)小于%最小功率阈值。如果没有此步骤,则接收到候选符号%仅由噪声组成(即使在低功率下)也会触发错误%检测如果(~isempty(results))结果(结果.PDCCHPower结束%检查结果为空如果(的isEmpty(结果))DISP(“找不到RNTIs。”);返回;结束%在任何给定子帧中,在结果重叠的情况下(即%一个结果的候选索引是另一个结果的子集)%的位错误的最低数量将被选择重叠= [];对于i=唯一(结果。子帧).'%查找与当前子帧相对应的结果行并提取%那些结果SF =找到(results.Subframe == I)'。%对于此子帧中的每一对结果对于一SF =对于B = SF CA = {结果一个,'候选人'};CB =结果{B,'候选人'};%如果第一个结果的候选人指数的一个子集%第二个结果的候选指数如果(CA(1)> = CB(1)&& CA(2)<= CB(2))%如果第一个结果具有更多的错误如果(结果{A,'NUMERRORS'}>结果{b,'NUMERRORS'})%将这对中的第一个结果标记为重叠%(即标记以便于拆卸)重叠=[重叠a];%#确定结束结束结束结束结束%删除重叠结果结果(重叠,:) = [];%为结果表的每一行添加标签results.Properties.RowNames = strsplit(num2str(1:高度(结果)));

显示结果表

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

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

  • 已检测到RNTI:检测到的RNTI。

  • 数字:重新编码的候选位和接收的候选位之间的位错误数(小于或等于MAXERRORS)。

  • DCIFormat:DCI消息的DCI格式。注意,在UE检测过程中,仅使用具有唯一长度的DCI格式,因为只有输出DCI消息的长度影响解码过程(具体地说,在卷积解码之前的速率匹配)。在LTE系统中,对于相同的eNodeB配置,多个DCI消息可以具有相同的长度。这种模糊性在正常的系统操作中被分配给每个UE一个传输模式(TM)来解决。TS 36.213表7.1-5[3]显示哪些DCI格式适用于给定的TM,并且给定TM的所有格式都具有唯一的长度。由于该示例在不知道UE及其TMs的情况下操作,因此在这里,为UE检测到的真实DCI格式可能与DCI格式不匹配,但是长度将匹配。功能lteDCIInfo可以用来确定哪些其他DCI格式具有相同的长度作为这里的DCI格式。

  • PDCCHFormat:用于DCI消息所接收的候选的比特的PDCCH格式。有关PDCCH格式的详细信息,请参阅PDCCH盲搜索与DCI译码例子。

  • 候选人:本包容[开始,结束]位索引(从1开始)的DCI消息,即在所述一组整体接收到的PDCCH比特的接收的候选的比特的位置的PDCCH候选位置的。整体组PDCCH搜索空间候选对于一个给定的eNodeB配置,PDCCH格式和RNTI可以使用发现ltePDCCHSpace功能。

  • 功率:与此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.01 {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.17 {1x1 struct} 10 3 "9397" 0 "Format0" 1 289 432 -0.11 {1x1 struct} 11 3 "96C1" 0 "Format2A" 1 577 720 3.28 {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.58 {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.67 {1x1 struct} 20 6 "717A" 0 "Format2A" 2 1 288 2.95 {1x1 struct} 21 6 "9397" 0 "Format0" 1 289 432 0.26 {1x1 struct} 22 6 "077B" 0 "Format0" 1 433 576 6.17 {1x1 struct} 23 7 "FFFF" 0 "Format1A" 2 1 288 0.13 {1x1 struct} 24 7 "9397" 1 "Format0" 1 289 432 1.38 {1x1 struct} 25 7 "4C87" 0 "Format2A" 1 577 720 6.2 {1x1 struct} 26 8 "4C87" 0 "Format2A" 2 1 288 3.03 {1x1 struct} 27 8 "717A" 0 "Format2A" 2 577 864 3.04 {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.26 {1x1 struct} 31 10 "9397" 0 "Format2A" 1 721 864 2.99 {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.71 {1x1 struct} 36 12 "4C87" 0 "Format2A" 2 865 1152 3.85 {1x1 struct} 37 14 "717A" 1 "Format0" 1 1 144 2.64 {1x1 struct} 38 14 "B073" 2 "Format2" 0 145 216 3.02 {1x1 struct} 39 14 "717A" 0 "Format2A" 2 577 864 3.59 {1x1 struct}

绘制检测到的RNTIs

生成一个显示检测到的RNTIs与子帧数的图。显示接收到的下行链路资源网格,并使用rnti来标记由相应DCI消息发出信号的PDSCH资源。还将显示空的上行链路资源网格,并且显示由任何DCI格式0或格式4消息发出信号的PUSCH资源,并用相应的RNTIs标记。在任何RNTI之后出现问号,对于该RNTI,重新编码的候选比特和接收的候选比特之间的比特错误数,数字,大于零(小于或等于MAXERRORS)。这里所用的系统帧号(SFN中)使用整数来表示SFN和小数(十分之一)来表示SFN内的子帧。

enb.n帧=开始帧;enb.NSubframe公司=开始帧;enb.CFI公司=CFIs;summary=hPlotDetectedRNTIs(结果,enb,rxgrid);

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

最后的总结检测显示PDSCH或PUSCH资源分配。对于每一个检测到的DCI消息被显示在下面:

  • 系统帧号(SFN)

  • RNTI

  • 错误数

  • DCI格式(和相关联的链路方向)

  • 分配的PRB

  • 在分配的PRB的接收功率的估计

注意,由于不存在上行链路资源网格,上行链路DCI消息的估计功率将为-Inf。注意,如果需要每个RNTI的摘要,则可以使用索特罗斯(总结,“RNTI”)

显示(摘要);
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 ”Format2A“ 的 ”下行链路“ ”[0 ... 24]“ 15.98 833.4 ”717A“ 0 ”Format2A“ 的 ”下行链路“ ”[0 ... 24]“ 16.24 833.4” 717A“0 ”Format0中“, ”上行链路“, ”[22 23]“ -Inf 833.4 ”9397“ 0 ”Format0中“, ”上行链路“, ”[20 21]“ -Inf 833.5 ”717A“ 0 ”Format2A“ 的 ”下行链路“”[2 36 7 10 11 14 15 18 19 22 23] “15.95 833.5 ”9397“ 0 ”Format0中“, ”上行链路“, ”[22 23]“ -Inf 833.6 ”4C87“ 0 ”Format2A“ 的 ”下行链路“”[0 1 4 5 89 12 13 16 17 20 ... 24] “14.9 833.6 ”9397“ 0 ”Format0中“, ”上行链路“, ”[22 23]“ -Inf 833.6 ”96C1“ 0 ”Format2A“ 的 ”下行链路“”[2 3 6 7 1011 14 15 18 19]” 15.38 833.7 “717A” 0 “Format0中”, “上行链路”, “[16 17]” -Inf 833.7 “9397” 2 “Format0中”, “上行链路”, “[14 15]” -Inf 833.7 “717A”1 “Format2A” 的 “下行链路” “[0 ... 24]” 13.96 833.8 “9397” 0 “Format0中”, “上行链路”, “[16 17]” -Inf 833.8 “96C1” 1“佛rmat0" , “上行链路”, “[14 15]” -Inf 833.8 “6C27” 2 “Format2C” 的 “下行链路” “[0 ... 3 8 9 12 ... 17 20 21 24]” 13.98 833.8 “717A” 0“Format0" 中, “上行链路”, “[12 13]” -Inf 833.8 “4C87” 2 “Format2A” 的 “下行链路” “[0 ... 24]” 13.98 833.9 “717A” 0 “Format2A” 的 “下行链路”“[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" 1 "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

检测到的RNTIs的观察

以下意见可使用结果的汇总和情节进行:

  • 系统信息(SI):用于系统信息(SI-RNTI)的RNTI为FFFF十六进制。与系统信息块(SIB)相关的DCI消息可以在SFN = 834.0(NFrame = 834,NSubframe = 0)和SFN = 834.5(NFrame = 834,NSubframe = 5)中可以看出。SystemInformationBlockType1(SIB1)发生在偶数帧的子帧5,所以在SFN = 834.5发生是SIB1。其他SIB被动态调度,调度信息包含在SIB1。

  • RNTI的多个子帧中发生:该RNTI集合717A和4C87频繁出现在整个波形,通常以零次失误,所以他们可能对应于活动UE。

检测过程可导致由于在下行链路信号的噪声和失真错误。主要有两种类型的错误,下面通过实施例,这些描述:

  • 漏检:观察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. 库马尔·哈米德,Katabi和李。“LTE无线分析容易,而且有残疾人”,SIGCOMM '14(2014):211-222

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

本地函数

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

  • getUniqueDCILengths:获得DCI消息信息DCI格式具有独特的长度

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

  • getpdcch候选:获取所有候选PDCCH

%获取DCI格式具有独特的长度DCI消息信息,跨越%所有特定于UE的高层参数功能[infoOut,pdcchOut] = getUniqueDCILengths(ENB,pdcchIn)infoOut = [];对于EnableSRSRequest = {'关闭''上'} pdcchIn.EnableSRSRequest = EnableSRSRequest {1};对于EnableMultipleCSIRequest = {'关闭''上'} pdcchIn.enablemultiplecsirect请求=启用multiplecsirest{1};对于NTxAnts = [1 2 4] pdcchIn.NTxAnts = NTxAnts;%找所有格式的DCI消息的长度,作为% 结构体信息= lteDCIInfo(ENB,pdcchIn);%转换结构进字段名称的单元阵列%和价值观formats=fieldnames(info);size=struct2cell(info);%删除DCI格式3和3A,因为这些DCI格式用于%用于传输功率控制命令,而不是资源%分配dci3idx = ismember(格式,{'格式3''Format3A'});格式(dci3idx)=[];大小(dci3idx)=[];%仅保留DCI格式1A和1C的共同搜索%空间如果(strcmpi)(pdcchIn.搜索空间,'共同'))commonidx=ismember(格式{'格式1a''格式1c'});格式=格式(commonidx);尺寸=尺寸(commonidx);结束%找到唯一大小的索引,第一个每个唯一的大小发生%将被保留在%原始顺序[〜,idxs] =唯一的(猫(2,尺寸{:}),'稳定');%如果当前特定UE的设置产生独特的尺寸%为任何格式(相对于所有其他格式和%到目前为止特定于UE的设置),然后记录它们如果(的isEmpty(infoOut))infoOut = cell2struct(大小(idxs),格式(idxs));pdcchOut = cell2struct(repmat({pdcchIn},尺寸(idxs)),格式(idxs));其他sizes_out = struct2cell(infoOut);sizes_out =猫(2,sizes_out {:});对于I = idxs“。如果(〜任何(sizes_out ==尺寸{I}))格式的格式= {I};infoOut(格式)= [infoOut(格式)的大小{I}。]。pdcchOut(格式)= [pdcchOut(格式)pdcchIn。]。结束结束结束结束结束结束结束%解码主信息块(MIB),以获得帧数功能startFrame将= decodeMIB(ENB,rxSubframe,HEST,巢,I)= pbchIndices ltePBCHIndices(ENB);[pbchRx,pbchHest] = lteExtractResources(pbchIndices,rxSubframe,HEST);[〜,〜,nfmod4,mibbits] = ltePBCHDecode(ENB,pbchRx,pbchHest,巢);MIB = lteMIB(mibbits);startFrame将双=(mib.NFrame)+ nfmod4;如果(I> 0)startFrame将= MOD(startFrame将 -  1,1024);结束结束%获取给定的eNodeB的配置和客户端的所有候选PDCCH%的配置,而不必评估所有可能的RNTI功能pdcchCandidates = getPDCCHCandidates(ENB,UE)%PDCCH维信息pdcchInfo = ltePDCCHInfo(ENB);%聚集水平L=2^ue.PDCCHFormat格式;考生数量%M =地板(双(pdcchInfo.NCCE)/ L);%1个CCE = 9个REG = 36个RE = 72位bitsPerCCE = 72;%PDCCH位内的PDCCH候选索引(基于1)pdcchCandidates = L * bitsPerCCE *(0:M-1)”+ [1 L * bitsPerCCE];结束