打印

用现场可编程门阵列实现的频率计

[复制链接]
1656|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
GoldSunMonkey|  楼主 | 2012-9-12 23:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 引言
数字频率计是通信设备、音、视频等科研生产领域不可缺少的测量仪器。采用Verilog HDL编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分外,其余全部在一片FPGA芯片上实现。整个系统非常精简,且具有灵活的现场可更改性。
相比传统的电路系统设计方法,EDA技术采用VHDL语言描述电路系统,包括电路的结构、行为方式、逻辑功能及接口。Verilog HDL具有多层次描述系统硬件功能的能力,支持自顶向下的设计特点。设计者可不必了解硬件结构。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用Ver-ilog HDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的FPGA器件中去,从而实现FPGA的设计。
2 测量原理及总体结构框图
频率测量方法有2种。一种是测频法,在一定时间间隔TM内测出待测信号重复变化次数N,则被测信号的频率为fx=N/TM。另一种方法是测周法,在被测信号的一个周期内测出标准高频信号fs的个数N,则被测频率为fx=fs/N。可见测频法对高频信号有较高的测量精度,而测周法对低频信号的测量精度较高。本频率测量系统采用测频法和测周法相结合的方法,使两者的测量带宽得到了互补,而且采用了延时为纳秒级的FPCA来实现,从而极大地提高了系统工作带宽和系统测量精度。此外,具有自动测频和测周转换量程功能,每个数量级为一个量程,每个量程保留3位有效数字,用“xxxEx"表示“x.xx×10x”。
本频率计由控制模块、测频模块、测周期算频模块、锁存显示模块4个模块组成。总体框图如图1所示。

系统结构框图中信号说明。singal:被测信号。Stateshift:测频或测周期得出的量程不够或溢出信号。reset:复位信号。iclk:输入标准时钟12MHz。en_precent:显示占空比的按键信号。oclk:控制模块输出基本时钟,根据不同状态对iclk进行分频而得。en:使能信号。state_jmp:状态跳变信号。oen_precent:由控制模块输出的占空比显示信号。condition:状态输出信号。lOAd:允许输出显示信号。data[11:0]:计算所得数据,3位有效数字。out[19:0]:最终的输出显示数据,为“xxxEx”。

相关帖子

沙发
GoldSunMonkey|  楼主 | 2012-9-12 23:04 | 只看该作者
3 相应模块分析及设计

3.1 控制模块

该控制模块有11种状态。在1 Hz~100MHz范围内每个数量级为一种状态,共8种,小于1 Hz大于100MHz为两种量程溢出状态,还有一种为显示占空比状态。当进入两种量程溢出状态后,若被测信号又进入量程,控制器又能回到8种正常显示状态中去。8种数量级的状态中,每种状态对应一个基本时钟,每个基本时钟都由iclk(12 MHz)分频而来,为了保证误差在2%以内,本控制模块选择保留3位有效数字。

3.2 测频模块

测频模块在数字频率计中是一个比较重要的模块,要想使频率计能自动测频,还需要一个测频控制电路,要求它能产生3个控制信号:CN,LOAD和reset,以便使频率计能顺利完成测频3步:计数、锁存和清0。

测频模块的基本思路是:在1个clk周期内对进来的signal进行计数,clk的第1个上升沿用来清零,之后的1个下降沿到下个周期的下降沿,这段时间用来计数,在之后的半个周期用以输出使能,所以整个计算过程需要2个clk周期。测频模块测频得出的数据为100~999,若小于100,则cntlow=1,量程太大;若大于999,则cntover=1,量程溢出。

3.3 测周期算频模块

该模块由3个小模块构成,即测量信号高电平时间的模块(scale_fre_high)、测量信号周期的模块(scale_fre)和除法器模块(div)。其中的测量信号周期的模块就是测频模块的一种变形,把被测信号和基本时钟的输入对调一下,所以在命名上还是一致的。而测量信号高电平时间的模块也是在测频模块的基础上修改而来的。该模块框架图如图2所示。



3.4 锁存显示模块

锁存显示模块包括锁存和显示两部分。锁存模块是在信号LOAD的上升沿锁存到寄存器里面,并由REG的输出端输出,然后由开发系统板显示输出对应的数值。显示模块的主要工作是产生数码管显示所需的控制信号和数据信号。模块内用于循环显示的基准时钟经分频处理后得到。显示模块将二进制的结果信号转换成BCD码的形式输入给数码管,同时对数码管以较高的频率不断重复进行刷新。

锁存显示模块,输入3位有效数字,输出5位数“xxxEx”,前3位为需要显示的3位有效数字,后2位据输入的当前状态,显示被测信号频率所处的数量级。

下面是锁存显示模块的源程序:

使用特权

评论回复
板凳
GoldSunMonkey|  楼主 | 2012-9-12 23:04 | 只看该作者
4 系统仿真

该频率计设计利用EDA工具MAX_PLUS2进行了仿真,整个系统仿真波形如图3所示。



程序一开始未进入量程,于是慢慢调整,当进入到状态2时,在测量范围内,测出其周期为175,用除法器求其倒数,结果为571,完全正确。随着被测信号频率变大,跳入直接测频范围,则直接测出频率结果,也同样正确。仿真结果说明程序无误。

5 结束语

根据频率测量原理,把测频法和测周法结合起来,确定了低频段采用测周法,高频段采用测频法,实现了在其可测量程内的测量结果优于普通测量方法,且系统硬件电路结构简单,软件设计容易,已得到较好的实际应用。

使用特权

评论回复
地板
可木| | 2012-9-12 23:31 | 只看该作者
:lol

使用特权

评论回复
5
lg-alfer| | 2012-9-15 16:24 | 只看该作者
以前写过类似程序。。测量频率范围50M以下。。闸门时间1S,测量精度10^-8等级。。。

使用特权

评论回复
6
zhang_2000| | 2012-9-17 18:59 | 只看该作者
参考    等精度频率计

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:                     2014, 追逐梦想

264

主题

17215

帖子

523

粉丝