主要内容

5G NR PRACH检测和虚警测试

本例实现了TS 38.141-1中定义的物理随机访问通道(PRACH)漏检和虚警一致性测试。您可以测量在前导信号存在的情况下正确检测到PRACH前导信号的概率,或将PRACH传输关闭以测量虚警概率。

简介

PRACH是用户设备UE (User Equipment)发起与gNodeB同步的上行链路传输。TS 38.141-1节8.4.1.5定义了在一组PRACH配置和传播条件下,在特定信噪比值下,PRACH检测的概率大于或等于99%。有几种检测错误的情况:

  • 检测不正确的序文

  • 没有发现前奏

  • 检测到正确的序文,但使用了错误的时间估计

TS 38.141-1指出当最强路径定时偏移的估计误差小于表8.4.1.1所给出的时间误差容限时,就实现了正确的检测。对于信道传播条件TDLC300-100和PRACH前置格式0,时间容错为2.55微秒。

在本例中,配置了一个PRACH波形并通过适当的通道传递。本例在接收端执行PRACH检测,并计算PRACH检测概率。本例考虑TS 38.141-1表8.4.1.5-1和表A.6-1中定义的参数。它们是:正常模式(即无限制设置),2个接收天线,TDLC300-100通道,正常循环前缀,突发格式0,信噪比-6.0 dB。如果您更改PRACH配置以使用表A.6-1中列出的其他PRACH前导格式之一,则需要分别根据TS 38.141-1表8.4.1.1和表8.4.1.5-1至8.4.1.5-3更新时间容错和信噪比的值。

模拟配置

这个例子考虑在一些信噪比上有10个PRACH插槽。你应该使用大量的numPRACHSlots产生有意义的结果。你可以设置SNRdB作为值的数组或标量。有关本例使用的信噪比定义的解释,请参见链路模拟中使用的信噪比定义.频率偏移量如表8.4.1.5-1所示foffset这是在发射器和接收器之间建模的。的timeErrorTolerancevariable表示时间容错,定义如TS 38.141-1中的表8.4.1.1-1所示。可以将检测阈值设置为[0,1]范围内的值,也可以将检测阈值设置为空nrPRACHDetect函数。为了模拟虚警测试,可以通过设置禁用PRACH传输prachEnabled代替。

numPRACHSlots = 10;%在每个信噪比下要模拟的PRACH槽数SNRdB = [-21, -16, -11, -6, -1];%信噪比范围,单位为dBFoffset = 400.0;%频率偏移,单位为HztimeErrorTolerance = 2.55;时间容错率(微秒)阈值= [];检测阈值prachEnabled = true;启用PRACH传输。若要模拟虚警测试,请关闭PRACH传输。

载波配置

使用nrCarrierConfig配置对象航空公司指定运营商设置。该示例考虑了子载波间距为15 kHz和带宽为5 MHz的载波。TS 38.104中如表5.3.2-1所示,即运营商跨越了25个资源块。

carrier = nrCarrierConfig;母舰。SubcarrierSpacing = 15;母舰。NSizeGrid = 25;计算ofdm相关信息ofdmInfo = nrOFDMInfo(载体);

开环结构

TS 38.141-1中的表A.6-1指定了用于PRACH检测一致性测试的PRACH配置。

方法设置PRACH配置nrPRACHConfig配置对象开环,请参考TS 38.141-1中的表A.6-1和章节8.4.1.4.2。

设置PRACH配置prach = nrPRACHConfig;开环。FrequencyRange =“FR1”%频率范围开环。DuplexMode =“FDD”频分双工(FDD)开环。ConfigurationIndex = 27;格式0的配置索引开环。SubcarrierSpacing = 1.25;子载波间距%开环。SequenceIndex = 22;逻辑序列索引开环。PreambleIndex = 32;%前序索引开环。RestrictedSet =“UnrestrictedSet”%正常模式开环。FrequencyStart = 0;频率定位中存储的NCS表定义ZeroCorrelationZone值% nrPRACHConfig对象开关开环。格式情况下' 0 '' 1 '' 2 '} ncsTable = nrPRACHConfig.Tables.NCSFormat012;ncsTableCol = (string(ncsTable.Properties.VariableNames) == prach.RestrictedSet);情况下“3”ncsTable = nrPRACHConfig.Tables.NCSFormat3;ncsTableCol = (string(ncsTable.Properties.VariableNames) == prach.RestrictedSet);否则ncsTable = nrPRACHConfig.Tables.NCSFormatABC;ncsTableCol = contains(string(ncsTable.Properties.VariableNames), num2str(prach.LRA));结束NCS = 13;zeroCorrelationZone (ncsTable{:,ncsTableCol}==NCS);开环。ZeroCorrelationZone = ZeroCorrelationZone;%循环位移指数

传输信道配置

使用nrTDLChannel对象配置抽动延迟线(TDL)传播通道模型通道TS 38.141-1如表8.4.1.1-1所示。

channel = nrTDLChannel;通道。DelayProfile =“TDLC300”%延迟配置文件通道。MaximumDopplerShift = 100.0;最大多普勒频移(以Hz为单位)通道。SampleRate = ofdmInfo.SampleRate;输入信号采样率(Hz)通道。MIMOCorrelation =“低”% MIMO相关性通道。TransmissionDirection =“上行”%上行传输通道。numreceiveantenna = 2;%接收天线个数通道。normalizepathgain = true;正常化延迟配置文件功率通道。种子= 42;%通道种子。为不同的渠道实现更改此选项通道。NormalizeChannelOutputs = true;接收天线归一化获取通道特征信息channelInfo =信息(通道);

信噪比值的循环

使用循环对矢量给定的信噪比点集运行模拟SNRdB.这里配置的信噪比向量是一个信噪比点的范围,其中包括-6.0 dB的一个点,在这个信噪比下,前言格式0要达到PRACH检出率(99%)的测试要求,如TS 38.141-1中的表8.4.1.5所述。

hNRPRACHWaveformGenerator在5G工具箱™内生成归一化为与上行数据传输相同的传输功率的输出信号。因此,必须对添加到PRACH的噪声进行相同的归一化。在OFDM解调之前添加的噪声将被IFFT放大,放大系数等于IFFT大小的平方根(美元N_ {FFT} $).为了保证添加的噪声功率解调后归一化,从而达到期望的信噪比,将期望的噪声功率除以美元N_ {FFT} $.此外,由于噪声的实部和虚部是分开产生的,然后将其合并为复加性高斯白噪声,因此噪声的幅值按比例缩放1 / \ sqrt2美元所以产生的噪声功率是1。

在每个信噪比测试点,按以下步骤逐槽计算检测概率:

  • 开环传输:使用hNRPRACHWaveformGenerator以产生PRACH波形。发送带有TS 38.141-1图8.4.1.4.2-2中定义的定时偏移量的PRACH序音。设置一个定时偏移基准值为PRACH生成循环移位次数的50%。对于每个序文,该偏移量都会增加,增加一个0.1微秒的步长值,直到测试范围的结束,对于PRACH序文格式0,该范围为0.9微秒。然后这个模式重复。

  • 噪声信道建模:通过TDL通道传递波形并添加加性高斯白噪声。在波形的末尾添加额外的样本,以覆盖来自信道建模的预期延迟范围(实现延迟和信道延迟扩展的组合)。然后,该实现延迟被移除,以确保实现延迟不会被解释为前导检测器中的实际定时偏移。

  • 频偏的应用:将频率偏移应用到规格所定义的接收波形。

  • 开环检测:执行PRACH检测使用nrPRACHDetect函数用于所有单元格前导索引(0:63)。使用所返回的检测到的PRACH索引和偏移量nrPRACHDetect方法中讨论的约束条件确定检测成功的位置简介部分。

初始化存储每个信噪比下检测概率的变量pDetection =零(大小(SNRdB));存储生成PRACH波形所需的配置参数waveconfig。NumSubframes = prach.SubframesPerPRACHSlot;waveconfig。Windowing = [];waveconfig。carrier =承运人;waveconfig.PRACH.Config = prach;waveconfig.PRACH.Enable = prachEnabled;临时变量'prach_init', 'waveconfig_init', 'ofdmInfo_init''channelInfo_init'用于创建临时变量信噪比环路中的'prach', 'waveconfig', 'ofdmInfo'和'channelInfo'%来创建独立的实例,以防并行模拟Prach_init = prach;Waveconfig_init = waveconfig;ofdmInfo_init = ofdmInfo;channelInfo_init = channelInfo;snrIdx = 1:数字(SNRdB)%注释用于并行计算% parfor snrIdx = 1:数值(SNRdB) % uncomment用于并行计算要减少总的模拟时间,您可以执行此循环%并行,使用并行计算工具箱。注释掉for并取消'parfor'语句的注释。如果并行计算% Toolbox(TM)未安装,“parfor”默认为普通的“for”语句%在命令窗口显示进度timeNow = char(datetime(“现在”“格式”“HH: mm: ss”));流([timeNow':模拟信噪比= %+5.1f dB…'), SNRdB (snrIdx));将随机数生成器设置设置为默认值rng (“默认”);初始化此信噪比点的变量,初始化所需%的变量时,使用并行计算工具箱Prach = prach_init;Waveconfig = waveconfig_init;ofdmInfo = ofdmInfo_init;channelInfo = channelInfo_init;重置信道,使每个信噪比点都有相同的体验%信道实现重置(渠道);将噪声功率归一化以考虑采样率,即a用于OFDM调制的IFFT大小的%函数。信噪比被定义每个接收天线的每个载波资源元素的%。信噪比= 10^(SNRdB(snrIdx)/10);N0 = 1/√(2.0*channel. numreceiveantenna *double(ofdmInfo.Nfft)*信噪比);检测到的前导数detectedCount = 0;每个PRACH槽的%循环numActivePRACHSlots = 0;nSlot = 0:numPRACHSlots-1为当前槽位生成PRACH波形开环。NPRACHSlot = nSlot;waveconfig.PRACH.Config.NPRACHSlot = nSlot;[波形,~,winfo] = hNRPRACHWaveformGenerator(波形配置);根据TS 38.141-1图设置PRACH定时偏移量,单位为微秒% 8.4.1.4.2-2和图8.4.1.4.2-3如果开环。上帝抵抗军= = 839%长序文,取值如图8.4.1.4.2-2所示baseOffset = ((winfo.WaveformResources.PRACH.Resources.PRACHSymbolsInfo.NumCyclicShifts/2)/prach.LRA)/prach.SubcarrierSpacing*1e3;%(微秒)timinggoffset = baseOffset + mod(nSlot,10)/10;%(微秒)其他的%短序文,取值如图8.4.1.4.2-3所示baseOffset = 0;%(微秒)timinggoffset = baseOffset + mod(nSlot,9)/10;%(微秒)结束sampleDelay = fix(timegoffset / 1e6 * ofdmInfo.SampleRate);生成发射波形txwave = [0 (sampleDelay,1);波形);通过通道模型传递数据。属性的末尾附加0%传输波形以刷新通道内容。这些0%,考虑通道中引入的任何延迟。这是一种混合多路径时延和实现时延的百分比。这个值可能%的变化取决于采样率,延迟配置文件和延迟%的传播Rxwave =通道([txwave;0 (channelInfo。MaximumChannelDelay、大小(txwave, 2)));%添加噪音噪声= N0*complex(randn(size(rxwave)), randn(size(rxwave)));Rxwave = Rxwave +噪声;如果PRACH处于非活动状态,则跳过此插槽。通道前进到。%跳过该插槽的检测%,确保通道始终与%当前槽位。如果PRACH在此插槽中处于非活动状态,则接收器不应该希望任何PRACH传输,因此甚至不应该尝试%检测一个PRACH。跳过未激活插槽的检测是%在执行一致性测试时尤为重要。如果% PRACH不活跃,参考波形在内部计算% |nrPRACHDetect|函数为空。这导致了一个空%相关性,因此到一个空的检测到的序言。这个空% preamble导致检测值不正确%的概率。如果isempty (winfo.WaveformResources.PRACH.Resources.PRACHSymbols)继续结束numActivePRACHSlots = numActivePRACHSlots + 1;删除通道过滤器的实现延迟rxwave = rxwave((channelInfo. rxwave。ChannelFilterDelay + 1):结束,:);%应用频率偏移t =((0:大小(rxwave, 1) 1) / channel.SampleRate)。”;Rxwave = Rxwave .* repmat(exp(1i*2*pi*foffset*t), 1, size(Rxwave, 2));% PRACH检测所有细胞前导指标[detected, offset] = nrPRACHDetect(载波,prach, rxwave,“DetectionThreshold”阈值);测试前导检测如果(长度(发现)= = 1)如果~ prachEnabled对于假警报测试,检测到的任何前导都是错误的detectedCount = detectedCount + 1;其他的测试正确的前导检测如果(= = prach.PreambleIndex检测)计算时间估计误差trueOffset = timingOffset/1e6;% (s)measuredOffset = offset (1)/channel.SampleRate;timingerror = abs(measuredooffset - trueoffset);测试可接受的计时错误如果(timingerror<=timeErrorTolerance/1e6) detectedCount = detectedCount + 1;%检测到前导结束结束结束结束结束%的nSlot循环计算该信噪比的最终检测概率pDetection(snrIdx) = detectedCount/numActivePRACHSlots;显示该信噪比的检测概率流('检测概率:%d%%\n'pDetection (snrIdx) * 100);结束信噪比环路的%
01:32:38:模拟信噪比= -21.0 dB…检测概率:0% 01:32:39:模拟信噪比= -16.0 dB…检测概率:40% 01:32:39:模拟信噪比= -11.0 dB…检测概率:80% 01:32:40:模拟信噪比= -6.0 dB…检测概率:100%01:32:40: Simulating SNR = -1.0 dB...Detection probability: 100%

结果

在信噪比循环的最后,示例将每个信噪比值的计算检测概率与目标概率绘制出来。

%地块探测概率图(“名字”“探测概率”);情节(SNRdB pDetection,“这”“线宽”2,“MarkerSize”7);标题([的检测概率num2str (numPRACHSlots)“PRACH槽”]);包含(“信噪比(dB)”);ylabel (“探测概率”);网格;持有%绘图目标概率如果prachEnabled对于错过的检测测试,检测概率应该是>= 99%pTarget = 99;其他的对于虚警测试,检测概率应< 0.1%pTarget = 0.1;% #好< UNRCH >结束图(-6.0,pTarget / 100,“处方”“线宽”2,“MarkerSize”7);传奇(的仿真结果, (“目标”num2str (pTarget)“%概率”),“位置”“最佳”);minP = 0;如果(~isnan(min(pDetection))) minP = min([pDetection(:);pTarget]);结束轴([SNRdB (1) -0.1 SNRdB(结束)+ 0.1 minp - 0.05 - 1.05))

参考文献

  1. 3gpp ts 38.141-1。“NR;基站(BS)一致性测试。第一部分:进行一致性测试。第三代伙伴计划;技术规范集团无线接入网

  2. 3gpp ts 38.104。“NR;基站(BS)无线电发射和接收。第三代伙伴计划;技术规范集团无线接入网

另请参阅

功能

对象

相关的话题