APP下载

基于单片机与FPGA的等精度频率计设计

2015-02-02张国勤

兵器装备工程学报 2015年12期

张国勤

(四川机电职业技术学院,四川 攀枝花 617000)

基于单片机与FPGA的等精度频率计设计

张国勤

(四川机电职业技术学院,四川 攀枝花617000)

摘要:利用准等精度测频原理,提出了一种基于单片机与FPGA的等精度频率计设计方案。该频率计的测频范围可达1Hz~40MHz,测量范围内频率测量的精度达到10-7。

关键词:单片机与FPGA;等精度测频;频率计

本文引用格式:张国勤.基于单片机与FPGA的等精度频率计设计[J].四川兵工学报,2015(12):85-88.

Citation format:ZHANG Guo-qin.Design of Equal Precision Frequency Meter with MCU and FPGA[J].Journal of Sichuan Ordnance,2015(12):85-88.

Design of Equal Precision Frequency Meter with MCU and FPGA

ZHANG Guo-qin

(Sichuan Electromechanical Institute of Vocation and Technology, Panzhihua 617000, China)

Abstract:This paper introduced the equal precision frequency measuring principle and put forward design scheme of the equal precision frequency meter based on MCU and FPGA.Its test frequency range is between 1 Hz~40 MHz, and the frequency meter is 10-7within the scope of its measurement precision.

Key words:MCU and FPGA; frequency measurement with equal-precision;frequency meter

频率是指周期性信号在单位时间(1 s)内的变化次数。频率检测是电子测量领域的最基本测量之一,在工作及生产中有着重要的作用[1-3]。在自动检测系统中,人们常把压力、转速、振动等信号转换为频率信号进行测量,因而频率检测的精确度也就成了影响检测结果准确度的一个重要因素[4-5]。介绍了一种采用单片机与FPGA相结合的准等精度测频电路,从而能够以较低的成本来实现频率的高精度测量。

1影响测频精度的因素

一般常见的影响测频精度的因素主要有2个方面,一方面是脉冲信号的形状,另一方面就是测频方法的选用。在自动检测中,为了得到比较理想的脉冲形状,要注意传感器的初始安装位置,另外通常也会在信号的输入端加入脉冲放大整形电路,从而使脉冲的形状符合要求。而在测频方式方法上,伴随着电子技术软、硬件技术的发展,在现代测频技术中应用最多的是电子计数法。

电子计数法就是采用电子计数器对一个周期信号在单位时间内重复变化的次数进行计数,从而得到信号的频率值。此方法的测量精度主要取决于基准时间和计数的量化误差。电子计数法中较典型的测频方法有M法(脉冲数定时测频法)测频、T法(脉冲周期测频法)测频。

M法测频是在确定时间tc内记录待测脉冲个数m,然后用所得的脉冲数m除以测量时间tc,就可得到频率f。M法测频适合于频率较高的场合,影响其测量精度的因素主要是所记录的脉冲个数m和tc的大小。例如,若脉冲的频率f=10 000 Hz,tc=1 s时,此时的测量精度可达0.01%左右;而当频率较低时,若脉冲的频率f=100 Hz,tc仍为1 s时,此时的测量精度就降低到1%左右了。另外tc的长短也会影响测量精度。虽然tc取得较长时,测量精度较高,但不能反映被测量(如转速)的瞬时变化,不适合动态测量。tc也不能取得太小,太小会导致在tc时间段内得到的脉冲数太少,从而使测量精度降低。

T法测频则是在待测信号的一个周期Tx内,记录标准频率信号变化次数n,然后用n除以Tx得到频率f。T法测频适合于频率较低的场合。例如,若脉冲的频率f=10 Hz,标准频率信号的频率为fs=10 kHz时,测量精度可达0.1%左右;但当频率较高时,若脉冲的频率f=1 000 Hz,标准频率信号的频率fs仍为10 kHz,测量精度则会降低至10%左右。

由以上分析可见,不管是M法测频或T法测频都无法使频率信号在整个测量范围内得到一个同样的精度。其精度会随着输入频率的高低不同而发生变化。要想不论被测信号频率高低,测频精度始终保持不变,通常需采用多周期同步测频法。

2多周期同步测频法的原理

多周期同步测频是指由被测信号控制门控信号的开启,在被测信号的多个时间周期内测量信号频率。其原理波形图如图1所示。

图1 多周期同步法测频原理波形

由图1可看出,这里所介绍的多周期同步测频只是对被测信号同步,对标准时钟信号并不同步,因此这只是一种准同步。但由于闸门时间与被测信号同步,因此就消除了对被测信号计数产生的±1个字误差,使测频精度与待测信号的频率无关,从而可以实现在整个测频范围内的等精度测量。设在闸门时间T内,被测信号被计数为N个脉冲,标准时钟脉冲被计数为M个脉冲,那么被测信号的频率则为

(1)

由式(1)可知影响被测信号频率fx精确度的因素有N,M, fs3个变量,即

由于门控信号由被测信号开启,故对被测信号在T内的计数不会产生误差,故dN=0,由式(2)可推出

(3)

在式(3)中dM为闸门打开时,由于标准时钟与闸门时钟不同步,从而造成计数器对标准时钟计数会产生误差,其最大误差为±1,即dM=±1。由于M=T·fs,则式(3)可变为

(4)

3基于单片机和FPGA的频率测量系统

基于多周期同步测频原理可知,提高fs或增大T可以提高测量精度。如果只选用单片机来设计多周期同步测频电路,以最常用的MCS—51系列的单片机为例,定时器和计数器的时间基准是其机器周期,而其机器周期的长短受单片机的晶振频率影响,目前常用的单片机晶振频率为12 MHz或24 MHz,由此产生的标准时钟频率fs只能是1 MHz或2 MHz,在这种标准时钟频率下,使用只是基于对被测信号同步,而与标准时钟不同步的多周期准同步测频,不太可能使频率测量准确度达到10-7。为了获得100 MHz的标准信号,可采用大规模的可编程逻辑器件(如CPLD和FPGA)和EDA技术来设计,从而具有设计效率高,设计系统体积小、功耗低、工作可靠等特点,但在没有IP核的情况下,用FPGA来完成32位除法运算是相当难且占资源的。综合各种因素考虑,故决定采用由单片机和FPGA来实现多周期测频电路。其中单片机采用89C51,通过软件编程实现两组32位二进制数的乘除运算,并将结果送输出口驱动8位数码管显示;而由FPGA内部硬件设计电路来完成对被测信号频率和标准信号频率的计数。基于单片机与FPGA的频率测量系统框图如图2所示。

图2 基于单片机与FPGA的频率测量系统框图

3.1 FPGA硬件程序设计

FPGA硬件设计电路如图3所示,电路含有一个锁相环、一个秒信号发生器、一个D触发器、两个32位计数器和一个8选一的数据选择器。锁相环(MYPLL)是利用FPGA内部提供的PLL,通过设置相应参数将晶体振荡器产生的40 MHz时钟信号变为100 MHz时钟信号输出,由它给计时和计数电路提供标准时钟信号。秒信号发生器(second signal功能块)用来产生一个1 s的持续脉冲来作为预置门信号T。D触发器作为同步门使用,保证门控时间与被测信号同步。两个32位计数器分别完成对被测信号与标准时钟信号的计数。8选一数据选择器在单片机的控制下,完成对两个计数器数值的分时传送。电路中的清零信号(clr)、数据选择器的地址信号sel[2..0]均由单片机给出。等门控时间T(1 s)结束,FPGA通过信号int0的下降沿通知单片机读取计数器数值。

图3 FPGA内部程序设计框图

在本设计中预置门的时间由FPGA内部的秒信号发生器来产生。这是因为用单片机来完成高精度定时时,要对定时时间准确估算,这样就要考虑程序运行时间及定时器设置时间,稍不小心会导致门控时间T出现误差,从而影响测量精度。故在此采用FPGA的硬件模块定时,既方便且高效准确。同时这样的结构安排也可以让单片机的程序更简单易行。

3.2 单片机电路设计

单片机外围电路设计如图4所示,单片机的P3.5脚用做数据采集中断口,FPGA在门控时间T内计数完毕,向单片机发出中断请求。单片机的P0口用做计数器数据输入口,要读入8组数据,数据的地址由P2.2~P2.0口给出到FPGA的sel[2..0]管脚上,FPGA的清零复位信号(clr)由单片机的 P3.6给出。P1口用做七段显示字码输出,P2.6~P2.4口用作八位显示器位码输出口。

图4 单片机电路硬件原理

3.3 单片机程序设计

单片机在此系统中的作用是对FPGA进行清零及在收到中断信号后对输入P0口进行读数,完成运算,并将结果送P1口驱动8位LED数码管进行显示。其主程序流程图如图5所示。图6为中断读数子程序。

图5 主程序流程

图6 INT0中断子程序流程

4结论

采用晶振为12 MHz的AT89C51与Altera公司的Cyclone系列的EP1C12Q240C8的FPGA芯片来进行组装调试,其最高检测频率可达40 MHz,最低检测频率为1 Hz。在整个测试频率范围内其测量精度为10-7。采用Cyclone系列的FPGA可利用其内部所带的锁相环将标准信号的频率提高到100 MHz,从而提高测频精度,但由于FPGA具有易失性,因而需为系统设计配置电路,对其进行上电自动加载。这样印制板电路会较复杂些,若想让印制板电路简单些,可以选用CPLD来实现,譬如Altera公司的MAX Ⅱ系列。

参考文献:

[1]曾繁泰.可编程器件应用导论[M].北京:清华大学出版社,2001.

[2]龚江涛.EDA技术应用[M].北京:高等教育出版社,2012.

[3]贾立新.电子系统设计与实践[M].北京:清华大学版社,2007.

[4]侯伯亨.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,2004.

[5]吴继华.Altera FPGA/CPLD设计[M].北京:人民邮电出版社,2009.(责任编辑杨继森)

【信息科学与控制工程】

中图分类号:TP391

文献标识码:A

文章编号:1006-0707(2015)12-0085-04

doi:10.11809/scbgxb2015.12.021

作者简介:张国勤(1970—),女,硕士,讲师,主要从事自动检测及电子电路仿真与设计研究。

收稿日期:2015-06-25