使用下行信号进行UE检测

此示例显示了LTE工具箱™如何用于检测与eNodeB相关联的UE的存在。这是通过搜索DCI消息的下行链路信号来实现的,并在使用中建立唯一标识符(C-RNTIS)集。

介绍

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

该示例的目的是解码PDCCH并查找候选DCI消息。然后从有效消息获得C-RNTI,展示所解决的UE的数量,以及它们随时间的模式。注意,在此示例中,返回所有检测到的RNTI,而不仅仅是在TS 36.321表7.1-1中定义的C-RNTI范围中的RNTIS [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 =.'userdefined';%类型的飞行员平均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)

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

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

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

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

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

  • 使用C-RNTI计算新的CRC位并掩盖它们。

  • 重新编码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 ='off';%启用或禁用运营商指示符字段pdcchcommon.enableCarrierIndication = CIF;[dciinfocommon,pdcchcommon] = getunquedcilencths(eNB,pdcchcommon);%在特定于UE的搜索中获取DCI消息的DCI格式和长度%空间。给定格式的DCI消息的长度可能受到影响%UE特定的高层参数所以所以不同的不同记录这些参数的%唯一长度以及%相应的参数组合pdcchuespecific = struct('searchspace'“尺寸”);pdcchuespecific.controlchanneltype =“PDCCH”;pdcchuespecific.enableCarrierIndication = CIF;[dciinfoupecific,pdcchuichecific] = getunqueDilecths(eNB,pdcchuichecific);%在波形中建立子帧的数量griddims = lteresourcegridsize(eNB);l = griddims(2);nsubframes =楼层(尺寸(rxgrid,2)/ l);对于波形中的每个子帧的%,尝试解码PDCCHstartsubframe = enb.nsubframe;CFIS = Zeros(1,nsubframes);对于i = 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,hest);pcfichbits = ltepcfichdecode(eNB,pcfichrx,pcfichhest,巢);eNB.CFI = LTECFIDECODE(PCFICHBITS);CFIS(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消息%)可能会= [];UE特定搜索空间的%PDCCH格式可以是0,1,2或3对于pdcchformat = 0:3 UE = struct();%获得所有PDCCH候选指数和候选人的数量当前PDCCH格式的百分比UE.pdcchformat = pdcchformat;候选人= getpdcchcandidates(eNB,UE);m =大小(候选人,1);每位候选人%对于m = 1: m%记录PDCCH候选指数UE.Candidate =候选人(M,:);UE特定搜索空间中的每个DCI格式的百分比dciFormats =字段名(dciInfoUESpecific);对于dciformatidx = 1:长度(dcormats)%记录DCI格式ue.dciformat = dciformats {dciformatidx};%记录此PDCCH格式/候选/ DCI格式%组合作为可能的“UE”。对于具有的DCI格式跨UE特定的高层的%不同的长度%参数,每个长度被记录为不同的%的问题dciinfoupicific。(UE.dciformat);对于dimplengthidx = 1:长度(diClencths)UE.DileChength = DiClengths(DileChengtIdX);UE.pdcch = pdcchuichecific。(Ue.dcifordat)(diClendondIDX);可能的可能= [可能的UE];%#OK 结束结束%对于PDCCH格式2或3,记录DCI的可能性%消息在此候选位置的公共搜索空间中格式1a或1c的百分比。这种DCI消息对应于系统%信息,分页或随机访问响应消息相反比UE的上行链路或下行链路授权的%,但是被搜索%在这个例子中为完整性如果(任何(pdcchformat == [2 3])))对于dciformat = {'format1a''format1c'} UE.DCIFESAT = DCIFARMAT {1};UE.DINCHENTH = DCIINFOCOMMON。(UE.DCIFERAT);UE.PDCCH = PDCCHCOMMON。(UE.DCIFESAT);可能的可能= [可能的UE];%#OK 结束结束结束结束每个可能的UE的%对于UE =可能%从收到的PDCCH位获取接收的候选位(for% DCI解码)bitIdx = ue.Candidate;candidateBits = pdcchBits (bitIdx (1): bitIdx (2));%从收到的PDCCH获取收到的候选符号%符号(用于PDCCH功率估计)。调制顺序QM = 2%用于将候选位指数转换为候选符号%索引(QPSK调制始终用于PDCCH)Qm = 2;symIdx = (((bitIdx (1) - 1) / Qm) + 1 bitIdx (2) / Qm];candidateSymbols = pdcchSymbols (symIdx (1): symIdx (2));%解码接收到的候选位,得到RNTI。假设%CRC通过(CRC = 0),LTEDCIDECODE的第二输出将%对应于rnti[dcimessagebits,rnti] = ltedcidecode(ue.dcilenth,candidatebits);%重新编码解码的DCI消息比特(使用检测到的RNTI)%并建立重新编码之间的比特错误数%候选位和收到的候选位UE.rnti = RNTI;ReencodedCanditationBits = LTEDCIENCODE(UE,DCIMessageBits);numErrors = sum(int8(candidatebits> 0)〜= reencodedcandbits);%如果位错误的数量大于maxErrors,则继续%到下一个可能的UE(这里的循环体的其余部分不是%执行)如果(NumErrors> MaxErrors)继续;结束%从消息比特有效载荷创建DCI消息结构。这是%执行的,因为对于某些DCI格式(例如格式化0而不是%格式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格式,比特错误的数量将趋于%要更大,因为有更多的候选位,所以低SNRS%检测到的PDCCH格式可能低于真正的PDCCH%格式(即真实PDCCH的比特中的错误数量%格式超过MaxErrors)如果(isempty(匹配))结果= [结果;结果];%#OK 别的结果(匹配,:) =结果;结束结束%更新子帧号enb.nsubframe = mod(enb.nsubframe + 1,10);结束%去除估计PDCCH功率(dB)低于%最小功率阈值。没有这一步,收到候选符号%仅由噪声组成(即使在低功率下)可以触发错误%检测如果(~ isempty(结果)结果(结果。PDCCHPower < minPDCCHPower,:) = [];结束%检查结果是否为空如果(Isempty(结果))DISP(“没有RNTIs发现。”);返回;结束在任何给定的子帧中,在重叠结果的情况下(即一个结果的%候选指标是另一个的子集),结果%将选择最低数量的比特错误重叠= [];对于我=独特(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消息相关的其他信息。该表的每一行包括:

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

  • DetectedRNTI:检测到的rnti。

  • NumErrors:重新编码的候选位与接收到的候选位之间的误码数(小于等于maxerrors.)。

  • dciformat.: DCI消息的DCI格式。注意,在UE检测过程中,仅使用具有唯一长度的DCI格式,因为只有输出DCI消息的长度会影响解码过程(具体来说,卷积解码之前的速率匹配)。在LTE系统中,对于相同的eNodeB配置,多个DCI消息可以具有相同的长度。在正常的系统操作中,通过为每个终端分配一个传输模式(TM)来解决这种模糊性。表7.1-5 [3.]显示哪些DCI格式适用于给定的TM,并且给定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(结果);
子帧检测rnti numerrors dciformat pdcchformat候选pdcchpower dci _______________________________________________________________________________________________________________________________________________________________________________1.24 {1x1结构}3 0“717a”0“格式2a”2 577 864 3.36 {1x1结构} 4 1“717a”0“格式2a”2 1 288 2.99 {1x1结构} 5 1“717a”0“format0”2 289 576 3.01 {1x1结构6 1“9397”0“格式0”1 577 720 -0.22 {1x1结构} 7 2“0”格式2a“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资源,并用相应的RNTI标记。在任何RNTI之后出现一个问号,其中重新编码的候选位和接收的候选位之间的比特错误数量NumErrors,大于零(小于或等于maxerrors.)。这里使用的系统帧编号(SFN)使用整数来表示SFN和DECIMALS(十分之一)来表示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" 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 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经常发生在整个波形中,通常具有零误差,因此它们可能对应于有源UE。

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

  • 错过了检测:观察SFN 834.6。PDSCH资源块中有能量为0到7.但是,未检测到DCI消息。重新运行模拟设置maxerrors = 3..现在RNTI 4C87在这个区域被检测到。这种rti存在于其他子帧中,这意味着它可能是一个真正的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“物理层程序”

本地功能

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

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

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

  • getpdcchcandidates.:获得所有PDCCH候选人

%获取DCI格式的DCI消息信息,具有唯一的长度,%所有特定于ui的高层参数功能[Infoout,PDCChout] = GetUnqueDileChongs(eNB,pdcchin)InfoOut = [];对于启用rsrequest = {'off''开'pdcchin.enablesrsRequest = eNoseSrsRequest {1};对于EnableMultIplecsirequest = {'off''开'} pdcchIn。EnableMultipleCSIRequest = EnableMultipleCSIRequest {1};对于ntxants = [1 2 4] pdcchin.ntxants = ntxants;%获取所有格式的DCI消息长度,如%结构INFO = LTEDCIINFO(eNB,PDCCHIN);%将结构转换为字段名称的单元格数组%和价值观格式= fieldnames(信息);sizes = struct2cell(信息);随着使用这些DCI格式,%删除DCI格式3和3A输送功率控制命令而不是资源的%%拨款dci3idx = ismember(格式,{“Format3”'format3a'});格式(DCI3IDX)= [];大小(dci3idx)= [];%只保留DCI格式1A和1C用于公共搜索%的空间如果(strcmpi (pdcchIn。SearchSpace,“常见”))commonidx = ismember(格式,{'format1a''format1c'});格式=格式(commonidx);尺寸=尺寸(commonidx);结束%找到独特尺寸的指数,第一个每个独特尺寸的%发生将保留在%原始订单[〜,IDXS] =唯一(CAT(2,尺寸{:}),“稳定”);如果当前的UE特定设置产生唯一尺寸%格式的%(与所有其他格式相比和%特定于ui的设置),然后记录它们如果(isempty(Infoout))InfoOut = Cell2struct(大小(IDXS),格式(IDXS));pdcchout = cell2struct(repmat({pdcchin},size(idxs)),格式(Idxs));别的size_out = struct2cell(Infoout);size_out = cat(2,size_out {:});对于我= IDXS。'如果(〜任何(size_out == sizes {i}))格式=格式{i};Infoout。(格式)= [Infoout。(格式)尺寸{i}];pdcchout。(格式)= [pdcchout。(格式)pdcchin];结束结束结束结束结束结束结束%解码主信息块(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. pdchformat;%候选人数量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];结束