主要内容

5G NR PRACH检测与虚警测试

这个示例实现了物理随机访问通道(PRACH)漏检和虚报警一致性测试,如TS 38.141-1中定义的那样。可以通过测量在有前导信号的情况下正确检测到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和表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-3分别更新时间容错和信噪比值。

模拟配置

该示例考虑在若干信噪比下有10个PRACH槽位。你应该使用大量的numPRACHSlots产生有意义的结果。你可以设置SNRdB作为值的数组或标量。有关本示例使用的信噪比定义的解释,请参见链路模拟中使用的信噪比定义.频率偏移量如TS 38.141-1中表8.4.1.5所示foffset这是在发射器和接收器之间建模的。的timeErrorTolerancevariable表示时间容错量,定义见TS 38.141-1中表8.4.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的载波。即运营商跨越25个资源块,如TS 38.104表5.3.2-1所示。

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

开环结构

用于PRACH检测一致性测试的PRACH配置如表A.6-1所示。

设置PRACH配置nrPRACHConfig配置对象开环,参见表A.6-1和TS 38.141-1中的8.4.1.4.2。

设置PRACH配置开环= nrPRACHConfig;开环。FrequencyRange =“FR1”%频率范围开环。DuplexMode =“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. limittedset);情况下“3”ncsTable = nrPRACHConfig.Tables.NCSFormat3;ncsTableCol = (string(ncsTable.Properties.VariableNames) == prach. limittedset);否则ncsTable = nrPRACHConfig.Tables.NCSFormatABC;ncsTableCol = contains(string(ncsTable.Properties.VariableNames), num2str(prach.LRA));结束nc = 13;zeroCorrelationZone = ncsTable.ZeroCorrelationZone (ncsTable {:, ncsTableCol} = = nc);开环。ZeroCorrelationZone = ZeroCorrelationZone;%循环位移指数

传播通道配置

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

频道= nrTDLChannel;通道。DelayProfile =“TDLC300”%延迟概要通道。MaximumDopplerShift = 100.0;%以Hz为单位的最大多普勒频移通道。SampleRate = ofdmInfo.SampleRate;%输入信号采样率,单位为Hz通道。MIMOCorrelation =“低”% MIMO相关通道。TransmissionDirection =“上行”%上行传输通道。NumReceiveAntennas = 2;%接收天线数通道。NormalizePathGains = 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 = 0(大小(SNRdB));存储生成PRACH波形所需的配置参数waveconfig。NumSubframes = prach.SubframesPerPRACHSlot;waveconfig。窗口= [];waveconfig。运营商=载体;waveconfig.PRACH.Config =开环;waveconfig.PRACH.Enable = prachEnabled;临时变量'prach_init', 'waveconfig_init', 'ofdmInfo_init',%和'channelInfo_init'用于创建临时变量'prach', 'waveconfig', 'ofdmInfo'和'channelInfo'中的信噪比循环%以创建独立的实例,以防并行模拟prach_init =开环;waveconfig_init = waveconfig;ofdmInfo_init = ofdmInfo;channelInfo_init = channelInfo;snrIdx = 1:元素个数(SNRdB)%注释用于并行计算% parfor snrIdx = 1: numl (SNRdB) % uncomment用于并行计算要减少总模拟时间,可以执行此循环%通过使用并行计算工具箱并行。注释掉for语句语句,并取消注释'parfor'语句。如果并行计算% Toolbox(TM)未安装,“parfor”默认为普通的“for”语句在命令窗口中显示进度timeNow = char (datetime (“现在”“格式”“HH: mm: ss”));流([timeNow':模拟信噪比= %+5.1f dB…'), SNRdB (snrIdx));将随机数生成器设置为默认值rng (“默认”);初始化此信噪比点的变量,初始化所需%的变量使用并行计算工具箱开环= prach_init;waveconfig = waveconfig_init;ofdmInfo = ofdmInfo_init;channelInfo = channelInfo_init;重置通道,使每个信噪比点将经历相同的%通道实现重置(渠道);%归一化噪声功率以考虑抽样率,即aOFDM调制中使用的IFFT大小的%函数。定义了信噪比每个接收天线的每个载波资源单元的%。信噪比= 10 ^ (SNRdB (snrIdx) / 10);N0 = 1 /√(2.0 * channel.NumReceiveAntennas *双(ofdmInfo.Nfft) *信噪比);%检测到的前导计数detectedCount = 0;为每个PRACH槽循环numActivePRACHSlots = 0;nSlot = 0: numPRACHSlots-1为当前槽位生成PRACH波形开环。NPRACHSlot = nSlot;waveconfig.PRACH.Config.NPRACHSlot = nSlot;[波形,~,winfo] = hNRPRACHWaveformGenerator (waveconfig);根据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 * 1 e3;%(微秒)timinggoffset = baseOffset + mod(nSlot,10)/10;%(微秒)其他的短序言,值如图8.4.1.4.2-3所示baseOffset = 0;%(微秒)timinggoffset = baseOffset + mod(nSlot,9)/10;%(微秒)结束sampleDelay = fix(timinggoffset / 1e6 * ofdmInfo.SampleRate);%生成发射波形(sampleDelay txwave = [0, 1);波形);通过通道模型传递数据。的末尾加上0%传输波形以刷新通道内容。这些零%考虑到通道中引入的任何延迟。这是一个混合%的多路径时延和实现时延。这个值可能%的变化取决于采样率,延迟配置和延迟%的传播rxwave =通道([txwave;0 (channelInfo。MaximumChannelDelay、大小(txwave, 2)));%添加噪声noise = N0*complex(randn(size(rxwave)), randn(size(rxwave)));Rxwave = Rxwave + noise;如果PRACH未激活则跳过此槽位。。前进通道到后,跳过此槽的检测。%,确保通道始终与当前槽%。如果PRACH在这个槽位是不活动的,接收器不应该预期任何PRACH传输,因此甚至不应该尝试%检测一个PRACH。跳过未激活插槽的检测是%在执行一致性测试时尤其重要。如果% PRACH是不活动的,在内部计算的参考波形% |nrPRACHDetect|函数为空。这就导致了一个空%相关性,从而到一个空的检测到的序言。这个空% preamble导致检测值不正确%的概率。如果isempty (winfo.WaveformResources.PRACH.Resources.PRACHSymbols)继续结束numActivePRACHSlots = numActivePRACHSlots + 1;删除通道过滤器的实现延迟。rxwave = rxwave ((channelInfo。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(carrier, prach, rxwave,“DetectionThreshold”阈值);测试前导检测如果(长度(发现)= = 1)如果~ prachEnabled对于虚警测试,检测到的任何前导都是错误的。detectedCount = detectedCount + 1;其他的测试正确的前导检测如果(= = prach.PreambleIndex检测)计算定时估计误差trueOffset = timingOffset / 1 e6;% (s)measuredOffset =补偿(1)/ channel.SampleRate;timingerror = abs (measuredOffset-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%

结果

在信噪比循环的末尾,该示例根据目标概率绘制每个信噪比值的计算检测概率。

Plot detection概率图(“名字”“探测概率”);情节(SNRdB pDetection,“这”“线宽”2,“MarkerSize”7);标题([“检测概率”num2str (numPRACHSlots)“开槽(s)”]);包含(“信噪比(dB)”);ylabel (“探测概率”);网格;持有Plot目标概率如果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. 3 gpp TS 38.141 - 1。“NR;基站(BS)一致性测试。第1部分:执行一致性测试。”第三代伙伴关系项目;技术规范组无线电接入网

  2. 3 gpp TS 38.104。“NR;基站(BS)无线电传输和接收。第三代伙伴关系项目;技术规范组无线电接入网

另请参阅

功能

对象

相关的话题

Baidu
map