您的当前位置:首页正文

基于Verilog语言的等精度频率计设计

来源:好兔宠物网
维普资讯 http://www.cqvip.com

第33卷第9期 2007年9月 电字工套师 ELECTRONIC ENGINEER V01.33 No.9 Sep.2007 基于Verilog语言的等精度频率计设计 赵亮,吴振宇 (大连理工大学创新院,辽宁省大连市116023) 摘要:介绍了等精度测量频率的原理,利用Verilog硬件描述语言设计实现了频率计内部功能模 块,对传统的等精度测量方法进行了改进,增加了测量脉冲宽度的功能;采用AT89S51单片机进行数 据运算处理,利用液晶显示器对测量的频率、周期、占空比进行实时显示,可读性好。充分发挥FPGA (现场可编程门阵列)的高速数据采集能力和单片机的高效计算与控制能力,使两者有机地结合起来。 在Quartus lI6.0 EDA(电子设计自动化)开发平台上进行仿真、测试,并最终下载到FPGA芯片内部。 系统测量精度高,实时性好,具有很好的应用前景。 关键词:等精度;频率计;Verilog硬件描述语言;单片机 中图分类号:TM935.1 0引言 系统中,如果采用的标准信号源的精度很高,就可 以达到一个很高的测量精度,一般情况下都是采用晶 体作为标准信号源,因此可以达到很高的精度,满足一 般系统的要求。 传统测量频率的方法主要有直接测量法、分频测 量法、测周法等,这些方法往往只适用于测量一段频 率,当被测信号的频率发生变化时,测量的精度就会下 降。本文提出一种基于等精度原理的测量频率的方 法,在整个频率测量过程中都能达到相同的测量精度, 而与被测信号的频率变化无关。本文利用FPGA(现 场可编程门阵列)的高速数据处理能力,实现对被测 信号的测量计数;利用单片机的运算和控制能力,实现 对频率、周期、脉冲宽度的计算及显示。 2 FPGA模块设计 本系统在传统的等精度测量原理基础上进行了改 进和优化。增加了测量占空比的功能,同时由FPGA 内部产生清零信号,节省了资源。改进后的FPGA核 心模块如图2所示。FPGA部分主要由门控信号产生 模块、计数器控制模块、计数器模块、锁存器、中断输 出、数据选择输出、顶层模块组成。 1等精度测量原理 等精度测量的一个最大特点是测量的实际门控时 间不是一个固定值,而是一个与被测信号有关的值,刚 好是被测信号的整数倍。在计数允许时间内,同时对 标准信号和被测信号进行计数,再通过数学公式推导 得到被测信号的频率。由于门控信号是被测信号的整 数倍,就消除了对被测信号产生的±1误差,但是会产 生对标准信号±1的误差。如图1所示。 软件闸门 图2等精度测量核心结构 『.]r] 标频 一 r]r]n r] 1)门控信号 为了测量频率为1 Hz的信号,要求系统的开门时 问不小于1 S;同理,为了测量0.1 Hz频率的信号,要 求开门时间最短为10 S。但是如果系统一直采用10 S 图1等精度测量原理 的门控信号,测量高频信号的等待时间太长,显然不合 理,因为测量结果的显示必须要等到一个测量周期结 束之后才能更新。本系统采用的方法是,由单片机给 FPGA提供一个门控的选择信号,如果FPGA测得的频 收稿日期:2007-01-22;修回日期:2007-03—21。 ・率小于1 Hz,那么单片机自动给出一个启动10 S门控 14・ 维普资讯 http://www.cqvip.com 第33卷第9期 赵亮,等:基于Verilog语言的等精度频率计设计 ・测控技术・ 的控制信号;反之,如果发现测量的频率大于1 Hz,自 动切换回1 s门控,实现了一个闭环的自动控制,很好 地解决了门控的时间问题。 3)计数器模块 在设计计数器的过程中需要注意计数器的宽度设 置,系统中采用的最大门控时间为10 s,标准信号源的 频率为50 MHz,则在计数的允许时间内计数的最大值 为:10×50 000 000=500 000 000<2 =536 870 912, 2)计数器控制模块 该模块是本文的创新点所在,主要用来同步被测 信号。由前面的分析可知,门控信号启动(上升沿) 为了方便数据传输,系统中采用了32位位宽的计数 器。 后,在被测信号的上升沿启动计数允许模块,允许计数 器计数;门控信号关闭(下降沿)后,在被测信号的下 一4)锁存器模块 在门控信号关闭的同时,停止计数,同时启动锁存 模块,把测量的数据锁存起来,以便传输。 5)中断输出 个上升沿关闭计数允许模块,停止计数,从而保证了 门控信号是被测信号的整数倍,达到了等精度的目的。 该模块有GATE、CLK—X这2个输入端;EN—h、EN—X、 Load、CLR这4个输出端。GATE为上一级给出的门 控信号;CLK—x为被测信号;EN—h,高电平期间对标准 信号进行计数,得到CNT—h;EN—x为给出的允许计数 锁存数据的同时,给单片机一个低电平的中断信 号,通知单片机读取数据。 6)数据选择输出模块 信号,在EN—x的高电平期间,对被测信号、标准信号 ¨时计数,得到CNT—X、CNT—b;Load为锁存信号;CLR 为计数器清零信号。 由CNT—X和CNT—b可以计算出被测信号的频率 和周期;由CNT—X和CNT—h可以计算出被测信号的脉 冲宽度。 仿真图如图3所示。 一一i; 一… 一一 一 ■ 。。一乏。 。 一系统中采用了3个32位的计数器,由于单片机采 用的是51系列单片机,只有8位的数据总线,所以一 次通信只能传输8位数据,3×32/8=12,所以设计了 个数据输出控制模块,由单片机提供4根地址线,译 12次读取测量的数据。 7)顶层模块 实例化所有的底层模块,同时为了调试方便,加入 了一些测试点。 码后可以选择l6组数据,单片机得到中断通知后,分 FPGA部分的整体结构图如图4所示。 图3 Quartus仿真 『 lk GATE EN h CLK X EN X Icad CLR Ianch 二L 7 Dala叫 0】 _-t1in scitn4k【 3lo1 ̄ t[3 101 l ⅢIMAX15000000 ̄1 donl — instl lanch sa[3 0】 Otll 8[7..0【 Fx 32[31 0】  I I一VL  -IHIGH TIMEl5000@3 ̄0 l  ‘st2 lHIGE TIMEl500000000 I ILOW TIME I 1O(D0000 ̄Ol  ・ _:1 一Dataout[ 。】t-- -I-4i cnk o[31 Im】 [3 10】 Fbh 32[3I1 O0l】 Inst7  。anch …( 【_…[3v[M PI VCL'『] IParameterI Value l inst8 lL lMAX l5000000(X)1 nst5 _K_ llMI/I[ Lt 系统输人 _1 Data_out[ o1 I-- in I】 l —_].= }Parameterl Value 1 :inst'-)  lnst6 ck out[31 OlI- SEL[3 01为数 输人I 选抒 制f SEL GATE为I J j0 n0 ∞ O~IS.I~l0s CLK B 50MHz为柄 系统输 0输人50MHz IMAX 15000000 ̄1 INT sig  :l^I 一 f:. H r¨ . )1i"4.1 图4 FPGA整体结构 3单片机模块控制 3.1理论分析 茗 篙磊 为F 。则有: 在计数允许EN—x时间内,对被测信号和标准信 CNT_x× =CNT—b× ・(1) 15・ 维普资讯 http://www.cqvip.com ・测控技术・ 电字工蠢师 2007年9月 式中: = It (2) 1 (3) 将式(2)、式(3)代入式(1)可以得到: F = F b 、 (4) x 变换可以得到被测信号频率为: F = ×cNT—x (5) 系统实现的被测频率为: F_x= 一 i x xCNT—F—x一一  (6)(6) 被测周期为: T_x (7) 占空比r为: H—duty=C NT_F—h/C NT—F—b (8) 系统中采用式(6)~式(8)进行计算,得到最终的 测量数据,单片机中采用浮点数进行运算,计算的精度 可以满足系统的要求。 3.2硬件电路 系统硬件电路比较简单,就是单片机的最小系统 加上液晶显示模块,设计时需要注意,51单片机端V1 电压是5 V输出,而FPGA是3.3 V输出,所以在数据 传输时要串联一个电阻,一般100 n~300 Q即可。 电路原理图如图5所示。 图5单片机部分电路 3.3软件设计 单片机软件主要由系统初始化、数据传输、频率、 周期、占空比计算、液晶显示等程序模块组成。 下面简单介绍主函数及计算子函数。 ・16. 系统主函数: void main(void) { Init—meH();//初始化系统 while(1) { if(F_x<1) //判断测量的频率大小,控制门控 Sel_gate:1; if(F_x>1) Sel_gate=0; if(flag)//进入中断 { Trans();//传输数据 Cal();//计算 lfag=0;//清除中断标志位 } Display();//显示测量的结果 } } 计算子函数: void Cal(void) { long temp3,temp2,templ,tempo;//定义临时变量 temp3:Cnt—F—b—data[3]; temp2=Cnt—F—b—data[2]; templ:Cnt—F—b—data[1]; tempo=Cnt—F—b—dataE0]; Cnt—F—b=(ternp3<<24)+(temp2<<16)+(templ <<8) +(tempo<<0); //将测得的数据进行组合 temp3=Cnt—F—X—data[3]; ternp2:CntFX———data[2]; tempi=Cnt—F—X—data[1]; tempo:Cntx—F——data[0]; Cnt—F—X:(temp3<<24) +(temp2<<16) +(templ <<8) +(tempo<<0); temp3:Cnt—Fh——data[3]; ternp2=Cnt—Fh——data[2]; templ:CntFh———data[1]; tempo=Cnt—F—h data[0]; CntF——h=(temp3<<24)+(temp2<<16)+(templ <<8) +(tempo<<0); F_x=F—b/Cnt_F—b Cnt—F_x; //计算频率 TX; —X=1/F—//计算周期 H—duty:Cnt—Fh/CntF—b; ——//计算占空比 } 维普资讯 http://www.cqvip.com 第33卷第9期 赵亮,等:基于Verilog语言的等精度频率计设计 ・测控技术・ 软件流程如图6所示。 4结束语 本系统设计采用FPGA和单片机结合的方式实现 等精度测量频率,充分发挥了FPGA高速的数据处理 能力以及单片机的计算、控制能力。采用Verilog硬件 描述语言对系统进行仿真测试,最终下载到FPGA内 部。单片机采用C语言编写程序,利用浮点数进行计 算,精度高。同时设计了门控信号自动选择的闭环控 制,大大地提高了系统的性能。等精度测量技术在生 产、实验等环境中得到了广泛的应用。 图6系统流程 蕈 参考文献 中断服务子程序如图7所示。 [1]PALNITKAR S.Verilog HDL数字设计与综合[M].二版. 夏宇闻,胡燕祥,刁岚松,等译.北京:电子工业出版社, 2004. [2]常晓明,李媛媛.Verilog—HDL工程实践入门[M].北京: 北京航空航天大学出版社,2005. [3]马忠梅.单片机的C语言应用程序设计[M].北京:北京 航空航天大学出版社,2003. 赵亮(1983一),男,硕士研究生,主要从事FPGA方面的 研究工作。 图7中断服务子程序 Design of Equal Precision Frequency Meter Based on Verilog HDL ZHAO Liang.WU Zhenyu (Dalian University of Technology,Dalian 1 16023,China) Abstract:The principle of equal precision measurement is introduced in this paper,it adopts Verilog Hardware Description Language to implement function module in ̄equency meter,and adds pulse width meas. urement on the base of traditional frequency measurement.It also adopts AT89S5 1 Micro Controller Unit as data processing unit,uses LCD1602 equipment to display frequency,periods and pulse in real—time.FPGA S high—speed data acquisition and high—performance controlling and computing of MCU are represented in this system.Data is simulated and tested in Quaaus 1I 6.0 EDA development platform,and finally downloaded to the chip. Keywords:equal precision measurement;frequency meter;Verilog HDL;MCU 蒜 莲 鲨盏骘 欢 迎 投 稿 E—mail:radarnet@126.tom ・17・ 

因篇幅问题不能全部显示,请点此查看更多更全内容