基于System Generator的Rife算法设计实现与仿真分析

基于System Generator的Rife算法设计实现与仿真分析,第1张

摘 要: 在FPGA平台上应用System Generator工具实现了高精度频率估计Rife算法。不同于传统的基于HDL代码和IP核的设计方法,采用System Generator工具可以使复杂算法在FPGA中更快、更准确地实现。给出了Rife算法的描述和实现结构框图,并在System Generator和ISE环境中进行了仿真,验证了设计的正确性。

频率测量电子侦察中扮演了重要的角色[1]。随着电子技术的发展,传统的侦察接收机向着数字化、软件化方向发展[2]。传统的基于模拟电路的测频方法需要转换为数字方法实现。模拟侦察接收机中通常采用基于相位差的频率测量方法[3]。该方法在数字电路中同样可以方便地实现,但该方法对信噪比要求比较高[3]。基于数字电路的优点,可采用先进的算法实现更高的性能。Rife算法[4]是一种常用的基于DFT频谱的频率测量算法,具有算法实现容易、精度高等优点。而DFT运算可以通过FFT进行快速运算。

为保证截获概率,侦察接收机带宽不断增大,现瞬时带宽已达500 MHz[2]。传统的基于DSP和GPP的系统已难以满足实时处理的需求,采用基于FPGA的信号处理机已成为普遍的解决方法[5-7]。

FPGA设计中基于HDL和定点的设计方法不同于传统的DSP和GPP平台中基于C语言和浮点的设计方法。HDL语言语法和语言的可综合性限制了算法的实现[7-8]。基于此,Xilinx和Altera公司分别推出了简化FPGA数字处理系统的集成开发工具System Generator for DSP和DSP Builder[9],快速、简易地将DSP系统的抽象算法转化成可综合的、可靠的硬件系统,为DSP设计者扫清了编程的障碍[8-9]。

基于System Generator的Rife算法设计实现与仿真分析,基于System Generator的Rife算法设计实现与仿真分析,第2张

2 System Generator

System Generator 是高性能、高效的DSP算法建模工具,是DSP算法与FPGA的桥梁[7-8]。其作用如图1所示,可在Matlab/Simulink环境下对算法以及系统进行建模,并生成相应的工程,再调用ISE进行仿真、综合、实现。

基于System Generator的Rife算法设计实现与仿真分析,基于System Generator的Rife算法设计实现与仿真分析,第3张

Xilinx为System Generator提供了大量的信号处理模块(如FIR滤波器、FFT)、纠错算法、存储器以及数字逻辑功能,可以在设计环境下直接调用,快速构建DSP系统。同时还支持.m文件和HDL导入[7-8]。

虽然System Generator中只有Xilinx提供的模块可以在FPGA中实现,但利用Simulink中丰富的资源可方便地生成测试向量,同时快速对结果进行准确直观的分析。考虑到资源消耗,FPGA中实现的算法以定点算法为主,定点算法的精度和范围很有限,容易发生溢出或者计算误差过大,导致算法失败[5-6]。采用传统的基于HDL和IP核的设计方法,如果早期分析得不完全,在设计后期进行修改是一件费时费力的事情,而且极易发生错误。而在System Generator环境下,采用基于模型的设计方法可以方便地实现和验证定点算法,发现问题后也容易进行修改。

3 Rife算法的FPGA设计

从第1节的Rife算法介绍可知,Rife算法以FFT运算为核心,通过频谱峰值与次峰值的插值运算计算频率值。FFT算法是一种块运算,逐帧进行,需要提供帧的起止边界。本设计中采用恒虚警模块提供帧的起止信号。FPGA中实现的Rife频率测量算法主要包含如下功能模块:快速傅里叶变换模块(FFT)、取模模块、峰值检测与锁存模块、Rife计算模块和控制模块。系统整体框图如图2所示。

基于System Generator的Rife算法设计实现与仿真分析,系统整体框图,第4张

System Generator工具中提供了FFT模块,其通过参数化配置,支持从8点到65 536点的基2、基4 FFT运算,其在FPGA中的实现对应着LogicCORE中的FFT核。使用该模块主要需要关心start信号、dv信号和输入输出信号。从恒虚警模块来的start信号通过一个上升沿指示转换开始,此时在时钟的同步下逐点将待转换数据输入,当输入的信号点数达到设定的采样点时开始FFT计算。恒虚警模块在没有检测到信号的情况下会输出0,故当信号点数小于FFT所需的点数时会自动插0。

经过一段时间的延时,dv输出高电平,指示转换完成。此时会逐点输出转换完成的频谱信号,同时xk_index输出频谱点对应的索引值。

Rife算法需要DFT频谱的幅度信息,而FFT模块输出的为I、Q两路复信号。|u|绝对值模块完成频谱的绝对值运算。在FPGA中实现诸如 的运算需要占用大量的资源,其中开根号运算可采用System Generator提供的CORDIC模块进行近似运算,降低了资源的消耗。同时I2+Q2的运算可通过MCode模块完成,MCode实现了Matlab函数的有限子集,用于快速开发DSP算法,同时可生成HDL代码,用于FPGA工程应用中。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2509401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-05
下一篇 2022-08-05

发表评论

登录后才能评论

评论列表(0条)

保存