陈景波,丁 旭,江维勇
(常熟理工学院 电气与自动化工程学院,江苏 常熟 215500)
FPGA是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物.目前以硬件描述语言(Verilog HDL)所完成的电路设计,可以经过简单的综合与布局,快速地烧录至FPGA上进行测试,是现代IC设计验证技术的主流[1-3].数字频率计在日常生活中是一种非常重要的测量仪器.在利用FPGA对等精度数字频率计的设计中,除了对信号的放大整形电路和结果显示部分外,核心电路是采用Verilog HDL编程,所用器件是Actel公司的FPGA芯片A3P060.在Libero IDE环境下生成网络表下载到FPGA中实现.整个硬件电路结构简单,系统的稳定性高,设计成本低.
图1 等精度测频时序图
基于传统测频原理的频率计的测量精度随被测信号频率的下降而降低,在实用中有较大的局限性.等精度测频方法是在直接测频方法的基础上发展起来的,它的闸门时间不是固定的值,而是被测信号周期的整数倍,即与被测信号同步,因此,避除了对被测信号计数所产生的±1个字误差,并且达到了在整个测试频段的等精度测量.其测频原理如图1所示[4,5].
在测量过程中,有两个计数器分别对标准信号和被测信号同时计数.首先给出闸门开启信号(预置闸门上升沿),此时计数器并不开始计数,而是等到被测信号的上升沿到来时,计数器才真正开始计数.然后预置闸门关闭信号(下降沿)到时,计数器并不立即停止计数,而是等到被测信号的上升沿到来时才结束计数,完成一次测量过程.可以看出,实际闸门时间t与预置闸门时间t1并不严格相等,但差值不超过被测信号的一个周期.
设在一次实际闸门时间t中计数器对被测信号的计数值为Nx,对标准信号的计数值为Ns,标准信号的频率为fs.
则被测信号的频率为
由式(1)可知,若忽略标频fs的误差,则等精度测频可能产生的相对误差
其中fxe为被测信号频率的准确值.在测量中,由于fx计数的起停时间都是由该信号的上升沿触发的,在闸门时间t内对fx的计数Nx无误差(t=Nx×Tx);对fs的计数Ns最多相差一个数的误差,即| ΔNs|≤1,其测量频率为
将式(1)和(3)代入式(2),并整理得
由上式可以看出,测量频率的相对误差与被测信号频率的大小无关,仅与闸门时间和标准信号频率有关,即实现了整个测试频段的等精度测量.闸门时间越长,标准频率越高,测频的相对误差就越小.标准频率可由稳定度好、精度高的高频率晶体振荡器产生,在保证测量精度不变的前提下,提高标准信号频率,可使闸门时间缩短,即提高测试速度.
当系统正常工作时,由内部提供的48MHz的晶振频率输入信号,经过测频控制信号发生器(分频模块)进行信号的变换,产生计数信号(可产生预置闸门信号),被测信号(可产生实际闸门信号)通过信号整形电路产生同频率的矩形波,预置闸门信号和实际闸门信号分别控制对被测信号Nx和标准信号Ns计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,利用Verilog HDL语言编写一个除法器程序,用FPGA做除法运算.最终,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在数码显示管上可以显示的十进制结果.在数码显示管上可以看到计数结果.设计主体总体框图如图2所示.
图2 频率计总体框图
除法器是把计数被测信号所计得的Nx作为被除数和标准信号所计得的Ns作为除数相除,除得一个商.
其模块设计如图3所示.
由于在一些综合工具中除法运算符不能被综合成网表,这里介绍一种采用累加比较法来实现运算的算法.
假设数A除以数B,定义一个中间的变量temp和C,temp和C的初始值为0,它们作如下运算,设计流程图如图4所示.
clkr:时钟控制信号,输入的是开发板上的48MHz的时钟频率;
Nx[10:0]:为被除数,与Nx模块相连;
Ns[10:0]:为除数,与 Ns模块相连;
freout[10:0]:11位二进制被测频率的输出值;
它将除法器中得到的值,将其转化成BCD码,以便直接在LED数码管上观察、读出.
图3 除法模块
frediv module clkr freqout[10:0]Nx[10:0]Ns[10:0]
图4 除法模块流程图
设置其两个二进制输入值分别为00101101110=0000_0011_0110_0110(BCD码)=366和00111101110=0000_0100_1001_0100(BCD码)=494,仿真结果如图5所示.
FPGA部分整体设计仿真结果如图6所示.从仿真波形上可以清楚地看到,被测信号在激励文件中设置为fx=125KHz,ctl置高,对48MHz频率分频得到标准频率clks=1KHz,结果为商D=00001111101(二进制)=125(十进制)=0000_0001_0010_0101(BCD码),所对应的译码为0000001_1001111_0010010_0100100,则结果完全正确,同时也对低频5Hz和高频987KHz进行了仿真,结果如图7和图8所示.
图5 二进制转BCD模块仿真图
图6 125KHz信号仿真图
图7 5Hz信号仿真图
图8 987KHz信号仿真图
和传统的频率计相比,基于FPGA设计的频率计简化了电路板的空间.提高了系统设计的可靠性.实现了硬件设计的软件化,这是数字逻辑设计的新趋势.此外,其测频系统的标准信号频率的提高,也进一步提高了测频的精度,并缩短了测频时间.
[1]董秀洁,杨艳.基于VHDL语言的数字频率计的设计与仿真[J].河南工程学院学报,2008,20(4):59-61.
[2]吴海明,王伟.基于单片机与FPGA的等精度频率计设计[J].兵工自动化,2009,28(3):79-81.
[3]莫琳.基于FPGA的等精度频率计的设计与实现[J].现代电子技术,2004,10:81-84.
[4]李云鹏,王思明.基于FPGA的等精度频率计设计[J].电子元器件应用,2007,9(11):54-55.
[5]曾光,冯锐.基于FPGA的数字频率计VHDL软件实现方法[J].软件导刊,2009,8(2):28-29.