主要内容

NR HDL单元搜索

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

介绍

本例中描万博1manbetx述的Simulink®模型是5G NR频率范围1(FR1)的同步信号块(SSB)检测器的HDL优化实现。此示例是一组相关示例之一,其中显示了设计5G NR单元搜索和MIB恢复算法并将其部署到硬件的工作流程。显示了完整的工作流程。

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

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

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

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

  4. 万博1manbetxsimulinksoc部署模型步骤包括在soc上部署NR HDL参考应用示例,它构建在定点实现模型之上,并使用硬件支持包在硬件上部署算法。万博1manbetx

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

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

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

文件结构

该示例使用这些文件。

万博1manbetxSimulink模型

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

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

万博1manbetx模型数据字典

  • nrhdlReceiverData.sldd:此Simul万博1manbetxink数据字典包含定义示例模型中包含的总线的总线对象。

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

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

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

  • 模式:1位无符号值,用于指定操作模式。对于搜索模式,将此信号设置为0;对于解调模式,将此信号设置为1。

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

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

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

输出

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

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

  • pssTimingOffset:21位无符号值,是检测到的SSB的定时偏移量。定时偏移在0到1228799的61.44 Msp的样本中。

  • pssFrequencyOffset:32位有符号值,是检测到的SSB的频率偏移。该信号的单位与信号相同频偏输入

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

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

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

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

  • sssThreshold:32位无符号值,它是SSS阈值。此值仅在解调模式下返回。

  • 报告有效: 1位控制信号。在搜索模式下,此信号有效pssNCellID2pssTimingOffsetpssFrequencyOffsetpssCorrelation,PSS阈值用于检测每个PSS。在demod模式下,这个信号也会被验证恩塞利德sssCorrelation,sssThreshold.在解调模式下,sssCorrelationsssThreshold仅当使用其PSS找到指定的SSB时才有效,并且恩塞利德仅在检测到SSS时有效。

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

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

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

状态信号状态

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

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

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

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

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

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

  • 6:Demod mode--找到指定的PSS。正在解调资源网格并查找SSS。

  • 7:解调模式--操作完成,未找到SSS。返回解调的资源网格。

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

SSB检测模型参考结构

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

SSB搜索和Demod子系统结构

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

接收器有一个内部定时参考系统,通过在数据路径的关键点使用计数器来跟踪时间。定时参考计数20ms周期-5G NR标准定义的小区搜索的假定SSB周期。时间以61.44毫秒/秒的模1228800为单位测量,以产生20毫秒的周期。由于实际采样率为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解调指定SSB的四个符号。

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

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

仿真设置

方框图显示了该示例的模拟设置,该设置在runSSBDetectionModelSearchrunSSBDetectionModelDemod脚本。5G工具箱™ 函数用于生成测试波形,该波形应用于搜索模式和解调模式下SSB检测器的MATLAB和Simulink实现。根据各检测器的相对均方误差(MSE)比较各检测器的关键诊断信号,并比较最终输出。最万博1manbetx后,对Simulink模型的资源网格输出进行解码,以表明MIB内容符合预期。

搜索模式仿真

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

runSSBDetectionModelSearch;
生成测试波形。仿真案例:仿真案例:仿真案例:仿真案例:仿真案例:仿真案例:仿真案例:仿真案例:SSB B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B 万博1manbetxB B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B Uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。使用Simulink模型搜索SSB。运行nrhdlSSBDetection.slx######开始串行模型参考仿真构建####nrhdlSSBDetectionFR1Core的模型参考仿真目标是最新的。生成摘要已生成1个模型中的0个(1个模型已更新)生成持续时间:0小时0.76282s。。。。。。。。。。1.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.3.2.2.2.2.2.3.3.3.2.3.3.3.2.3.3.3.3.2.3.3.2.2.3.3.3.2.2.3.3.3.3.2时间词汇词汇词汇词汇词汇词汇词汇词汇词汇词汇词汇词汇词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词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 50141.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0 0 0.0 0 0 0 0.0 0 0 0 0.0 0 0 0.6 6 6 6 0.0 0 0 0.0 0 0 0.0 0 0.0 0 0 0.0 0 0 0.0 0 0 0 0.0 0 0 0 0.0.0 0 0 0.0 0 0 0 0 0.0 0.0 0 0 0.0 0 0 0 0 0.9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9.0.0 0 0 0 0 0 0 0 0 0 0.0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9 949960351361.41511.559550150482884.43744.90150360658561.11961233249340790080.99735109785003 0 96576 1.7824 1.9619 5014 0 1.0973e+05 0.88665 0.97691 4991搜索模式下MATLAB和Simulink之间的相对均方误差:名称relativeMSEdB{uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu{'PSS相关0'-66.884{uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

使用Simuli万博1manbetxnk逻辑分析仪查看SSB检测子系统的输入和输出。检测器在20 ms时间窗口内查找PSS符号,该时间窗口在传感器上的脉冲后开始开始输入触发搜索操作。如果在20毫秒后没有发现PSS符号,探测器设置状态输出到2 -表示搜索失败。在本例中,检测器会找到所有8个ssb。的状态在搜索过程中,输出设置为1,并通过断言报告有效信号。模拟只运行5毫秒,但是如果它被扩展到运行20毫秒以上,那么状态最终将输出设置为3—表示搜索成功。

解调模式仿真

在运行runSSBDetectionModelSearch,使用runSSBDetectionModelDemod脚本以运行解调模式模拟并验证结果。在解调模式下,检测器通过搜索其PSS、OFDM解调资源网格并在适当的资源元素内搜索SSS来恢复指定的SSB。脚本在MATLAB命令窗口中显示其进度。来自MA的SS块报告TLAB和Simulink显示,两个检测器返回了相似的参数,并将小区ID正确地确定为249。相对MSE测量表明,MATLAB和Simulink实现非常匹配。作为最后的验证步骤,脚本解码广播频道(BCH)从Simulink资源网格输出。CRC检查通过,主信息块(MIB)通过内容与传输相匹配。生成显示PSS和SSS相关结果以及资源网格输出的图。由于频率偏移得到纠正,解调模式模拟中的PSS相关级别比搜索模式模拟中的强。万博1manbetx

RunsSBDetectionModelDerm;
从前面的搜索中选择最强的PSS并计算其频率偏移。最强PSS指数(1基):4频率偏移(粗+细):5.034 kHz使用MATLAB参考解调最强SSBs。使用Simulink模型解调最强的ssb。万博1manbetxnrhdlSSBDetection运行。### 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万博1manbetx8288 pssCorrelation: 4.8523 pssEnergy: 4.8941 NCellID1: 83 sssCorrelation: 4.9515 sssEnergy:4.9525 NCellID: 249 frequencyOffset: 1 MATLAB和Simulink在demod模式下的相对均方误差:名称relativeMSEdB万博1manbetx _____________________ _____________ {'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万博1manbetxnk Logic Analyzer查看探测器输出,因为它通过这些步骤进行。

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

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

  3. SSS确定后,探测器进行断言报告有效表示所有的PSS和SSS参数,包括恩塞利德,是有效的。这个状态输出更改为8,以指示操作已完成,SSS和单元格ID已准备就绪。

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

HDL代码生成与实现结果

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

资源使用率-片寄存器74934片LUT 29104 RAMB18 9 RAMB36 1 DSP48 208

相关话题