主要内容

使用下行信号检测终端

本示例展示了如何使用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数量的指示,以及它们随时间的变化模式。注意,在这个例子中,所有检测到的RNTIs都会被返回,而不仅仅是TS 36.321表7.1-1中定义的C-RNTI范围内的RNTIs [1].保留这些其他rnti允许使用此示例来识别与系统信息(SI-RNTI)或分页(P-RNTI)关联的DCI消息的出现。

下的波形分析

在这个例子中,正在分析的波形存储在uedetection波形文件中。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检测

所分析的下行波形可能携带多个终端的信息。本节试图找到它们的RNTIs。这里应用的方法使用了这样一个事实:对于一个有效的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;最小PDCCH功率(相对于细胞特定的参考信号%用于信道估计)认为检测是有效的minPDCCHPower = -5.0;%初始化结果表结果=表;%在公共搜索空间中获取DCI消息的DCI格式和长度pdcchcommon = struct(“SearchSpace”“普通”);pdcchCommon。ControlChannelType =“PDCCH”;CIF =“关闭”;%启用或禁用载波指示灯字段pdcchCommon。EnableCarrierIndication = CIF;[dciInfoCommon, pdcchCommon] = getUniqueDCILengths (enb pdcchCommon);%在特定于ue的搜索中获取DCI消息的格式和长度% 空间。给定格式的DCI消息的长度可能受到影响%各种ue特定的高层参数使集合不同记录这些参数的%唯一长度以及%相应的参数组合pdcchuespecific = struct(“SearchSpace”“UESpecific”);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 = 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,命令);%执行PDCCH解调以获得接收的PDCCH位,%可能包含一个或多个用户的编码DCI消息[pdcchBits, pdcchSymbols] = ltePDCCHDecode (pdcchHest, enb, pdcchRx巢);%初始化PDCCH格式/候选/ DCI格式的数组%组合,它代表可能的UE(即可能的位置%表示为终端提供下行或上行授权的DCI消息)possibleUEs = [];UE特定搜索空间的%PDCCH格式可以是0,1,2或3pdcchformat = 0:3 UE = struct();%获取所有PDCCH候选索引和候选数量M当前PDCCH格式的百分比问题。PDCCHFormat = PDCCHFormat;候选人= getPDCCHCandidates (enb问题);M =大小(候选人,1);%每个候选人m = 1: m%记录PDCCH候选指数问题。候选人=候选人(m:);%用于ue特定搜索空间中的每个DCI格式dciFormats =字段名(dciInfoUESpecific);dciformatidx = 1:长度(dcormats)%记录DCI格式问题。DCIFormat = dciFormats{dciFormatIdx};%记录此PDCCH格式/候选/ DCI格式%组合作为一个可能的“UE”。用于DCI格式跨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”}问题。DCIFormat = dciFormat{1}; ue.DCILength = dciInfoCommon.(ue.DCIFormat); ue.PDCCH = pdcchCommon.(ue.DCIFormat); possibleUEs = [possibleUEs ue];%#OK 结尾结尾结尾结尾每个可能的UE的%UE =可能%从收到的PDCCH位获取接收的候选位(for% DCI解码)bitIdx = ue.Candidate;candidateBits = pdcchBits (bitIdx (1): bitIdx (2));%从收到的PDCCH获取收到的候选符号%符号(用于PDCCH功率估计)。调制顺序QM = 2%用于将候选位索引转换为候选符号%指数(PDCCH总是使用QPSK调制)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.DCILength 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(results)) match = (results。子帧= = result.Subframe);匹配=匹配&(结果。DetectedRNTI== result.DetectedRNTI); match = match & strcmpi(results.DCIFormat,result.DCIFormat); match = match & (results.Candidate(:,1) == result.Candidate(1)); match = find(match~=0);别的匹配= [];结尾%如果DCI消息满足上述条件,则它必须是%表示更小的PDCCH格式,因此表示成功%解码当前消息的一部分,即解码子集候选控制通道元素(cce)的%。因此,%以前的结果可以替换为当前的结果。请注意%对于更大的PDCCH格式,比特错误的数量将趋于%越大,因为有更多的候选位,所以在低信噪比时%检测到的PDCCH格式可能低于真正的PDCCH%格式(即真正PDCCH的错误位数%格式超过maxErrors)如果(isempty(match)) result =[结果;结果];%#OK 别的结果(匹配,:) =结果;结尾结尾%更新子帧号enb.nsubframe = mod(enb.nsubframe + 1,10);结尾%估计PDCCH功率(单位为dB)低于%最小功率阈值。没有这个步骤,接收到的候选符号%仅包含噪声(即使在低功率)可以触发假%检测如果(~ isempty(结果)结果(结果。PDCCHPower < minPDCCHPower,:) = [];结尾%检查结果是否为空如果(Isempty(结果))DISP(“没有RNTIs发现。”);返回;结尾%在任何给定的子帧中,在结果重叠的情况下(即一个结果的%候选索引是另一个结果的子集),结果具有%将选择最低数量的比特错误重叠= [];我=独特(results.Subframe)。”%查找与当前子帧对应的结果行并提取%这些结果科幻小说=找到(结果。子帧= =我)。”;此子帧中每对结果的%a = sf.b = sf ca =结果{a,“候选人”};cb = {b,结果“候选人”};如果第一个结果的候选索引是%第二个结果的候选索引如果(ca (1) > = cb (1) & & ca (2) < = cb (2))%如果第一个结果有更多的错误如果(结果{a,'numerrors'} > {b,结果'numerrors'})%标记成对中的第一个结果为重叠%(即标记为删除)overlap =[重叠a];%#OK 结尾结尾结尾结尾结尾%删除重叠结果:结果(重叠)= [];%为结果表的每一行添加一个标签结果.properties.rowname = strsplit(num2str(1:高度(结果)));

显示结果表

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

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

  • DetectedRNTI:检测到的RNTI。

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

  • dciformat.: DCI消息的DCI格式。请注意,在UE检测过程中,只使用具有唯一长度的DCI格式,因为只有输出DCI消息的长度会影响解码过程(特别是,卷积解码之前的速率匹配)。在LTE系统中,相同eNodeB配置的多个DCI消息可以具有相同的长度。在正常的系统运行中,通过为每个终端分配一个传输模式(TM)来解决这种模糊性。TS 36.213表7.1-5 [3.]显示了哪些DCI格式适用于给定的TM,并且给定TM的所有格式将具有唯一的长度。因为这个例子在不知道终端及其tm的情况下运行,所以为终端检测到的真正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.02 {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.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

制作绘图显示检测到的RNTIS与子帧号。显示接收的下行链路资源网格,并且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”“上行”“8[7]”负833.3“F24A”0“上行”“Format0[9…23]" -Inf 833.3 "717A" 0 "Format2A" Downlink"[0…24]" 15.98 833.4 "717A" 0 "Format2A" "Downlink" "[0...24]" 16.24 833.4 "717A" 0 "Format0" "Uplink" "[22 23]" -Inf 833.4 "9397" 0 "Format0" "Uplink" "[20 21]" -Inf 833.5 "717A" 0 "Format2A" "Downlink" "[2 3 6 7 10 11 14 15 18 19 22 23]" 15.95 833.5 "9397" 0 "Format0" "Uplink" "[22 23]" -Inf 833.6 "4C87" 0 "Format2A" "Downlink" "[0 1 4 5 8 9 12 13 16 17 20...24]" 14.9 833.6 "9397" 0 "Format0" "Uplink" "[22 23]" -Inf 833.6 "96C1" 0 "Format2A" "Downlink" "[2 3 6 7 10 11 14 15 18 19]" 15.38 833.7 "717A" 0 "Format0" "Uplink" "[16 17]" -Inf 833.7 "9397" 2 "Format0" "Uplink" "[14 15]" -Inf 833.7 "717A" 1 "Format2A" "Downlink" "[0...24]" 13.96 833.8 "9397" 0 "Format0" "Uplink" "[16 17]" -Inf 833.8 "96C1" 1 "Format0" "Uplink" "[14 15]" -Inf 833.8 "6C27" 2 "Format2C" "Downlink" "[0...3 8 9 12...17 20 21 24]" 13.98 833.8 "717A" 0 "Format0" "Uplink" "[12 13]" -Inf 833.8 "4C87" 2 "Format2A" "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

检测到的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:rntis717a和4C87在整个波形中频繁出现,典型的零误差,因此它们很可能对应于有源UEs。

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

  • 错过的检测:观察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很可能是一个“假阳性”检测。

附录

下面的例子使用了helper函数:

选定的书目

  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消息信息

  • decodeMIB:对MIB (Master Information Block)进行解码,获取帧号

  • 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);%将结构转换为字段名称的单元格数组%和价值观格式=字段名(信息);大小= 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特定设置产生唯一尺寸%格式的%(与所有其他格式相比和% ue特定的设置到目前为止),然后记录它们如果infoOut = cell2struct(sizes(idxs),formats(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];结尾结尾结尾结尾结尾结尾结尾%解码MIB (Master Information Block)获取帧号功能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 ^ u . 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];结尾