主要内容

NR HDL细胞搜索

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

简介

本例中描述的Simulink®模型是针对5G NR频率范围1 (FR1)的同步信号块(SSB)检测器的hdl优化实现。这个例子是一个相关的集合,更多信息请参见NR HDL参考应用概述

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

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

文件结构

本示例使用了这些文件。

仿真软件模型

  • nrhdlSSBDetection.slx:该Simulink模型用于模拟SSB检测行为。

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

  • nrhdlDDCFR1Core.slx:这个模型实现了一个DDC来为SIB1和ssb创建样例流。

模型数据字典

  • nrhdlReceiverData.sldd:这个Simulink数据字典包含定义示例模型中包含的总线的总线对象。

MATLAB代码

  • runSSBDetectionModelSearch.m:执行和验证脚本nrhdlSSBDetection在搜索模式下建模。

  • runSSBDetectionModelDemod.m:执行和验证脚本nrhdlSSBDetection模型在解调模式。

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

NR HDL细胞搜索模型

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

单边带检测子系统

SSB检测子系统引用nrhdlDDCFR1Core而且nrhdlSSBDetectionFR1Core模型。DDC执行频偏校正和抽取,SSB检测器搜索和解调SSB。模型引用的算法将在下一节中描述。DDC的输出是SSB检测算法的输入。

输入

  • 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开始的时间偏移量。指定样本中的时间偏移为61.44 Msps,从0到1228799。该参数仅适用于demod模式。

  • NCellID2: 2位无符号值,指定待解调SSB的PSS(0、1或2)。该参数仅适用于demod模式。

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

输出

  • 状态: 4位无符号值,表示当前操作的进度。有关此信号的可能值,请参阅下一节。

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

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

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

  • pssCorrelation: 32位无符号值,即PSS相关性的强度。

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

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

  • sssCorrelation: 32位无符号值,即SSS相关性强度。此信号仅在demod模式下返回。

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

  • reportValid: 1位控制信号。在搜索模式下,该信号进行验证pssNCellID2,pssTimingOffset,pssFrequencyOffset,pssCorrelation,pssThreshold为每一个检测到的PSS。在demod模式中,这个信号也可以验证NCellID,sssCorrelation,sssThreshold.在解调模式下,sssCorrelation而且sssThreshold只有在使用其PSS找到指定SSB时才有效,并且NCellID仅在检测到SSS时有效。

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

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

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

状态信号状态

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

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

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

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

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

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

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

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

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

监护系统模型

这张图显示的是nrhdlDDCFR1Core模型。输入信号(dataIn)是采样为61.44 Msps的16位有符号复值数据。DDC执行三种操作。首先,输入扩展子系统将输入按0.875的系数进行缩放,为后续处理阶段提供空间。第二,频率调整子系统将给定的频率偏移应用于数据流。最后,过滤和Downsample子系统使用半带滤波器链对样本进行8个(至7.68 Msps)的滤波和抽取。的过滤和Downsample子系统产生两个数据流。的ssbData输出以7.68 Msps采样,用于SSB检测。的sib1Data输出以30.72 Msps采样,用于SIB1解调。选择这些抽样速率是因为它们是计算每个流的2次方FFT所需的最小带宽。的sib1Data的输出使用NR HDL SIB1恢复例如,共享一个DDC来驱动SSB和SIB1处理步骤。

单边带检测模型

这张图显示的是nrhdlSSBDetectionFR1Core模型。该模型实现SSB的检测和解调。其内部采样率随副载波间距的变化而变化。该模型对30kHz SCS使用7.68 Msps,对15kHz SCS使用3.84 Msps。左边的子载波间距选择逻辑负责改变采样率。方法触发新操作时,速率才可以更改startProcessing输入。

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

nrhdlSSBDetectionFR1Core模型包含这些主要子系统。

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

  • 单边带搜索:通过PSS相关性查找ssb。

  • 单边带解调:进行OFDM解调和SSS相关。

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

单边带搜索子系统

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

  • 循环前缀关联:计算循环前缀的相关值。每个结果在最后四个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。

仿真设置

框图显示了这个例子的模拟设置,它是在runSSBDetectionModelSearch而且runSSBDetectionModelDemod脚本。5G Toolbox™函数用于生成测试波形,该波形应用于SSB检测器的MATLAB和Simulink实现,在搜索模式下,然后在解调模式下。每个检测器的关键诊断信号根据其相对均方误差(MSE)进行比较,并比较最终输出。最后,对Simulink模型的资源网格输出进行解码,以显示MIB内容符合预期。

搜索模式仿真

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

runSSBDetectionModelSearch;
生成测试波形。选择模拟案例:模拟情况下单边带模式共同PDCCH副载波间距配置SIB1信噪比dB Lmax最强的单边带索引  _______________ ___________ _________________________ _________________ ______ ___________________ ____ " SimCase 1”“C”30 164 50 4 8寻找SSBs使用MATLAB的参考。使用Simulink模型搜索ssb。nrhdlSSBDetection运行。启动串行模型参考仿真构建nrhdlDDCFR1Core的模型参考仿真目标是最新的。nrhdlSSBDetectionFR1Core的模型参考模拟目标是最新的。构建总结0的2个模型构建(2个模型已经是最新的)构建持续时间:0h 0m 3.8694 ..........MATLAB参考:NCellID2 timinggoffset pssCorrelation pssenergerfrequencyoffset ________ ____________ ______________ _________ _______________ 0 4416 1.8564 2.0487 5057 0 17568 1.4776 1.6272 4997 0 35136 3.7246 4.1033 5016 0 48288 2.9372 3.243 5031 0 65856 11.729 12.921 4940 0 79008 2.6242 2.8901 5003 0 96576 4.6843 5.1559 5017 0 1.0973e+05 2.3364 2.5728 4997 SSBs由Simulink模型发现:NCellID2 timingOffset pssCorrelation pssenergerfrequencyoffset ________ ____________ ______________ _________ _______________ 0 4416 1.857 2.0492 5057 0 17568 1.4781 1.6277 4997 0 35136 3.7249 4.1042 5016 0 48288 2.9375 3.2439 5031 0 65856 11.732 12.923 4940 0 79008 2.6249 2.8908 5003 0 96576 4.6849 5.1569 5017 0 1.0973e+05 2.3367 2.5735 4997 MATLAB与Simulink在搜索模式下的相对均方误差:名字relativeMSEdB  _____________________ _____________ {' PSS相关-71.51 0 '}{的PSS相关1}-63.414{的PSS相关2}-63.272 -76.134 {PSS阈值的}

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

解调模式仿真

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

runSSBDetectionModelDemod;
从前面的搜索中选择最强的PSS,计算其频率偏移量。最强PSS指数(1基):5频率偏移(粗+精):4.94 kHz解调最强ssb使用MATLAB参考。使用Simulink模型解调最强ssb。nrhdlSSBDetection运行。启动串行模型参考仿真构建nrhdlDDCFR1Core的模型参考仿真目标是最新的。nrhdlSSBDetectionFR1Core的模型参考模拟目标是最新的。构建总结0的2个模型构建(2个模型已经是最新的)构建持续时间:0h 0m 1.6156 ...................SS块报告from MATLAB ncelli2: 0 timingOffset: 65856 pssCorrelation: 12.8410 pssEnergy: 12.9020 ncelli1: 83 sssCorrelation: 13.0099 sssEnergy: 13.0102 NCellID: 249 frequencyOffset: 0 pssCorrelation: 12.8441 pssEnergy: 12.9064 ncelli1: 83 sssCorrelation: 13.0123 sssEnergy: 13.0143 NCellID: 249 frequencyOffset: 0 MATLAB和Simulink在demod模式下的相对均方误差:名字relativeMSEdB  _____________________ _____________ {' PSS相关性0 '}-69.651 {PSS阈值的}-68.8 -69.961{“SSS相关性”}{Rx资源网格的}-70.084解码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

使用Simulink Logic Analyzer来查看通过这些步骤进行的检测器输出。

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

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

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

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

HDL代码生成和实现结果

要为这个示例生成HDL代码,您必须拥有HDL Coder™许可证。使用makehdl而且makehdltb命令生成HDL代码和一个HDL测试台架nrhdlSSBDetection /单边带检测子系统。合成的HDL代码用于Xilinx®Zynq®-7000 ZC706评估板。下表显示了站点位置和路由资源的利用结果。该设计满足时钟频率为230兆赫的定时。

资源使用情况_______________ _____ Slice寄存器36531 Slice LUTs 20857 RAMB18 13 RAMB36 0 DSP48 218

相关的例子

更多关于

Baidu
map