当前位置:首页 期刊杂志

基于FPGA 的高精度自适应闸门频率测量的研究与设计

时间:2024-06-19

马 俊,唐 林

(四川职业技术学院 电子工程学院,四川 遂宁 629000)

1 引言

频率是电子技术领域一个基本的参数,对频率的准确测量是电子技术中的一项基本需求[1-2]。在某些传感器中,比如位移或者转速传感器,检测结果多是通过频率信号的形式输出的,频率信号相对于数值信号有更好的抗干扰性,准确测量频率十分重要。FPGA 基于硬件逻辑电路实现相应功能,相对于MCU 或者CPU,在速度和可靠性方面[3,5]有显著的优势。本文基于FPGA 设计了频率测量器,改进了闸门生成方式,使其成为自适应闸门,在测量中兼顾到中高频和低频,提高了适应性和便利性。

2 频率测量的基本方法与方式

频率(f)和周期(T)是相关联的两个物理量,T=1/f,所以只要知道其中一个量,另外一个量自然可知。第一种方法,频率测量法,先给定一个时间段△t,在这个时间段△t 内,对被测信号进行计数,假设计数结果为N,那么频率则为f=N/△t。第二种方法是周期测量法,测量信号的单个周期的时间长度T,由f=1/T,得到相应的频率。这两种方法对应的场景不一样,第一种方法适应于频率较高的场合,而第二种方法适合频率较低的场合。由于对被测信号的计数存在+/-1 的误差,这个误差可能会很大,就有了等精度测量法[6],等精度测量法是基于被测信号产生的一个计数时间段,称之为计数闸门,这个闸门与被测信号同步,避免被测信号计数+/-1 的误差。在等精度测量法中,由软件产生一个软件闸门,比如长度为1s 的闸门,该闸门可以设置为更长或者更短,更长的闸门可以使测量精度提升,但是测量响应时间也会变长,更短的时间可以缩短响应时间,但是精度会受到一定程度的影响[7]。除此之外,这个闸门一旦固定,还会对被测信号最小频率进行限制,因为在一个闸门时间内,可能根本就没有检测到一个完整的被测信号。

3 频率测量设计的思考

本文提出了一种基于等精度测量法的高精度自适应闸门设计方案。该方案会自动根据被测信号的频率或者周期在适当的时候延长闸门时间,用于针对低频信号的测量。在软件闸门已经设定的基础上,针对低频信号,实际闸门会根据被测信号的周期自动延长,假设被测信号的周期为3s,那么实际闸门会在软件闸门1s 的基础之上自动延长至2s,保证闸门内至少有一个完整的周期。对应的计算时间也会相应地后延。即自适应的等精度,不再需要人为地进行闸门时间调节。为了实现自适应闸门,闸门计数器会在软件闸门拉低之后实际闸门拉低之前停止计数;实际闸门拉低之后继续计数,这样就巧妙地避免了随着频率的降低,软件闸门宽度无法估计或者过宽的问题。

4 方案实施

采用EP4CE6F17C8,该FPGA 芯片是INTEL 旗下的CYCLONE IV E 系列,包含6272 个逻辑单元(logic elements),30 个内置9-bit 乘法器单元,2 个PLL 单元;对于我们这个频率测量设计来说足够,浪费不多,资源整体利用率在70%左右。

如图1 所示,为设计整体框图,其中最主要的是频率测量与计算模块Freq_meter_calc,另外还包含两个辅助模块,一个十六进制数转BCD 的模块hex2bcd 以方便数码管显示,一个数码管扫描显示模块scan_8seg_led。

图1 频率测量与显示整体设计框图

频率测量与计算模块内部结果如图2 所示,其中有一个PLL 子模块PLL_clk_100MHz,用于产生基准时钟信号;一个自适应闸门产生模块Gate_gen, 用于产生实际闸门,实际闸门在频率较低的情况下,比如0.1Hz,会自动延长实际闸门时间;两个计数器模块,Cnt_signal 用于对被测信号进行计数,Cnt_std_clk 用于对基准时钟进行计数;一个频率计算模块Freq_cal,该模块根据两个计数器的计数值得到被测信号的频率值;为了保留5 位小数,计算结果是乘以105之后的结果,所以小数点dp[7:0]被置为8’b1101_1111,其中0 表示小数点的位置,即小数点之后有5 位小数;在不同的频率范围,计算结果会自动选择单位:MHz、KHz 或者Hz,数值上会相对应地乘以10-6,10-3或者1。

图2 频率测量模块设计框图

如图3 所示,为频率测量模块设计波形图,该波形图中,软件闸门为gate_s,其依据计数器cnt_sys_clk_1s2 来确定1S 的闸门时间,实际闸门gate 则由gate_s 和被测信号共同决定。当gate_s 被拉低,而没有检测到被测信号的上升沿的时候,实际闸门gate 不会被拉低,直到检测到被测信号的上升沿;在这一段时间里,计数器cnt_sys_clk_1s2 将停止计数,这是自适应的关键所在,特别是对频率特别低的情况。当gate 也被拉低之后则开始计算,根据两个计数的总时间一致的原则[7]可以得到:

图3 频率测量模块波形设计图

M 为基准时钟计数值;N 为被测信号计数值;fstd_clk基准时钟频率,为已知量;ftest_signal为被测信号频率。由于FPGA 计算的特殊性,采用先算乘法后算除法的原则。

5 测量结果分析

在0.001Hz~400MHz 范围内,抽样了16 个不同频率,进行对比测量,测量结果如表1 所示。通过对比示波器与本设计的测量结果,在0.001Hz~400MHz 范围内,两者之间的相对误差为0.0015%以内,是一个可以接受的值。

表1 测量数据

如图4 所示,为开发板实物图,使用到的只有FPGA 本身,显示模块,一个复位按钮,显示模块的驱动是集成在FPGA 内部的,所以可以做成小型化轻量化口袋化的测量设备。如图5 所示,则展示了100MHz 和100KHz 两个频率信号的示波器和本设计测量结果实拍照片。

图4 开发板整体图

图5 示波器测量结果与本设计测量结果实物对比

6 结语

利用FPGA 在速度和可靠性方面固有的优势,采用等精度测量方法,通过优化闸门时间设置方式,自适应的闸门时间将根据频率的变化自动变化,既保证了中高频段的快速测量,又保证了低频信号的有效测量。整体实现了400MHz 到0.001Hz 的自动测量与显示,相对于示波器(GWINSTEK GDS-3152)测量结果,相对误差在0.0015%内,满足基本需求,可以实际应用于小型化口袋仪表。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!