主要内容

使用下行信号进行UE检测

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

介绍

在LTE中,物理下行控制信道(PDCCH)以下行控制信息(DCI)消息的形式携带控制信息。DCI消息从eNodeB向目标终端发送上行或下行调度信息,以便终端识别PDSCH (Physical downlink Shared Channel)上需要接收的资源和PUSCH (Physical uplink Shared Channel)上需要发送的资源。每个终端被分配一个标识符,称为C-RNTI(小区无线网络临时标识符)。C-RNTI用于打乱该UE的DCI消息的CRC位,也用于确定DCI消息在PDCCH中的位置。有关更多信息,请参见PDCCH盲搜索和DCI解码的例子。

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

下的波形分析

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

负载ueDetectionWaveform.mat; rxWaveform=double(rxWaveform)/32768;

同步

进行了频率偏差估计、校正和定时同步。

%进行频率偏差估计和校正foffset=LTE频率偏移(enb,RX波形);RX波形=LTE频率正确(enb,RX波形,偏移量);%执行时间同步到第一个整个子帧%波形toffset=lteDLFrameOffset(enb,RX波形);ofdmInfo=LTEFDMINFO(enb);sfLength=ofdmInfo.SamplingRate*1e-3;OFFSETSUBRAMES=FLOOM(toffset/sfLength);toffset=toffset-(OFFSETSUBRAMES*sfLength);RX波形=RX波形(1+toffset:end,:);enb.NSubframe=mod(-OFFSETSUBRAMES,10);

OFDM解调

I / Q波形rxWaveformOFDM是否被解调以产生接收的资源网格rxgrid.

rxgrid=LTEOFDMDdemodulate(enb,rxWaveform);

信道估计配置

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

cec。PilotAverage =“用户定义”%引航平均的类型cec.FreqWindow=13;%频率窗口大小cec.TimeWindow=9;%时间窗口大小cec.InterpType='立方体'%二维插值类型cec。InterpWindow =“居中”插值窗口类型cec.InterpWinSize=1;%插值窗口大小

UE检测

所分析的下行波形可能携带多个终端的信息。本节试图找到他们的rtis。这里应用的方法使用这样一个事实:对于一个有效的DCI消息,CRC位被RNTI屏蔽。因此,假设没有错误(CRC = 0),最后16位解码位对应于RNTI。该方法见[2].

此示例实现以下算法:

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

  • 对于每个pdch格式,计算控制区域中可能携带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功率(相对于特定的参考信号),单位为dB%用于信道估计)以认为检测是有效的minPDCCHPower = -5.0;初始化结果表结果=表;%在公共搜索空间中获取DCI消息的DCI格式和长度pdcchcomon=struct('searchspace'“普通”);pdcchCommon。ControlChannelType =“PDCCH”;CIF =“关闭”%启用或禁用运营商指标字段pdcchcommon.enableCarrierIndication = CIF;[dciinfocommon,pdcchcommon] = getunquedcilencths(eNB,pdcchcommon);%在特定于ue的搜索中获取DCI消息的DCI格式和长度%空间。给定格式的DCI消息的长度可能受到以下因素的影响:%各种特定于ui的高层参数使其集不同%记录这些参数的唯一长度,以及%相应的参数组合pdcchUESpecific =结构('searchspace'“尺寸”); pdcchuspecific.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(即可能的位置为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 = fieldnames(dciinfoueSpecific);dciFormatIdx=1:长度(dciFormats)%记录DCI格式ue.dciformat = dciformats {dciformatidx};%记录PDCCH格式/候选人/ DCI格式%组合作为可能的“UE”。对于具有%跨UE特定更高层的不同长度参数,每个长度被记录为不同的%可能的UE.dciLengths = dciInfoUESpecific。(ue.DCIFormat);dcilenghidx=1:length(dcilengts)ue.DCILength=dcilengts(dcilenghidx);ue.PDCCH=pdcchuspecific.(ue.DCIFormat)(dcilenghidx);possibleUEs=[possibleUEs ue];%#好的结束结束PDCCH格式2或3的百分比,记录DCI的可能性%消息在此候选位置的公共搜索空间中%,格式为1A或1C。这样的DCI消息对应于System%信息、分页或随机访问响应消息%比上行或下行授予一个UE,但被搜索%在这个例子中,为了完整性如果(任何(pdcchFormat==[2 3]))dciFormat={“Format1A”“Format1C”}问题。DCI.Format = dciFormat{1}; ue.DCILength = dciInfoCommon.(ue.DCIFormat); ue.PDCCH = pdcchCommon.(ue.DCIFormat); possibleUEs = [possibleUEs ue];%#好的结束结束结束结束%对于每个可能的UEue=可能%从接收到的PDCCH比特中获取接收到的候选比特(用于% 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的第二个输出将%对应rti[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消息创建表项结果= struct();结果.Subframe = i;结果.detectedrnti = string(dec2hex(ue.rnti,4));结果.NumErrors = NumErrors;结果.dciformat = string(dci.dcormat);结果.pdcchformat = ue.pdcchformat;结果.Candidate = UE.Candidate;结果.pdcchpower = round(10 * log10(var(candidatesymbols)),2);结果.dci = {dci};结果= struct2table(结果);%检查之前是否成功解码了DCI消息%在这个子帧中使用相同的rti, DCI格式和启动%候选位置作为当前DCI消息(但使用%不同PDCCH格式)如果(~ is空(结果))match =(结果。子帧= = result.Subframe);Match = Match &(结果。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))结果=[结果;结果];%#好的其他的结果(匹配:)=结果;结束结束%更新子帧号enb.NSubframe=mod(enb.NSubframe+1,10);结束%删除结果,其估计的PDCCH电源(在DB中)低于最小功率阈值。没有这一步,接收候选符号%仅由噪声组成(即使在低功率下)可以触发错误%检测如果(~ isempty(结果)结果(结果。PDCCHPower < minPDCCHPower,:) = [];结束%检查结果是否为空如果(i空(结果)(“没有RNTIs发现。”);返回结束在任何给定的子帧中,在重叠结果的情况下(即%候选索引的一个结果是另一个结果的子集),结果与%将选择最小的位错误数重叠= [];我=唯一(结果。“。%找到与当前子帧和提取物对应的结果行%这些结果科幻小说=找到(结果。子帧= =我)。”;%表示该子帧中的每一对结果a=平方英尺b=sf ca=结果{a,“候选人”};cb = {b,结果“候选人”};如果第一个结果的候选索引是%第二个结果的候选索引如果(ca (1) > = cb (1) & & ca (2) < = cb (2))%如果第一个结果有更多错误如果(结果{a,“数字者”} > {b,结果“数字者”})%标记本对中的第一个结果为重叠%(即做上标记以便移除)重叠=[重叠a];%#好的结束结束结束结束结束%删除重叠结果:结果(重叠)= [];%为结果表的每一行添加一个标签results.Properties.RowNames=strsplit(num2str(1:height(results));

显示结果表

显示检测到的RNTIS和与检测到的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,可以使用pDCH空间函数。

  • PDCCHPower:与此DCI消息相关联的接收候选符号(以DB为单位)的权力。

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

disp(结果);
子帧DetectedRNTI NumErrors DCIFormat PDCCHFormat候选人PDCCHPower DCI  ________ ____________ _________ __________ ___________ ___________ __________ ____________ 1 0“9397”1“Format0”1 1 144 0.32 {1 x1 struct} 2 0“F24A”0“Format0”2 289 576 3.24 {1 x1 struct} 3 0”717“0”Format2A“2 577 864 3.36 {1 x1 struct} 4 1”717“0”Format2A“2 1288年2.99 {1 x1 struct} 5 1”717“0”Format0 2 289 576 3.02 {1 x1 struct} 6 1“9397”0“Format0”1 577 720 -0.22 {1 x1 struct} 7 2”717“0”Format2A“2 1 288 3.19 {1 x1 struct} 8 2“9397”0“Format0”1 289 432 0.52 {1 x1 struct} 9 3“4 c87”0”Format2A“2 1 288 3.16 {1 x1 struct} 3“9397”0“Format0”1 289 432 -0.11 {1 x1 struct} 11 3“96 c1”0“Format2A”1 577 720 3.27 {1 x1 struct} 12 4“717”0”Format0“2 1 288 3.41 {1 x1 struct} 13 4“9397”2“Format0”0 433 504 1.07 {1 x1 struct} 14 4“717”1“Format2A”1 577 720 3.57 {1 x1 struct} 15 5“9397”0“Format0”0 1 72 2.42 {1 x1 struct} 16 5“96 c1”1”Format0“0 145 216 0.6 {1 x1 struct} 17 5“6 c27”2“Format2C”0 217 288 1.14 {1 x1 struct} 185“717”0“Format0”1 289 432 5.68 {1 x1 struct} 19 5“4 c87”2“Format2A”0 577 648 1.66 {1 x1 struct} 20”717“0”Format2A“2 1 288 2.95 {1 x1 struct} 21 6“9397”0“Format0”1 289 432 0.27 {1 x1 struct} 22 6 b“077”0“Format0”1 433 576 6.17 {1 x1 struct} 23 7“飞行符”0”Format1A“2 1 288 0.14 {1 x1 struct} 24 7“9397”1“Format0”1 289 432 1.38{1 x1 struct} 25 7“4 c87”0“Format2A”1 577 720 6.21 {1 x1 struct} 26日8“4 c87”0“Format2A”2 1 288 3.03 {1 x1 struct} 27 8“717”0“Format2A”2 577 864 3.05 {1 x1 struct} 28 9”717“0”Format2A 2 577 864 3.05 {1 x1 struct} 29 10“4 c87”0“Format2A”2 1 288 3.11 {1 x1 struct} 30 10“F24A”0“Format0”2 289 576 3.25 {1 x1 struct} 31 10“9397”0“Format2A”1 721 864 2.98 {1 x1 struct} 32 11“4 c87”0“Format2A”2 1 288 2.27 {1 x1 struct} 33 11“717”0“Format0”2 289 576 2.37 {1 x1 struct} 34 11“F24A”0“Format2A”2 577 864 2.38 {1 x1 struct} 35 12“飞行符”2“Format1A”1 1 144 0.7 {1 x1 struct} 36 12“4 c87”0“Format2A”2 865 1152 3.85 {1 x1 struct} 37 14“717”2“Format0”1 1 144 2.64 {1 x1struct} 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

生成一个图,显示检测到的rtis与子帧数。将显示接收到的下行资源网格,并使用RNTIs标记由相应DCI消息发出信号的PDSCH资源。还显示一个空的上行资源网格,并显示由任何DCI格式0或格式4消息发出信号的PUSCH资源,并标记为相应的rtis。在重新编码的候选位和接收到的候选位之间的比特错误数之间的任何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格式(和相关链接方向)

  • 分配PRBS.

  • 在已分配的prb中对接收功率的估计

注意,因为没有存在上行链路资源网格,所以为上行链路DCI消息估计的功率将是-INF。请注意,如果需要概要,则可以轻松地将摘要表进行分类为使用相同的RNTI的组结果Sortrows(摘要,'rnti')

DISP(摘要);
SFN RNTI NumErrors DCIFormat LinkDirection PRBSet权力  _____ ______ _________ __________ _____________ _______________________________________ _____ 833.3“9397”1“Format0”“上行”“8[7]”负833.3“F24A”0“上行”“Format0[9…32]" -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

检测到的rtis的观察

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

  • 系统信息(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中。

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

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

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

附录

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

精选书目

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

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

  • getpdcchcandidates.:让所有的PDCCH考生参加

%获取具有唯一长度的DCI格式的DCI消息信息,跨%所有特定于ui的高层参数功能[infoOut,pdcchOut] = getUniqueDCILengths(enb,pdcchIn) infoOut = [];EnableSRSRequest = {“关闭”“上”} pdcchIn。EnableSRSRequest = EnableSRSRequest {1};EnableMultipleCsRequest={“关闭”“上”} pdcchIn。EnableMultipleCSIRequest = EnableMultipleCSIRequest {1};NTxAnts=[1 2 4]pdcchIn.NTxAnts=NTxAnts;%获取所有格式的DCI消息长度%结构信息= lteDCIInfo (enb pdcchIn);%将结构转换为字段名的单元格数组%和价值观格式=字段名(信息);大小= struct2cell(信息);%删除DCI格式3和3A,因为使用了这些DCI格式%用于传输电源控制命令而不是资源%分配dci3idx = ismember(格式,{“Format3”“Format3A”});格式(dci3idx) = [];大小(dci3idx) = [];%仅保留DCI格式1A和1C用于通用搜索%的空间如果(strcmpi (pdcchIn。SearchSpace,“普通”)) commonidx = ismember(format,{“Format1A”“Format1C”});格式=格式(commonidx);尺寸大小= (commonidx);结束找到唯一大小的索引,第一个中出现的每个唯一大小都将保留%原始订单[~, idx] =独特(猫(2,大小{:}),“稳定”);%如果当前UE特定设置产生唯一的大小%对于任何格式(与所有其他格式和到目前为止%UE特定的设置),然后记录它们如果(isempty(infoOut)) infoOut = cell2struct(大小(idxs),格式(idxs));pdcchOut = cell2struct (repmat ({pdcchIn},大小(idx)),格式(idx));其他的sizes_out = struct2cell (infoOut);sizes_out =猫(2,sizes_out {:});i=idxs。”如果(~any(size_out==size{i}))format=formats{i};infoOut.(格式)=[infoOut.(格式)大小{i}];pdcchOut.(格式)=[pdcchOut.(格式)pdcchIn];结束结束结束结束结束结束结束%对Master Information Block (MIB)进行解码以获取帧号功能startFrame=decodeMIB(enb,rxsubrame,hest,nest,i)pbchindies=ltepbchindies(enb);[pbchRx,pbchHest]=lteExtractResources(pbchindies,rxsubrame,hest);[~,~,nfmod4,mibbits]=ltePBCHDecode(enb,pbchRx,pbchHest,nest);mib=lteMIB(mibbits);startFrame=double(mib.NFrame)++nfmod4;如果(i>0)开始帧=mod(开始帧-11024);结束结束%获取给定eNodeB配置和UE的所有PDCCH候选%配置,而不必评估所有可能的rtis功能PDCCH候选者=获取PDCCH候选者(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)PDCCH候选者=L*比特率*(0:M-1)。'+[1 L*比特率];结束