主要内容

NR HDL SIB1恢复

本例展示了如何设计适合于HDL代码生成和硬件实现的5G NR系统信息块类型1 (SIB1)恢复模型。

简介

SIB1恢复需要单元搜索、主信息块(MIB)解码、恢复SIB1网格(包含CORESET0和SIB1的资源网格区域),并从SIB1网格解码CORESET0 PDCCH和SIB1 PDSCH。单元格搜索和MIB恢复的过程在NR HDL细胞搜索而且NR HDL MIB恢复分别的例子。中描述了用于实现SIB1网格恢复、CORESET0解码和SIB1解码的其他模型用于NR SIB1恢复的硬件加速器的例子。本例着重于SIB1 Recovery Simulink模型,并使用MATLAB参考生成测试输入并验证模型的行为。

本例中描述的Simulink®模型是针对5G NR频率范围1 (FR1)的SIB1恢复的定点HDL优化实现。这个例子是一个相关的集合,更多信息请参见NR HDL参考应用概述

文件结构

本示例使用这些文件。

仿真软件模型

  • nrhdlSIB1Recovery.slx该Simulink模型将SSB检测器、SSB解码器、SIB1解调器、CORESET0解码器和SIB1解码器的处理结合成一个集成模型,演示了完整的SIB1网格恢复过程。此模型引用nrhdlDDCFR1CorenrhdlSSBDetectionFR1CorenrhdlSSBDecodingCorenrhdlPolarDecodingChainCorenrhdlSIB1DemodulationCorenrhdlCORESET0DecodingCore,nrhdlLDPCDecodingChainCore模型。

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

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

  • nrhdlSSBDecodingCore.slx:该模型实现了SSB解码算法。

  • nrhdlPolarDecodingChainCore.slx:该模型实现公共极性解码链。

  • nrhdlSIB1DemodulationCore.slx:该模型实现了SIB1解调算法。

  • nrhdlCORESET0DecodingCore.slx:该模型实现CORESET0解码算法。

  • nrhdlLDPCDecodingChainCore.slx:该模型实现了SIB1 LDPC解码算法。

模型数据字典

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

MATLAB代码

  • runSIB1RecoveryModel.m:该脚本使用MATLAB参考执行SSB检测算法的搜索模式,然后运行nrhdlSIB1Recovery用Simulink模型对SSB进行解调和解码,然后对SIB1网格进行解调。脚本使用为嵌入式软件或硬件加速器设计的MATLAB代码执行CORESET0和SIB1解码nrhdlSIB1Recovery模型。

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

NR HDL SIB1恢复

此图显示了nrhdlSIB1Recovery模型。模型的顶层从MATLAB基本工作空间读取信号,将它们传递给SIB1恢复子系统,并将输出写回工作空间。该模型通过一组硬件加速器实现SIB1恢复,当部署到SoC设备时,这些硬件加速器由软件控制。该设计工作在基带5G波形上,并执行初始访问直到SIB1解码。

SIB1恢复子系统

SIB1复苏子系统引用模型并结合它们来创建完整的SIB1恢复设计。本例的附录包含子系统接口的完整描述。子系统可以在四种模式下运行,软件控制回路协调过程,为每个阶段设置输入和监视输出。

  1. 搜索:该操作在给定的频率偏移和子载波间距下搜索ssb。它执行三个相关性,每个PSS序列一个。通过运行重复的搜索操作,子载波间距扫描和粗频率搜索算法可以在软件中执行,以创建一个选定载波频率的ssb列表。

  2. 解调:该操作重新获取并OFDM解调从搜索步骤中发现的SSB中选择的单个SSB。每个检测到的SSB都有一个独特的时间参考和PSS序列,因此可以在重复传输上重新获取。一旦SSB被解调,SSB就被解码以获取MIB。如果sib1En设置并调度SIB1传输,则与重新获取的SSB对应的SIB1网格将被OFDM解调并输出到软件。

  3. CORESET0 Decode:该操作对CORESET0进行解码,通过跨每个搜索空间和监视槽位执行盲搜索来恢复SIB1 DCI。该算法操作从上一步中恢复的SIB1网格中提取的数据。提取这些数据的过程在软件中进行。

  4. SIB1 Decode:该操作执行LDPC解码、代码块去分割和CRC解码,以恢复最终的SIB1负载。输入数据从软件中的SIB1网格中提取,使用上一步中的DCI来选择分配的符号。

在这些示例中可以找到关于SIB1恢复子系统引用的每个模型的更多信息。

NR HDL细胞搜索例子的细节:

  • nrhdlDDCFR1Core

  • nrhdlSSBDetectionFR1Core

NR HDL MIB恢复例子的细节:

  • nrhdlSSBDecodingCore

  • nrhdlPolarDecodingChainCore

用于NR SIB1恢复的硬件加速器例子的细节:

  • nrhdlSIB1DemodulationCore

  • nrhdlCORESET0DecodingCore

  • nrhdlLDPCDecodingChainCore

SIB1恢复模拟设置

框图显示了这个示例实现的模拟设置。橙色块突出显示了MATLAB参考和Simulink HDL实现之间的比较点。runSIB1RecoveryModelFR2脚本运行仿真,MATLAB代码表示软件控制算法,Simulink仿真执行FPGA处理。5G Toolbox™功能用于生成测试波形。使用MATLAB参考代码执行SSB搜索阶段,而不是运行Simulink仿真。MATLAB参考提供了等效的结果,并提高了仿真速度,因为它比Simulink仿真运行得更快。MATLAB SSB搜索的结果被传递给MATLAB和Simulink实现的SIB1恢复,并直接比较输出网格。Simulink SIB1网格的解码方法有两种。默认选项使用nrhdlSIB1Recovery模型模拟CORESET0和SIB1解码的硬件加速器。第二种选择使用MATLAB只解码算法。当设计部署到SoC时,第一个选项通过将计算卸载到FPGA减少了由嵌入式处理器执行的计算。第二种方法在软件中执行所有处理,允许在不重建FPGA位流的情况下轻松修改和更新算法。

SIB1复苏模拟

使用runSIB1RecoveryModel脚本来运行SIB1恢复模拟。该脚本在MATLAB命令提示符中显示其进度,并生成输入和输出的图形以供分析。该脚本还支持多种模拟用例。文中显示了完整的案例集及其参数。

模拟案例单边带模式共同PDCCH副载波间距配置SIB1信噪比dB Lmax最强的单边带索引  _______________ ___________ _________________________ _________________ ______ ___________________ ____ " SimCase 1”“案例C“30 164 50 4 8”SimCase 2”“案例B“15 100 6 3 4”SimCase 3”“案例”30 4 20 2 8“SimCase 4”“情况”15 84 7 0 4

这个例子显示了运行“SimCase 1”的结果。用MATLAB和Simulink生成的资源网格及其相对均方误差(MSE)显示出来。此比较验证了Simulink实现与MATLAB参考非常匹配。网格图被标记为突出显示已解码的PDCCH和PDSCH。脚本的最后阶段解码CORESET0、显示dci和解码SIB1。显示SIB1解码的结果,并将MATLAB和Simulink中的SIB1位进行比较,以验证它们是否匹配。

runSIB1RecoveryModel;
生成测试波形。利用MATLAB的参考资料搜索ssb。NCellID2 timegoffset pssCorrelation pssenergerfrequencyoffset ________ ____________ ______________ _________ _______________ 0 4416 0.81822 0.90289 5059 0 17568 0.65152 0.71764 4996 0 35136 1.6417 1.8089 5019 0 48288 1.2927 1.4275 5036 0 65856 5.1698 5.6955 4943 0 79008 1.1552 1.2723 5005 0 96576 2.065 2.2723 5015 0 1.0973e+05 1.0295 1.1339 4993使用MATLAB参考恢复SIB1网格。解码SSB使用MATLAB参考。使用MATLAB参考恢复SIB1网格。利用Simulink模型恢复SIB1网格。nrhdlSIB1Recovery运行。启动串行模型参考仿真构建。nrhdlCORESET0DecodingCore的模型参考模拟目标是最新的。nrhdlDDCFR1Core的模型参考模拟目标是最新的。 ### Model reference simulation target for nrhdlLDPCDecodingChainCore is up to date. ### Model reference simulation target for nrhdlPolarDecodingChainCore is up to date. ### Model reference simulation target for nrhdlSIB1DemodulationFR1Core is up to date. ### Model reference simulation target for nrhdlSSBDecodingCore is up to date. ### Model reference simulation target for nrhdlSSBDetectionFR1Core is up to date. Build Summary 0 of 7 models built (7 models already up to date) Build duration: 0h 0m 1.0194s .......... MATLAB and Simulink grids relative MSE : -62.0132 dB Extracting CORESET0 candidates from the SIB1 grid. Decoding CORESET0 candidates using MATLAB reference. Decoding CORESET0 candidates using Simulink. Running nrhdlSIB1Recovery.slx ### Starting serial model reference simulation build. ### Model reference simulation target for nrhdlCORESET0DecodingCore is up to date. ### Model reference simulation target for nrhdlDDCFR1Core is up to date. ### Model reference simulation target for nrhdlLDPCDecodingChainCore is up to date. ### Model reference simulation target for nrhdlPolarDecodingChainCore is up to date. ### Model reference simulation target for nrhdlSIB1DemodulationFR1Core is up to date. ### Model reference simulation target for nrhdlSSBDecodingCore is up to date. ### Model reference simulation target for nrhdlSSBDetectionFR1Core is up to date. Build Summary 0 of 7 models built (7 models already up to date) Build duration: 0h 0m 0.8094s .......... DCI from MATLAB: RIV: 528 TDDIndex: 0 VRBToPRBInterleaving: 0 ModCoding: 0 RV: 0 SIIndicator: 0 Reserved: 0 DCI from Simulink: RIV: 528 TDDIndex: 0 VRBToPRBInterleaving: 0 ModCoding: 0 RV: 0 SIIndicator: 0 Reserved: 0 DCI successfully decoded from Simulink grid with hardware acceleration Extracting LDPC codeword from the SIB1 grid. Decoding SIB1 using MATLAB reference. Decoding SIB1 using Simulink. Running nrhdlSIB1Recovery.slx ### Starting serial model reference simulation build. ### Model reference simulation target for nrhdlCORESET0DecodingCore is up to date. ### Model reference simulation target for nrhdlDDCFR1Core is up to date. ### Model reference simulation target for nrhdlLDPCDecodingChainCore is up to date. ### Model reference simulation target for nrhdlPolarDecodingChainCore is up to date. ### Model reference simulation target for nrhdlSIB1DemodulationFR1Core is up to date. ### Model reference simulation target for nrhdlSSBDecodingCore is up to date. ### Model reference simulation target for nrhdlSSBDetectionFR1Core is up to date. Build Summary 0 of 7 models built (7 models already up to date) Build duration: 0h 0m 0.85057s .......... SIB1 successfully decoded from Simulink grid with hardware acceleration SIB1 bits from MATLAB and Simulink match

HDL代码生成和实现结果

要为这个示例生成HDL代码,您必须拥有HDL Coder™产品。使用makehdl而且makehdltb命令生成HDL代码和用于的HDL测试台架nrhdlSIB1Recovery / SIB1恢复子系统。合成的HDL代码用于Xilinx®Zynq®UltraScale+ RFSoC ZCU111评估板。下表显示了站点位置和路由资源的利用结果。该设计满足时钟频率为245.76 MHz的定时。

nrhdlsib1recover模型的资源利用率:

资源使用情况_______________ ______ Slice寄存器116600 Slice LUTs 79117 RAMB18 409 RAMB36 17 DSP48 275

若要将nrhdlSIB1Recovery模型部署到硬件平台并从空信号中恢复SIB1,请参阅在fpga和soc上部署NR HDL参考应用程序的例子。

附录

SIB1复苏接口

输入

  • dataIn: 14位有符号复值信号,以61.44 Msps采样。

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

  • receiverParams:包含用于SSB搜索、解调和SIB1网格恢复的参数值的总线信号。

  • receiverStart:用于启动搜索或解调操作的1位控制信号。

  • coreset0DecodingIn:包含CORESET0解码输入数据的总线信号。

  • sib1LDPCDecodingIn:包含SIB1 LDPC解码输入数据的总线信号。

receiverParams公共汽车

  • 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模式。

  • Lmax: 2位无符号数,表示一次突发的最大ssb个数。取值为0表示4个,取值为1表示8个,取值为2表示64个。

  • sib1En: 1位非ssigned number,在MIB解码成功后启用SIB1网格恢复。

  • minChanBW: 2位无符号值,指定最小通道带宽。0表示5mhz, 1表示10mhz, 2表示40mhz。

  • ssbPattern:指定SSB模式的2位无符号值。0表示“Case A”,1表示“Case B”,2表示“Case C”。

coreset0DecodingIn公共汽车

  • gridDataIn: 16位signed CORESET0候选OFDM网格数据。

  • gridCtrlIn:采样控制总线信号进行验证gridDataIn

  • NSym:当前资源元素组(REG)的4位OFDM符号号。

  • baseRBIdx:当前REG的7位基本CORESET0资源块索引。

  • searchSpaces:长度为3的3位无符号向量,表示聚合级别4、8和16上的搜索空间数量。

  • coreset0Syms: 2位无符号值,即CORESET0所跨越的OFDM符号的数量。

  • coreset0RBs: 2位无符号值,指定资源块的数量。0表示24,1表示48,2表示96。

  • NSlot: 7位无符号值,指定第一个被监视的CORESET0槽位的槽位号。

  • NCellID: 10位无符号值,为解调后SSB的cell ID。

sib1LDPCDecodingIn公共汽车

  • ldpcDta: 16位signed LDPC码字LLR数据。

  • ldpcCtrl:用于验证的示例控制总线ldpcData

  • G:输入码字的15位长度。

  • ldpcZc: 16位无符号值,表示LDPC码字使用的提升大小。

  • tbs: 12位无符号值,表示已解码输出数据的长度。

输出

  • detectionStatus: 4位无符号值,表示当前SSB检测的进度。有关此信号的可能值,请参阅下一节。

  • ssbReport: ssbDetectionReportBus类型的总线。

  • reportValid: 1位控制信号,用于验证ssbReport输出。

  • ssbGrid: 16位有符号复值,即SSB资源网格数据。

  • ssbGridValid: 1位控制信号,用于验证ssbGrid输出。

  • pbchStatus: 2位无符号值,表示PBCH解码的进度。有关该信号可能值的更多信息,请参见下面。

  • bchStatus: 3位无符号值,表示BCH解码的进度。有关该信号可能值的更多信息,请参见下面。

  • ssbIndex3Lsb: 3位无符号值,是由DMRS搜索过程和Lmax计算的SSB索引的3个最低有效位。

  • pbchPayload: 32位无符号值,包含MIB和附加的PBCH定时数据。

  • ssbDecodeValid: 1位控制信号进行验证ssbIndex3Lsb而且pbchPayload

  • sib1DemodStatus: 2位无符号值,表示SIB1网格解调操作的进度。

  • sib1Grid: 16位带符号复值SIB1资源网格数据。

  • sib1GridValid: 1位控制信号,用于验证sib1Grid输出。

  • coreset0Resources: coreset0ResourcesBus类型的总线。

  • coreset0Occasion: coreset0conditionbus类型的总线。

  • parsedMIB: MIBBus类型的总线。

  • coreset0Status: 3位无符号值,表示CORESET0解码过程的进度。

  • dciData: 41位无符号数据,包含最终解码的DCI。

  • firstOrSecondSlot: 1位值,指示是否在第一个(0)或第二个(1)监视槽位中找到已解码的DCI。

  • dciSearchFailed: 1位值,表示CORESET0 DCI搜索失败。

  • dciValid: 1位值,表示搜索完成。

  • dciNextFrame: 1位信号,在可输入下一个候选时向信号提供背压。

  • sib1Status: 3位无符号值,表示SIB1解码过程的进度。

  • sib1Bits: 1位数据,即最终解码的SIB1有效负载。

  • sib1BitsCtrl:用于验证的示例控制总线sib1Bits

  • sib1Err: 1位值,表示是否SIB1 CRC失败。

ssbDetectionReportBus

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

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

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

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

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

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

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

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

coreset0ResourcesBus

  • resourceBlocks: 2位无符号值,指定资源块的数量。0表示24,1表示48,2表示96。

  • ofdmSymbols: 2位无符号值,即CORESET0所跨越的OFDM符号的数量。

  • frequencyOffset: 32位有符号值,指定从SSB到CORESET0的相对频率偏移量。该信号连接到一个32位蓄能器的NCO。使用这个方程将值转换为Hz:frequencyOffset_HzfrequencyOffset* 61.44e6 / 2^32。

  • muxPattern: 2位无符号值,指定CORESET0多路复用模式。

coreset0OccasionBus

  • slotOffset: 5位无符号值,即从偶数帧头到第一个被监控槽位的槽位偏移。

  • firstSymbol: 3位无符号值,指定槽位中第一个被占用的OFDM符号。

MIBBus

  • sfn: 10位无符号值,即系统帧号(SFN)。

  • scsCommon: 1位无符号值,指定公共子载波间距。0表示15khz, 1表示30khz。

  • Kssb: 5位无符号值,即SSB与整个资源块网格之间的偏移量。

  • drmsTypeAPos: 1位无符号值,指定PDSCH分配类型A的DMRS符号的位置,其中0表示位置2,1表示位置3。

  • pdcchConfigSIB1: 8位无符号值,包含CORESET0的配置

  • cellBarred: 1位值,指示单元是否被禁止。

  • intraFreqReselection: 1位值,表示是否允许频率内重选。

  • hrf: 1位值,即半帧位。

  • ssbIdx: 6位值,为SSB的索引。

检测状态信号状态

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

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

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

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

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

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

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

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

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

PBCH Status信号状态

  • 0:闲置

  • 1: SSB网格的数据读入

  • 2:执行DMRS搜索

  • 3.:进行PBCH符号解调

BCH Status信号状态

  • 0:闲置

  • 1:恢复速率

  • 2:极性解码

  • 3.: CRC错误

  • 4: CRC通过,MIB检测到

SIB1 Demod Status信号状态

  • 0:初始状态。等待启动脉冲。

  • 1:等待CORESET0定时场合。

  • 2: OFDM解调并输出SIB1网格数据。

CORESET0解码状态信号状态

  • 0:初始状态。等待启动脉冲。

  • 1:执行信道估计、均衡、符号解调和解乱。

  • 2:执行极性速率恢复。

  • 3.:进行极性和CRC解码。

  • 4:候选解码失败,等待下一次尝试。

  • 5:解码所有没有成功的候选人。

  • 6:成功解码候选DCI。

SIB1解码状态信号状态

  • 0:初始状态。等待启动脉冲。

  • 1:执行LDPC速率恢复。

  • 2:进行LDPC解码。

  • 3.: CRC解码。

  • 4: SIB1解码失败。

  • 5:成功解码SIB1。

相关的例子

更多关于

Baidu
map