主要内容

5G NR PRACH检测测试

这个例子展示了如何建模物理随机接入信道(PRACH)漏检一致性测试,定义在TS 38.141-1 [1]。您可以了解如何在存在前导信号存在下测量正确检测的概率。

介绍

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

  • 检测错误前言

  • 没有发现前言

  • 检测正确的前导码,但使用错误的定时估计

TS 38.141-1规定,当最强路径的定时偏移的估计误差小于表8.4.1.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-1和表8.4.1.5-1至8.4.1.5-3更新时间误差容限和SNR的值。

仿真配置

这个例子考虑10个子帧在一定的信噪比。你应该使用大量的numsubframes.产生有意义的结果。你可以设置SNRdB作为值数组或标量。有关本示例使用的SNR定义的说明,请参阅用于链路仿真的信噪比定义。TS 38.141-1中的频率偏移量如表8.4.1.5所示foffset这是在发射器和接收器之间建模的。

numSubframes=10;%在每个信噪比下要模拟的1ms子帧数SNRdB=[-21,-16,-11,-6,-1];%信噪比范围,单位为dBfoffset = 400.0;%频率偏移量(Hz)TimeRortolerance = 2.55;microSeconds中的%误差容差

运营商配置

使用nrCarrierConfig配置对象载体指定运营商设置。该示例考虑了一个由15kHz的子载波间隔的载波,以及5 MHz的带宽。也就是说,载波跨越25资源块,根据TS 38.104中的表5.3.2-1 [2]。

载体= nrCarrierConfig;母舰。SubcarrierSpacing = 15;母舰。NSizeGrid = 25;

Prach配置

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

通过使用nrprachconfig配置对象pr,参照TS 38.141-1中表A.6-1和第8.4.1.4.2节。

%设置PRACH配置Prach = nrprachconfig;Prach.frequencyRange =“FR1”;%频率范围prach.duplemmode =.'FDD';%频分双工(FDD)prach.ConfigurationIndex=27;%格式0的配置索引prach.SubcarrierSpacing=1.25;%子载波间距开环。SequenceIndex = 22;%逻辑序列索引开环。PreambleIndex = 32;%序言索引prach.RestrictedSet =.“UnrestrictedSet”;%正常模式开环。FrequencyStart = 0;%频率定位中存储的NCS表定义ZeroCorrelationZone的值% nrPRACHConfig对象开关开环。格式案例{'0''1''2'}ncsTable=nrPRACHConfig.Tables.NCSFormat012;ncsTableCol=(字符串(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));结尾nc = 13;zeroCorrelationZone = ncsTable.ZeroCorrelationZone (ncsTable {:, ncsTableCol} = = nc);开环。ZeroCorrelationZone = ZeroCorrelationZone;%循环换档指数%计算该PRACH配置的ofdm相关信息窗口= [];ofdmInfo = nrPRACHOFDMInfo(载体、开环“开窗”,开窗);

传播通道配置

使用NRTDL信道对象来配置抽头延迟线(TDL)传播信道模型渠道如TS 38.141-1表8.4.1.1-1中所述。

channel = nrtdlchannel;channel.delayprofile =“TDL-C”;%延迟概要channel.delayspread = 300e-9;%延迟在几秒钟内传播channel.maximumdopplershift = 100.0;Hz中的%最大多普勒偏移通道。SampleRate = ofdmInfo.SampleRate;Hz中的%输入信号采样率信道相关性=“低的”;%MIMO相关channel.TransmissionDirection =.“上行”;%上行链路传输channel.NumTransmitAntennas=1;%发射天线的数量通道。NumReceiveAntennas = 2;%接收天线的数量channel.NormalizePathGains=true;%标准化延迟配置文件channel.seed = 42;%通道种子。为不同的通道实现更改此参数channel.normalizechanneloutpuls = true;%标准化为接收天线

循环信噪比值

使用一个循环来运行由向量给出的信噪比点集的仿真SNRdB。这里配置的SNR矢量是一个SNR点的范围,包括在-6.0dB处的点,即序言格式0的PRACH检测率(99%)的SNR,如表8.4.1.5所讨论的-1在TS 38.141-1中。

hNRPRACHWaveformGenerator生成标准化为与5G工具箱内上行链路数据传输相同发射功率的输出信号™. 因此,必须对添加到PRACH的噪声进行相同的归一化。在OFDM解调之前添加的噪声将被IFFT放大一个等于IFFT大小平方根的因子($ n_ {fft} $)。为了确保在解调后添加的噪声的功率是归一化的,因此实现所需的SNR,所需的噪声功率除以$ n_ {fft} $。另外,由于噪声的实部和虚部在合并成复加性高斯白噪声之前是分开产生的,因此噪声幅值按比例缩放$ 1 / \ sqrt2 $所以产生的噪声功率为1。

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

  • PRACH传输:hNRPRACHWaveformGenerator生成一个PRACH波形。发送带有TS 38.141-1图8.4.1.4.2-2中定义的定时偏移的PRACH前导码。将定时偏移基准值设置为PRACH生成循环移位数的50%。每个前导码的偏移量都会增加,增加0.1微秒的步长值,直到测试范围结束,PRACH前导码格式为0.9微秒。这种模式随后重复。

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

  • 频率偏移的应用:按照规范的定义,将频率偏移应用到接收波形上。

  • PRACH检测:执行PRACH检测使用hPRACHDetect对于所有小区前导码索引(0-63)。使用由返回的检测到的PRACH索引和偏移量hPRACHDetect根据讨论的约束确定检测成功的位置介绍部分。

%初始化存储每个SNR下检测概率的变量pDetection = 0(大小(SNRdB));%通过通道多径获得最大延迟样本数% 成分。这是从最大的通道路径计算的%延迟和通道滤波器的实现延迟。榜样%这需要冲洗通道滤波器以获得接收信号。channelInfo=info(频道);maxChDelay=ceil(最大值(channelInfo.PathDelays*channel.SampleRate))+channelInfo.ChannelFilterDelay;仿真期间PRACH插槽总数NumFrachSlots=地板(numSubframes/prach.SubFramesPermachSlots);%存储生成PRACH波形所需的配置参数waveconfig.numsubframes = prach.subframesperprachslot;waveconfig.windowing =窗口;waveconfig.carriers =载体;waveconfig.prach.config = prach;%临时变量'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)%并行计算的注释对于并行计算的%pardx = 1:numel(snRDB)%取消注释%要减少总模拟时间,可以执行此循环%使用并行计算工具箱进行并行计算。注释掉“for”%语句并取消对“parfor”语句的注释。如果% Toolbox(TM)未安装,'parfor'默认为普通的'for'语句%将随机数生成器设置设置为默认值rng(“默认”);初始化所需的SNR点的%初始化变量%使用并行计算工具箱时的变量数量prach = prach_init;waveconfig = waveconfig_init;OFDMINFO = OFDMINFO_INIT;channelinfo = channelinfo_init;%重置通道,以便每个SNR点都会遇到相同的%渠道实现重置(频道);%标准化噪声功率以考虑采样率,这是一个OFDM调制中使用的IFFT尺寸的效果。SNR定义每个接收天线的每个资源元素%。信噪比= 10 ^ (SNRdB (snrIdx) / 10);N0 = 1 /√(2.0 * channel.NumReceiveAntennas *双(ofdmInfo.Nfft) *信噪比);%检测到的前导码计数检测到= 0;%每个PRACH插槽的循环numActivePRACHSlots = 0;为了nSlot=0:numPRACHSlots-1 prach.nprachlots=nSlot;%产生电流槽的PRACH波形waveconfig.PRACH.Config.NPRACHSlot=nSlot;[waveform,~,winfo]=HNRPachWaveOrmGenerator(waveconfig);%如果PRACH处于非活动状态,请跳过此插槽如果(isempty(winfo.WaveformResources.PRACH))继续;结尾numActivePRACHSlots = numActivePRACHSlots + 1;根据TS 38.141-1数字设置PRACH时序偏移的PRACH定时偏移%8.4.1.4.2-2和图8.4.1.4.2-3如果prach.LRA==839%长期序言,值如图8.4.1.4.2-2baseOffset=((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;%(微秒)定时偏移=基准偏移+模(nSlot,9)/10;%(微秒)结尾采样延迟=固定(定时偏移/1e6*ofdmInfo.SampleRate);%产生发射波形(sampleDelay txwave = [0, 1);波形(1:(end-sampleDelay)));%通过频道模型传递数据。在末尾附加零%发送波形以刷新频道内容。这些零取零百分比频道引入的任何延迟。这是一个混合多路径延迟和实现延迟的百分比。这个值可能%根据采样率、延迟曲线和延迟进行更改%散布rxwave =通道([txwave;0 (maxChDelay、尺寸(txwave 2))));%增加噪音噪声= N0*complex(randn(size(rxwave)), randn(size(rxwave))));Rxwave = Rxwave +噪声;%消除通道建模的实现延迟rxwave=rxwave((channelInfo.ChannelFilterDelay+1):结束,:);%施加频率偏移量t=((0:size(rxwave,1)-1)/channel.SampleRate);rxwave=rxwave.*repmat(exp(1i*2*pi*foffset*t),1,大小(rxwave,2));所有小区前导码索引的%PRACH检测[detected, offset] = hPRACHDetect(carrier, prach, rxwave, (0:63).');序言检测的%测试如果(长度(检测到)=1)测试正确的序言检测如果(检测到==prach.PreambleIndex)%计算定时估计误差TrueOffset = TimingOffset / 1E6;%(s)测量OFFSET =偏移(1)/channel.SAMPLEDE;timingError = ABS(测量OFFSET-TRUEOFFSET);%测试可接受定时错误如果(timingerror<=时间误差公差/1e6)检测计数=检测计数+1;%检测序言别的disp('定时错误');结尾别的disp('检测到序言不正确');结尾别的disp('检测到多个或零序言');结尾结尾%nSlot环路的设计%计算该信噪比的最终检测概率pdetection(snridx)=检测到的count / numactiveprachslots;结尾回路信噪比的%
Detected multiple或零preambles Detected multiple或零preambles检测到多个或零preambles

结果

在信噪比回路的末尾,该示例将计算出的每个信噪比值的检测概率与目标概率绘制成图。

hprachdetectionResults(SNRDB,NumSubframes,PDetection);

附录

此示例使用这些辅助功能:

工具书类

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

  2. 3GPP TS 38.104.“NR;基站(BS)无线电传输和接收。”第三代合作伙伴计划;技术规范集团无线电接入网络

也可以看看

职能

对象

相关的话题