主要内容

5G NR PRACH检测测试

此示例显示如何建模物理随机访问通道(PRACH)遗漏检测一致性测试,定义在TS 38.141-1 [1].您可以了解如何测量在存在前导信号的情况下正确检测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个子帧在一些信噪比下的情况。你应该使用大量的numSubframes产生有意义的结果。你可以设置SNRdB作为值的数组或标量。有关本例使用的信噪比定义的解释,请参见链路模拟中使用的信噪比定义.频率偏移量如表8.4.1.5-1所示foffset这是在发射器和接收器之间建模的。

numSubframes = 10;在每个信噪比下模拟的1毫秒子帧数SNRdB = [-21, -16, -11, -6, -1];%信噪比范围,单位为dBFoffset = 400.0;%频率偏移,单位为HztimeErrorTolerance = 2.55;时间容错率(微秒)

载波配置

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

carrier = nrCarrierConfig;母舰。SubcarrierSpacing = 15;母舰。NSizeGrid = 25;

开环结构

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;%循环位移指数计算这个PRACH配置的ofdm相关信息Windowing = [];ofdmInfo = nrPRACHOFDMInfo(载体,路径,“窗口”,窗口);

传输信道配置

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

channel = nrTDLChannel;通道。DelayProfile =“TDL-C”%延迟配置文件通道。DelaySpread = 300e-9;%延迟扩散,以秒为单位通道。MaximumDopplerShift = 100.0;最大多普勒频移(以Hz为单位)通道。SampleRate = ofdmInfo.SampleRate;输入信号采样率(Hz)通道。MIMOCorrelation =“低”% MIMO相关性通道。TransmissionDirection =“上行”%上行传输通道。numtransmitantenna = 1;%发射天线个数通道。numreceiveantenna = 2;%接收天线个数通道。normalizepathgain = 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图8.4.1.4.2-2中定义的定时偏移量的PRACH序音。设置一个定时偏移基准值为PRACH生成循环移位次数的50%。对于每个序文,该偏移量都会增加,增加一个0.1微秒的步长值,直到测试范围的结束,对于PRACH序文格式0,该范围为0.9微秒。然后这个模式重复。

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

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

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

初始化变量存储在每个信噪比下的检测概率pDetection =零(大小(SNRdB));获取通道多路径延迟采样的最大数量%的组件。这是从最大的通道路径计算出来的%延迟和信道滤波器的实现延迟。这个例子%要求刷新信道滤波器以获得接收到的信号。channelInfo =信息(通道);maxChDelay = ceil(max(channelinfo . pathdelayed *channel.SampleRate)) + channelInfo.ChannelFilterDelay;%模拟周期内PRACH插槽总数numPRACHSlots = floor(numSubframes / prach.SubframesPerPRACHSlot);存储生成PRACH波形所需的配置参数waveconfig。NumSubframes = prach.SubframesPerPRACHSlot;waveconfig。开窗=开窗;waveconfig。carrier =承运人;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)%注释用于并行计算% parfor snrIdx = 1:数值(SNRdB) % uncomment用于并行计算要减少总的模拟时间,您可以执行此循环%并行,使用并行计算工具箱。注释掉for并取消'parfor'语句的注释。如果并行计算% Toolbox(TM)未安装,“parfor”默认为普通的“for”语句将随机数生成器设置设置为默认值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;为当前槽位生成PRACH波形waveconfig.PRACH.Config.NPRACHSlot = nSlot;[波形,~,winfo] = hNRPRACHWaveformGenerator(波形配置);如果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如果开环。上帝抵抗军= = 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);波形(1:(end-sampleDelay)));通过通道模型传递数据。属性的末尾附加0%传输波形以刷新通道内容。这些0%,考虑通道中引入的任何延迟。这是一种混合多路径时延和实现时延的百分比。这个值可能%的变化取决于采样率,延迟配置文件和延迟%的传播Rxwave =通道([txwave;0 (maxChDelay、尺寸(txwave 2))));%添加噪音噪声= N0*complex(randn(size(rxwave)), randn(size(rxwave)));Rxwave = Rxwave +噪声;移除通道建模的实现延迟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] = hPRACHDetect(carrier, prach, rxwave, (0:63).');测试前导检测如果(长度(发现)= = 1)测试正确的前导检测如果(= = prach.PreambleIndex检测)计算时间估计误差trueOffset = timingOffset/1e6;% (s)measuredOffset = offset (1)/channel.SampleRate;timingerror = abs(measuredooffset - trueoffset);测试可接受的计时错误如果(timingerror<=timeErrorTolerance/1e6) detectedCount = detectedCount + 1;%检测到前导其他的disp (“定时误差”);结束其他的disp (“检测到不正确的序言”);结束其他的disp (“检测到多个或零序文”);结束结束%的nSlot循环计算该信噪比的最终检测概率pDetection(snrIdx) = detectedCount/numActivePRACHSlots;结束信噪比环路的%
检测到多个或零序音检测到多个或零序音检测到多个或零序音

结果

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

hPRACHDetectionResults(SNRdB, numSubframes, pDetection);

附录

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

参考文献

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

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

另请参阅

功能

对象

相关的话题