主要内容

5G NR PRACH检测测试

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

介绍

PRACH是终端用来发起与gndeb同步的上行传输。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- 8.4.1.5-3更新时间容错值和信噪比。

模拟配置

这个例子考虑10个子帧在一定的信噪比。你应该使用大量的numSubframes产生有意义的结果。你可以设置SNRdB作为值数组或标量。有关此示例使用的信噪比定义的解释,请参见用于链路仿真的信噪比定义.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配置。

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

%设置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));结束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)通道。MIMOCorrelation =“低”% MIMO相关通道。TransmissionDirection =“上行”%上行传输通道。NumTransmitAntennas = 1;%发送天线数通道。NumReceiveAntennas = 2;%接收天线数通道。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序言。将定时偏移基值设置为PRACH生成循环移位次数的50%。对于每个前导,这个偏移量都会增加,增加一个0.1微秒的步长值,直到测试范围的结束,对于PRACH前导格式0,这个范围是0.9微秒。然后重复这个模式。

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

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

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

%初始化存储每个信噪比检测概率的变量pDetection = 0(大小(SNRdB));%获取信道多路径的最大延迟采样数%的组件。这是从最大的通道路径计算出来的%延迟和信道滤波器的实现延迟。这个例子%需要此参数来刷新信道滤波器以获取接收的信号。channelInfo =信息(渠道);maxChDelay = ceil(max(channelInfo.PathDelays*channel.SampleRate)) + 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 =开环;waveconfig_init = waveconfig;ofdmInfo_init = ofdmInfo;channelInfo_init = channelInfo;snrIdx = 1:元素个数(SNRdB)%注释掉用于并行计算% parfor snrIdx = 1:numel(SNRdB) % uncomment用于并行计算为了减少总的模拟时间,你可以执行这个循环% parallel使用并行计算工具箱。注释掉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;% Loop for each PRACH slotnumActivePRACHSlots = 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如果开环。上帝抵抗军= = 839%长序言,值如图8.4.1.4.2-2baseOffset = ((winfo.WaveformResources.PRACH.Resources.PRACHSymbolsInfo.NumCyclicShifts / 2) / prach.LRA) / prach.SubcarrierSpacing * 1 e3;%(微秒)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 ((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] = hPRACHDetect(carrier, prach, rxwave, (0:63).');%前导检测测试如果(长度(发现)= = 1)测试正确的序言检测如果(= = prach.PreambleIndex检测)%计算时间估计误差trueOffset = timingOffset / 1 e6;% (s)measuredOffset =补偿(1)/ channel.SampleRate;timingerror = abs (measuredOffset-trueOffset);测试可接受的定时错误如果(timingerror<=timeErrorTolerance/1e6) detectedCount = detectedCount + 1;%检测序言其他的disp (“定时误差”);结束其他的disp (“检测到错误的序言”);结束其他的disp ('检测到多个或零序言');结束结束nSlot循环的%%计算此信噪比的最终检测概率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)无线电发射和接收。”第三代合作伙伴项目;技术规范无线电接入网

另请参阅

功能

对象

相关的话题