主要内容

NR HDL细胞搜索

本示例展示了一个5G NR小区搜索子系统的设计,该子系统优化了HDL代码生成和硬件实现。

介绍

本例中描金宝app述的Simulink®模型是一个用于5G NR频率范围1 (FR1)的同步信号块(SSB)检测器的hdl优化实现。这个例子是一个相关的集合,展示了设计和部署5G NR单元搜索和MIB恢复算法到硬件的工作流。完整的工作流如图所示。

此工作流中的每一步都由一个或多个相关示例演示。

  1. MATLAB黄金参考算法步骤由NR Cell Search and MIB and SIB1 Recovery(5 g工具箱)示例,其中显示了浮点黄金参考算法。

  2. MATLAB硬件参考算法步骤包括在NR HDL下行链路接收器MATLAB参考例如,它对硬件友好的算法建模并生成测试波形。此MATLAB®代码操作浮点数据样本的向量和矩阵,不支持HDL代码生成。金宝app

  3. 金宝appSimulink定点实现模型Step包含多个示例。NR HDL小区搜索示例(本示例)演示了一个使用与MATLAB参考相同算法的5G小区搜索Simulink子系统。金宝app的NR HDL MIB恢复example增加广播信道解码和MIB恢复子系统。的NR HDL SIB1恢复示例添加了一个恢复SIB1资源网格的子系统,并展示了如何使用MATLAB参考代码解码其输出。的NR HDL MIB Recovery for FR2示例展示了扩展后支持FR2的单元格搜索和MIB恢复模型。金宝app这些模型对定点数据进行操作,并针对HDL代码生成进行了优化。

  4. 金宝appSimulink SoC部署模型步骤由在soc上部署NR HDL参考应用示例,它构建在定点实现模型之上,并使用硬件支持包在硬件上部署算法。金宝app

有关如何将MATLAB和Simulink用于开发可部署模型的一般描述,请参见金宝appfpga和asic的无线通信设计

单边带探测器的框图如图所示。该检测器执行与单元搜索算法相关的所有高速信号处理任务,因此非常适合FPGA或ASIC实现。单边带探测器在给定的频率偏移和副载波间距下及时搜索单边带。它被设计用来作为一个更大的系统的一部分,实现载波频率偏移恢复和副载波间距检测。中所示的控制器必须用于协调整体单元搜索使用模拟设备AD9361/AD9364实现5G NR MIB恢复(Xilinx Zynq-Based Radio金宝app通信工具箱支持包)的例子。

SSB探测器执行初级同步序列(PSS)搜索、正交频分复用(OFDM)解调和次级同步序列(SSS)搜索。它还包括一个数字下变频(DDC),用于校正接收信号中的频率偏置。SSB探测器有两种工作模式,搜索解调,在本例中演示。在搜索模式下,检测器搜索ssb并返回ssb的参数。在解调模式下,检测器恢复指定的SSB ofdm -解调其资源网格并在适当的资源元素中搜索SSS。

文件结构

示例使用这些文件。

金宝app仿真软件模型

  • nrhdlSSBDetection.slx:这个Simu金宝applink模型使用nrhdlSSBDetectionFR1Core模型参考来模拟MIB恢复过程中SSB解码部分的行为。

  • nrhdlSSBDetectionFR1Core.slx:该模型参考实现SSB检测算法。

金宝app模型数据字典

  • nrhdlReceiverData.sldd:此Simul金宝appink数据字典包含定义示例模型中包含的总线的总线对象。

MATLAB代码

  • runSSBDetectionModelSearch.m:脚本,用于运行和验证nrhdlSSBDetection搜索模式下的模型。

  • runSSBDetectionModelDemod.m:脚本,用于运行和验证nrhdlSSBDetection解调模式下的模型。

  • nrhdlexamples:包含MATLAB参考代码和实用函数的包,用于验证实现模型。

NR HDL细胞搜索模型

这个图显示了nrhdlSSBDetection模型。模型的顶层从MATLAB基础工作空间读取信号,将它们传递给SSB检测子系统,并将输出写回工作空间。使用runSSBDetectionModelSearchrunSSBDetectionModelDemod用于运行模型和对输出进行后处理的脚本。

单边带检测接口

SSB检测子系统包含输入扩展子系统和nrhdlSSBDetectionFR1Core模型参考。的输入扩展子系统以0.875的因子衡量输入,为后续处理阶段提供了空间。的nrhdlSSBDetectionFR1Core下一节将介绍算法。

输入

  • dataIn: 14位带符号复数信号,采样速率为61.44 Msps。

  • validIn: 1位控制信号验证dataIn

  • frequencyOffset: 32位有符号值,指定要校正的频率偏移量。这个信号连接到一个带有32位累加器的NCO。使用这个等式将值转换为Hz:frequencyOffset_HzfrequencyOffset* 61.44e6 / 2^32。

  • subcarrierSpacing: 2位无符号值,指定子载波间距。设置此信号为0选择15kHz,或1选择30kHz。

  • 模式: 1位无符号值,指定操作模式。将搜索模式的信号设置为0,或demod模式的信号设置为1。

  • timingOffset: 21位无符号值,指定要解调SSB的起始时间偏移量。指定样品中从0到1228799的61.44 Msps的时间偏移。该参数仅对demod模式有效。

  • NCellID2: 2位无符号值,指定要解调的SSB的PSS(0,1或2)。该参数仅对demod模式有效。

  • 开始: 1位控制信号,用于开始搜索或解调操作。要启动操作,请设置frequencyOffsetsubcarrierSpacing模式timingOffset,NCellID2到所需的值和集合开始1真正的)进行一个或多个循环。如果某个操作已经在进行中,则该操作在开始被设置为1真正的).新的操作开始时开始返回给0).

输出

  • 状态: 4位无符号值,表示当前操作的进度。这个信号的可能值见下一节。

  • pssNCellID2: 2位无符号值,即检测到SSB的PSS(0,1或2)。

  • pssTimingOffset: 21位无符号值,即检测到SSB的时间偏移量。在样品中,从0到1228799的时间偏移为61.44 Msp。

  • pssFrequencyOffset: 32位带符号值,即检测到SSB的频率偏移量。这个信号的单位和frequencyOffset输入。

  • pssCorrelation: 32位unsigned值,表示PSS相关性的强度。

  • pssThreshold: 32位无符号值,表示检测到PSS时的阈值。

  • NCellID: 10位无符号值,即被解调SSB的cell ID。此值仅在demod模式下返回。

  • sssCorrelation: 32位unsigned值,表示SSS相关强度。此信号仅在demod模式下返回。

  • sssThreshold: 32位无符号值,表示SSS阈值。此值仅在demod模式下返回。

  • reportValid: 1位控制信号。在搜索模式下,此信号有效pssNCellID2pssTimingOffsetpssFrequencyOffsetpssCorrelation,pssThreshold用于检测每个PSS。在demod模式下,这个信号也会被验证NCellIDsssCorrelation,sssThreshold.在解调模式下,sssCorrelationsssThreshold仅在使用其PSS找到指定SSB时有效,并且NCellID仅在检测到SSS时有效。

  • gridData:资源网格数据的16位带符号复数值。接收器返回SSB资源网格的所有四个符号。每次返回一个资源元素的值。资源网格仅在demod模式下返回。

  • gridValid: 1位控制信号,用于验证gridData输出。只有在使用其PSS找到指定的SSB时才返回数据。此信号仅在demod模式下返回。

  • 诊断:包含诊断信号的总线。

状态信号状态

  • 0: Idle——初始状态。等待第一个启动脉冲。

  • 1:搜索模式——搜索PSS。

  • 2:搜索模式——操作完成,没有发现PSS。

  • 3.:搜索模式-操作完成,发现一个或多个pss。

  • 4: Demod模式——等待指定的PSS定时偏移。

  • 5: Demod模式-操作完成,PSS未找到。

  • 6: Demod模式——找到指定的PSS。解调资源网格并寻找SSS。

  • 7: Demod模式-操作完成,没有发现SSS。返回解调的资源网格。

  • 8: Demod模式-操作完成,发现SSS。返回解调的资源网格。

SSB检测模型参考结构

这个图显示了nrhdlSSBDetectionFR1Core模型。输入信号(dataIn)为以61.44 Msps采样的16位带符号复数值数据。DDC通过使用半带滤波器校正频率偏移并抽取8个样本(至7.68 Msps)。DDC的输出是SSB Search和Demod子系统的输入。检测状态块跟踪进程并生成状态输出。

SSB搜索和Demod子系统结构

SSB Search和Demod子系统执行SSB检测和解调。它的内部采样率随子载波间距(SCS)而变化。30kHz SCS使用7.68 Msps, 15kHz SCS使用3.84 Msps。左边的子载波间隔选择逻辑负责改变采样率。只有当一个新的操作被触发时,速率才能改变开始输入。

接收器有一个内部计时参考系统,通过在数据路径的关键点使用计数器来跟踪时间。定时参考计数20ms周期- 5G NR标准定义的小区搜索的假定SSB周期。以61.44 Msps模数1228800在样品中测量时间,以创建20ms周期。由于实际采样率为7.84 Msps或3.84 Msps,每个样本的定时参考计数器分别增加8或16。控件触发新操作时开始输入时,Start Controller记录开始时间并将时间传递给模型中的其他计时引用。当新的子载波间隔和相应的采样率适用时,这个信号告诉其他定时参考。其他计时引用要等到开始时间才会更改它们的增量。这种设计之所以可行,只是因为硬件延迟意味着其他计时引用滞后于Start Controller。这种结构使接收器能够持续跟踪时间,即使在采样率发生变化时也能保持一致。

SSB Search和Demod子系统包含了这些主要子系统。

  • 副载波间距选择:将输入转换为两个同步的采样流,一个为7.68 Msps,一个为3.84 Msps,并根据子载波间距选择将哪个流传递到后续处理阶段。

  • PSS检测:在接收信号中搜索PSS符号。下一节将更详细地描述这个子系统。

  • 循环前缀关联:计算循环前缀(CP)相关值。每个结果在最后四个OFDM符号上被平均。

  • 频率相关:转换CP相关值为精细的频率偏移估计。

  • PSS和CP对齐:用每个PSS符号检测实例匹配一个基于cp的频率估计。这种校准是必要的,因为给定PSS检测实例的频率估计仅在相应的SSB的末端可用。

  • PSS信息序列化:如果PSS在多个PSS相关器输出上检测到相同的时间偏移,该块将结果序列化,以便它们一次一个地从检测器返回。

  • OFDM数据同步:同步OFDM解调器的输入和PSS检波器的输出。这种同步使PSS检测器能够在正确的时间触发OFDM解调过程。同步数据是PSS相关器后面的一个OFDM符号,因为峰值检测发生在要解调的第一个OFDM符号的末尾。

  • OFDM解调: ofdm -解调指定单边带的四个符号。

  • SSS检测:从OFDM解调器输出中提取SSS资源元素,并将它们与所有336个可能的序列相关联,以确定单元ID。

  • 创建报告:将一个SSB检测对应的所有参数对齐,使它们同时有效。

仿真设置

框图显示了该示例的仿真设置,该示例在runSSBDetectionModelSearchrunSSBDetectionModelDemod脚本。使用5G工具箱™函数生成测试波形,并将其应用于SSB检测器的MATLAB和Simulink实现中,先在搜索模式下,再在解调模式下。金宝app对每个检测器的关键诊断信号进行相对均方误差(MSE)比较,并对最终输出进行比较。最后,对Simulink模型的资源网格输出进行解码,显示MIB内容符合预期。金宝app

搜索模式仿真

使用runSSBDetectionModelSearch脚本运行搜索模式模拟并验证结果。在搜索模式下,SSB探测器搜索SSB并返回其参数。脚本在MATLAB命令窗口中显示其进度。通过MATLAB和Simulink检测到的各SSB参数如表所示。金宝app最后的表格显示了MATLAB和Simulink对每个相关器输出和检测阈值的相对MSE。金宝app生成的图显示(i)在发射波形中所有8个ssb的组合资源网格和(ii) PSS相关输出和阈值。结果表明,MATLAB和Simulink的实现非常接近。金宝app两种实现之间的微小差异是由于量化误差造成的。这些错误的发生是因为MATLAB参考使用浮点数据类型,而Simulink模型使用定点数据类型。金宝app

runSSBDetectionModelSearch;
生成测试波形。选择模拟案例:模拟情况下单边带模式共同PDCCH副载波间距配置SIB1信噪比dB Lmax最强的单边带索引  _______________ ___________ _________________________ _________________ ______ ___________________ ____ " SimCase 1”“C”30 164 50 4 8寻找SSBs使用MATLAB的参考。使用Simulink模型搜索SSBs。金宝appnrhdlSSBDetection运行。### nrhdlSSBDetectionFR1Core的模型参考仿真目标是最新的。Build Summary 0 of 1 models built (1 models already up to date)构建时间:0h 0m 0.76282s ..........MATLAB中找到的SSBs:NCellID2 timingOffset pssCorrelation pssEnergy frequencyOffset  ________ ____________ ______________ _________ _______________ 0 5058 0 17568 4416 0.70487 0.77762 0.56114 - 0.61792 1.4149 - 1.5591 4996 0 35136 5015 0 5034 0 65856 48288 4.4369 4.8999 1.119 1.2328 4934 0 5003 0 96576 79008 0.99704 1.0975 1.7822 1.9614 5014 0 1.0973 e + 05年0.8866 - 0.97653 4990SSBs found by Simulink model: NCellID2 timingOffset pssCorrelation pssEnergy frequencyOffset ________ ____________ ______________ _________ _______________ 0 4416 0.70517 0.77788 5058 0 17568 0.56143 0.61819 4996 0 35136 1.4151 1.5595 5015 0 48288 4.4374 4.901 5034 0 65856 1.1196 1.2332 4934 0 79008 0.99735 1.0978 5003 0 96576 1.7824 1.9619 5014 0 1.0973e+05 0.88665 0.97691 4991 Relative mean-squared error between MATLAB and Simulink in search mode: name relativeMSEdB _____________________ _____________ {'PSS correlation 0'} -66.884 {'PSS correlation 1'} -58.528 {'PSS correlation 2'} -58.627 {'PSS threshold' } -73.727

使用Simuli金宝appnk Logic Analyzer查看SSB检测子系统的输入和输出。探测器在20毫秒的时间窗口内寻找PSS符号,这在脉冲上开始开始输入触发搜索操作。如果在20毫秒后没有发现PSS符号,探测器设置状态输出到2 -表示搜索失败。在本例中,检测器会找到所有8个ssb。的状态在搜索期间将output设置为1,并通过断言reportValid信号。模拟只运行5毫秒,但是如果它被扩展到运行20毫秒以上,那么状态最终将输出设置为3—表示搜索成功。

解调模式仿真

在运行runSSBDetectionModelSearch,可以使用runSSBDetectionModelDemod脚本运行解调模式仿真并验证结果。在解调模式下,检测器通过搜索其PSS, ofdm解调资源网格,并在适当的资源元素中搜索SSS来恢复指定的SSB。脚本在MATLAB命令窗口中显示其进度。来自MATLAB和Simulink的SS块报告显示,两个检测器返回金宝app相似的参数,并正确地确定单元ID为249。相对的MSE测量结果表明MATLAB和Simulink实现非常接近。金宝app作为最后的验证步骤,脚本从Simulink资源网格输出解码广播通道(BCH)。金宝appCRC校验通过,且MIB (master information block)内容匹配传输。生成的图表显示了PSS和SSS的相关结果,以及资源网格的输出。由于修正了频率偏移,解调模式下的PSS相关水平比搜索模式下的PSS相关水平更强。

runSSBDetectionModelDemod;
从前面的搜索中选择最强的PSS并计算其频率偏移。最强PSS指数(1基):4频率偏移(粗+细):5.034 kHz使用MATLAB参考解调最强SSBs。使用Simulink模型解调最强的ssb。金宝appnrhdlSSBDetection运行。### nrhdlSSBDetectionFR1Core的模型参考仿真目标是最新的。Build Summary 0 of 1 models built (1 models already up to date)构建持续时间:0h 0m 0.60403 ..........党卫军阻止报告MATLAB NCellID2: 0 timingOffset: 48288 pssCorrelation: 4.8510 pssEnergy: 4.8921 NCellID1: 83 sssCorrelation: 4.9502 sssEnergy: 4.9507 NCellID: 249 frequencyOffset: 1党卫军阻止报告模型NCellID2: 0 timingOffset: 4金宝app8288 pssCorrelation: 4.8523 pssEnergy: 4.8941 NCellID1: 83 sssCorrelation: 4.9515 sssEnergy:4.9525 NCellID: 249 frequencyOffset: 1 MATLAB和Simulink在demod模式下的相对均方误差:名称relativeMSEdB金宝app _____________________ _____________ {'PSS correlation 0'} -65.504 {'PSS threshold'} -67.756 {'SSS correlation'} -68.785 {'Rx resource grid'} -69.161从Simulink资源网格输出解码BCH: BCH CRC:0解码(Rx) MIB NFrame: 0 SubcarrierSpacingCommon: 30 k_SSB: 0 DMRSTypeAPosition: 3 PDCCHConfigSIB1: 164 CellBarred: 0 IntraFreqReselection:预期(Tx) MIB NFrame: 0 0 SubcarrierSpacingCommon: 30 k_SSB: 0 DMRSTypeAPosition: 3 PDCCHConfigSIB1: 164 CellBarred: 0 IntraFreqReselection: 0

使用Simuli金宝appnk Logic Analyzer查看探测器输出,因为它通过这些步骤进行。

  1. 检测器设置状态输出4等待指定的时间偏移并搜索指定的PSS。

  2. PSS。检测器设置状态输出6检测器现在在资源网格中搜索SSS。输出四个被解调的OFDM符号,用断言表示gridValid

  3. SSS确定后,探测器进行断言reportValid表示所有的PSS和SSS参数,包括NCellID,都是有效的。的状态输出的变化8,以指示操作已完成,SSS和单元格ID已准备就绪。

如果PSS在指定的时间偏移处未被发现,检测器将设置状态输出5和停止搜索。如果检测器无法确定SSS,则设置状态输出7.在本例中,检测器从初始搜索中恢复指定的SSB - PSS最强的SSB。

HDL代码生成与实现结果

要为本示例生成HDL代码,您必须拥有HDL Coder™许可证。使用makehdlmakehdltb的命令来生成HDL代码和HDL测试台nrhdlSSBDetection /单边带检测子系统。合成了Xilinx®Zynq®-7000 ZC706评估板的HDL代码。表格显示了发帖地点和路由资源的使用结果。该设计满足时钟频率为230mhz的定时要求。

资源使用_______________ _____ Slice register 74934 Slice LUTs 29104 RAMB18 9 RAMB36 1 DSP48 208

相关的话题