主要内容

5G NR PRACH检测测试

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

介绍

PRACH是用户设备(UE)使用的上行链路传输,以启动与GnodeB同步。TS 38.141-1第8.4.1.5节将PRACH检测的概率定义为大于或等于99%的特定SNR值,用于一组PRACH配置和传播条件。有几个检测错误情况:

  • 检测错误前言

  • 没有发现前言

  • 检测正确的序言,但具有错误的定时估计

当最强路径的定时偏移的估计误差小于表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和表8.4.1.5- 8.4.1.5-3更新时间容错值和信噪比。

模拟配置

这个例子考虑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)timeErrorTolerance = 2.55;%容错时间,以微秒为单位

载波配置

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

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

开环结构

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

使用使用方法设置PRACH配置nrPRACHConfig配置对象开环,参照TS 38.141-1中表A.6-1和第8.4.1.4.2节。

%set prach配置开环= nrPRACHConfig;开环。FrequencyRange ='fr1'% 频率范围开环。DuplexMode =“FDD”%频分双工(FDD)Prach.configurationIndex = 27;%格式0的配置索引Prach.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));结束nc = 13;zeroCorrelationZone = ncsTable.ZeroCorrelationZone (ncsTable {:, ncsTableCol} = = nc);开环。ZeroCorrelationZone = ZeroCorrelationZone;循环移位指数%计算该PRACH配置的ofdm相关信息窗口= [];ofdmInfo = nrPRACHOFDMInfo(载体、开环'窗口',窗口);

传播通道配置

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

频道= nrTDLChannel;通道。DelayProfile =“TDL-C”%延迟概要通道。DelaySpread = 300 e-9;%延迟传播以秒为单位通道。MaximumDopplerShift = 100.0;%最大多普勒频移(Hz)通道。SampleRate = ofdmInfo.SampleRate;%输入信号采样率(Hz)channel.mimocorrelation =.“低”% MIMO相关通道。TransmissionDirection =“上行”%上行传输通道。NumTransmitAntennas = 1;百分比的发射天线通道。NumReceiveAntennas = 2;%接收天线数channel.normalizepathgains = true;正规化延迟轮廓功率通道。种子= 42;%通道种子。为不同的通道实现更改此参数通道。NormalizeChannelOutputs = true;接收天线正常化

循环信噪比值

使用一个循环来运行由向量给出的信噪比点集的仿真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中定义的定时偏移来发送PRACH前导码图8.4.1.4.2-2。将时序偏移基本值设置为PRACH生成的循环移位数量的50%。对于每个前导码,该偏移量增加了0.1微秒的步长值,直到测试范围的结束,这对于Prach前导码格式为0.9微秒。然后重复该模式。

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

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

  • 开环检测:执行PRACH检测使用hPRACHDetect对于所有小区序言指数(0-63)。使用检测到的PRACH索引和偏移返回hPRACHDetect根据文中讨论的约束条件确定检测成功的位置介绍部分。

%初始化在每个SNR处存储检测概率的变量pDetection = 0(大小(SNRdB));%获取信道多路径的最大延迟采样数%的组件。这是从最大的通道路径计算出来的频率延迟和通道过滤器的实现延迟。这个例子%需要它刷新信道滤波器以获得接收的信号。ChannelInfo = Info(频道);maxchdelay = ceil(max(channicinfo.pathdelays * channel.samplevere))+ channelinfo.channelfilterdelay;%仿真周期内PRACH槽位总数numPRACHSlots = floor(numSubframes / prach.SubframesPerPRACHSlot);%存储生成PRACH波形所需的配置参数waveconfig。NumSubframes = prach.SubframesPerPRACHSlot;waveconfig。窗口=窗口;waveconfig。运营商=载体;waveconfig.PRACH.Config =开环;%临时变量'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:numel(SNRdB) % uncomment用于并行计算为了减少总的模拟时间,你可以执行这个循环通过使用并行计算工具箱并行的%并行。评论'for'%语句并取消“parfor”语句的注释。如果并行计算% Toolbox(TM)未安装,'parfor'默认为普通的'for'语句%将随机数生成器设置为默认值rng (“默认”);%初始化这个SNR点的变量,需要初始化使用并行计算工具箱时变量的百分比开环= prach_init;waveconfig = waveconfig_init;ofdmInfo = ofdmInfo_init;channelInfo = channelInfo_init;重置信道,使每个信噪比点体验相同%通道实现重置(渠道);%归一化噪声功率,以考虑采样率,这是一个OFDM调制中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;%产生电流槽的PRACH波形waveconfig.prach.config.nprachslot = nslot;[波形,〜,winfo] = hnrprachwaveformgenerator(waveconfig);%如果PRACH未激活,跳过该槽位如果(isempty(winfo.waveformresources.prach))继续结束numActivePRACHSlots = numActivePRACHSlots + 1;%按照TS 38.141-1设置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-3baseOffset = 0;%(微秒)timinggoffset = baseOffset + mod(nSlot,9)/10;%(微秒)结束sampleDelay = fix(timinggoffset / 1e6 * ofdmInfo.SampleRate); / /修改时间%生成传输波形(sampleDelay txwave = [0, 1);波形(1:(end-sampleDelay)));%通过通道模型传递数据。的末尾加0%发送波形到刷新信道内容。这些零点取%考虑信道中引入的任何延迟。这是一种混合多路径延迟和实现延迟的百分比。这个值可能根据采样率,延迟配置文件和延迟,百分比变更% 传播rxwave =通道([txwave;0 (maxChDelay、尺寸(txwave 2))));%添加噪声噪声= N0*complex(randn(size(rxwave)), randn(size(rxwave))));Rxwave = Rxwave +噪声;%删除了频道建模的实现延迟rxwave = rxwave((channicinfo.channelfilterdelay + 1):结束,:);应用频率偏移t =((0:size(rxwave,1)-1)/channel.samplege)。';rxwave = rxwave。* repmat(exp(1i * 2 * pi * foffset * t),1,尺寸(rxwave,2));% PRACH检测所有细胞前序指数[detected, offset] = hPRACHDetect(carrier, prach, rxwave, (0:63).');%前导检测测试如果(长度(检测到)== 1)测试正确的序言检测如果(检测到== Prach.ProdbleIndex)%计算定时估计错误trueOffset = timingOffset / 1 e6;% (s)measuredOffset =补偿(1)/ channel.SampleRate;timingerror = abs (measuredOffset-trueOffset);测试可接受的定时错误如果(timingerror<=timeErrorTolerance/1e6) detectedCount = detectedCount + 1;%检测序言其他的DISP(“定时误差”);结束其他的DISP(“检测到错误的序言”);结束其他的DISP('检测到多个或零序言');结束结束nslot循环的%%计算此SNR的最终检测概率pDetection (snrIdx) = detectedCount / numActivePRACHSlots;结束回路信噪比的%
Detected multiple或零preambles Detected multiple或零preambles检测到多个或零preambles

结果

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

hPRACHDetectionResults (SNRdB numSubframes pDetection);

附录

下面的例子使用了这些辅助函数:

参考文献

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

  2. 3 gpp TS 38.104。“NR;基站(BS)无线电发射和接收。”第三代合作伙伴项目;技术规范无线电接入网

另请参阅

功能

对象

相关的话题