主要内容

NR HDL细胞搜索

本示例展示了针对HDL代码生成和硬件实现进行优化的5G NR小区搜索子系统的设计。

介绍

本例中描金宝app述的Simulink®模型是5G NR频率范围1 (FR1)的同步信号块(SSB)检测器的hdl优化实现。本示例是相关的一组示例之一,它展示了设计和部署5G NR小区搜索和MIB恢复算法到硬件的工作流程。显示了完整的工作流程。

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

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

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

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

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

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

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

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

文件结构

本例使用这些文件。

金宝app仿真软件模型

  • nrhdlSSBDetection.slx:此Simul金宝appink模型使用nrhdlSSBDetectionFR1Core模型参考,用于模拟MIB恢复过程中SSB解码部分的行为。

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

金宝appSimulink数据字典

  • 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_Hz=frequencyOffset* 61.44e6 / 2^32。

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

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

  • timingOffset: 21位无符号值,指定要解调的SSB开始的时间偏移量。指定采样中的定时偏移61.44 Msps,从0到1228799。此参数仅适用于“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位无符号值,表示PSS相关强度。

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

  • NCellID: 10位无符号值,表示解调后SSB的小区号。此值仅在demod模式下返回。

  • sssCorrelation: 32位无符号值,表示SSS相关强度。此信号仅在解调器模式下返回。

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

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

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

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

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

信号状态

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

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

  • 2:搜索模式——操作完成,未找到PSS。

  • 3.:搜索模式——操作完成,找到一个或多个pss。

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

  • 5: mod模式—操作完成,未找到PSS。

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

  • 7: mod模式——操作完成,未发现SSS。返回的解调资源网格。

  • 8: mod模式——操作完成,找到SSS。返回的解调资源网格。

SSB检测模型参考结构

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

SSB搜索和需求子系统结构

SSB搜索和解调子系统执行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。类触发新操作时开始输入时,开始控制器记录开始时间并将时间传递给模型中的其他计时引用。当采用新的子载波间距和相应的采样率时,该信号告诉其他时序参考。其他计时引用要等到开始时间才更改其增量。这种设计是可行的,因为硬件延迟意味着其他时间参考滞后于开始控制器。这种架构使接收器能够始终跟踪时间,即使在采样率发生变化时也是如此。

SSB搜索和需求子系统包含这些主要子系统。

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

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

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

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

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

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

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

  • OFDM解调: ofdm -解调指定SSB的四个符号。

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

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

仿真设置

框图显示了本例的仿真设置,该设置在runSSBDetectionModelSearchrunSSBDetectionModelDemod脚本。5G Toolbox™功能用于生成测试波形,该波形应用于搜索模式下的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模型搜索ssb。金宝appnrhdlSSBDetection运行。启动串行模型参考仿真构建### nrhdlSSBDetectionFR1Core模型参考仿真目标是最新的。构建总结构建1个模型中的0个(1个模型已经更新)构建持续时间:0小时0分钟0.76282秒..........ncelllid2 timmingoffset pssCorrelation pssEnergy frequencyOffset ________ ____________ ______________ _________ _______________ 0 4416 0.70487 0.77762 5058 0.56114 0.61792 4996 0 35136 1.4149 1.5591 5015 0 48288 4.4369 4.8999 5034 0 65856 1.119 1.2328 4934 0 79008 0.99704 1.0975 5003 0 96576 1.7822 1.9614 5014 0 1.0973e+05 0.8866 0.97653 4990通过Simulink模型找到的SSBs:金宝appncelllid2 timinggoffset 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 MATLAB与Simulink在搜索模式下的相对均方误差:金宝app名字relativeMSEdB  _____________________ _____________ {' PSS相关-66.884 0 '}{的PSS相关1}-58.528{的PSS相关2}-58.627 -73.727 {PSS阈值的}

使用Simuli金宝appnk逻辑分析仪来查看SSB检测子系统的输入和输出。探测器在20毫秒的时间窗口内寻找PSS符号,该时间窗口开始于脉冲开始输入触发搜索操作。如果在20ms后没有发现PSS符号,探测器设置状态输出为2 -表示搜索失败。在本例中,检测器找到所有8个ssb。的状态在搜索期间将输出设置为1,并且通过断言的方法为每个SSB返回一个报告reportValid信号。模拟只运行5毫秒,但是如果扩展到运行超过20毫秒,那么状态输出最终被设置为3 -表示搜索成功。

解调模式仿真

在运行runSSBDetectionModelSearch,使用runSSBDetectionModelDemod脚本运行解调模式仿真并验证结果。在解调模式下,检测器通过搜索指定的SSB的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相关水平比搜索模式下的更强,因为频率偏移被校正了。

runSSBDetectionModelDemod;
从先前的搜索中选择最强的PSS并计算其频率偏移。最强PSS指数(基于1):4频率偏移(粗+细):5.034 kHz使用MATLAB参考解调最强SSBs。使用Simulink模型解调最强ssb。金宝appnrhdlSSBDetection运行。启动串行模型参考仿真构建### nrhdlSSBDetectionFR1Core模型参考仿真目标是最新的。构建总结构建1个模型中的0个(1个模型已经更新)构建持续时间:0小时0分钟0.60403秒..........来自MATLAB的SS块报告ncelllid2: 0 timmingoffset: 48288 pssCorrelation: 4.8510 pssEnergy: 4.8921 ncelllid1: 83 sssCorrelation: 4.9502 sssEnergy: 4.9507 NCellID: 249 frequencyOffset: 1来自Simulink的SS块报告ncelllid2: 0 timm金宝appingoffset: 48288 pssCorrelation: 4.8523 pssEnergy: 4.8941 ncelllid1: 83 sssCorrelation: 4.9515 sssEnergy: 4.9525 NCellID: 249 frequencyOffset: 1 MATLAB与Simulink在demomode下的相对均方误差:名字relativeMSEdB  _____________________ _____________ {' PSS相关性0 '}-65.504 {PSS阈值的}-67.756 -68.785{“SSS相关性”}{Rx资源网格的}-69.161解码BCH从仿真软件资源网格输出:BCH CRC: 0解码(Rx) MIB NFrame: 0 SubcarrierSpacingC金宝appommon: 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 intrafreqresselection: 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 /单边带检测子系统。生成的HDL代码用于Xilinx®Zynq®-7000 ZC706评估板。表格显示了站点和路径资源利用结果。该设计满足时钟频率为230 MHz的时序要求。

资源使用_______________ _____片寄存器74934片LUTs 29104 RAMB18 9 RAMB36 1 DSP48 208

相关的话题