当前位置:文档之家› 华中科技大学电子课程设计频率计

华中科技大学电子课程设计频率计

2015-2016学年度第二学期电子技术基础课程设计 --数字频率计设计院系:自动化学院专业:自动化班级:姓名:学号:指导教师:一、设计目的与要求 (3)二、需求分析及创意 (3)三、系统方案及技术路线 (4)四、设计原理 (5)1、基本原理 (5)2、模块原理 (5)五、设计内容 (6)1、分频模块 (6)2、方波发生器模块 (6)3、五位十进制计数器模块 (7)4、锁存模块 (9)6、编译仿真 (15)六、输入输出设计 (15)八、实验总结 (17)1、心得体会 (17)2、待改进的问题 (18)3、功能扩展 (19)九、参考书目 (19)十、附录 (19)一、设计目的与要求设计一个数字频率计,其技术要求如下:(1)测量频率范围:1Hz~100kHz。

(2)准确度∆fx/fx≤± 2%。

(3)测量信号:方波,峰峰值为3V~5V。

(4)使用数码管显示测量的信号频率(测量低频信号时可以只显示测量信号的周期)。

二、需求分析及创意频率计的主要功能是准确测量出待测频率的频率、周期、脉宽及占空比。

在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。

测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。

电子计数器测频有两种方式:一是直接测频法(高频),即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法(低频)。

直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。

本设计中分别以图形设计方法为主和VHDL语言为主的两种形式进行设计。

在这次设计过程中,我们设计了两套测量频率计的方案。

下面分别阐述。

第一种方案,主要是通过一个计数器,在1秒时间内,当有待测信号上升沿产生时,开始计数。

最后送到显示模块显示。

而占空比,则是通过分别计算高电平时间和低电平时间,从而得到占空比数值。

应该说这种方法,更接近于测频法的思想。

通过实验的检测,发现与实验仪器(信号发生器)的最大误差只有±10,所以,在测量频率不是特别大的范围内,这种设计方案,笔者认为应该可以接受。

而第二种方案,则是对于不同大小的频率,通过测频法和测周法,进行选择输出频率值大小。

三、系统方案及技术路线低频信号的测量(测周期法1HZ—10KHZ):所谓频率就是在单位时间(1s)内周期信号的变化次数。

若在一定时间间隔T内测得周期信号的重复变化次数为N,则其频率为f=N/T,据此,同样对于低于10KHZ的信号,我们采用测周期法,时标为50MHZ,其误差远远小于0.001,故可达到指标要求测周法原理:假设基准时钟信号的周期为Ts(频率为fs),被测信号的周期我Tw,用被测信号控制测量计数器进行计数,当被测信号一个周期结束后,让计被测信号的周期为数器停止计数,若计数器数值为N x,Tw=N x*Ts其频率为fx=fs*Nx这种测频方法实际上是通过测量被测信号周期后,再经过换算得到被测信号频率的,它适合于被测信号原低于基准时钟信号频率的场合。

用这种方法测量时,测试精度与计数器中记录的Nx有关,由于被测信号一个周期的时间长度不一定正好为基准时钟信号周期的整数倍,因此计数器的计数值会产生±1个值的误差。

高频信号的测量(测频法10KHZ—10MHZ):由于我们很难得到准确的1hz频率,故在这里我们采用等精度测量法,这样就可以不必考虑1s信号的精确度的影响。

闸门时间不是固定值,而是被测信号周期的整数倍,即与被测信号同步.因此排除了对被测信号计数所产生的1个周期误差,并且达到了在整个测试频段的等精度测量.在测量过程中,有两个计数器分别对标准信号和被测信号同时计数.首先给出闸门开启信号(预置闸门上升沿),此时计数器并不开始计数.而是等到被测信号的上升沿到来时,计数器才真正开始计数.然后预置闸门关闭信号(下降沿到时),计数器并不立即停止计数,而是等到被测信号的上升沿到来时才开始结束计数,完成一次测量过程.设在一次实际闸门时间t中计数器对被测信号的计数值为Nx,对标准信号的计数值为Ns, 标准信号的频率为fs,则被测信号的频率为fx=Nx/Nsfs。

由推断(此处省略)得测量频率的相对误差£=1/tfs由上式可看出测量频率的相对误差与被测信号频率的大小无关,仅与闸门时间和标准信号频率有关.闸门时间越长,标准频率越高测频的相对误差就越小.标准频率可由稳定性好,精度高的高频率晶振产生,在保证测量精度不变的前提下,提高标准信号频率,可使闸门时间缩短,即提高测试速度.可实现四、设计原理1、基本原理频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。

这就要求sysclk 能产生一个1s 脉宽的周期信号,并对频率计的每一个计数器cntp 的使能端进行同步控制。

当clK_cnt 高电平时允许计数,并保持其所计的数。

在停止计数期间,首先需要一个锁存信号将计数器在前1s 的计数值锁存进锁存器reg 中,并由外部的7段译码器译出并稳定显示。

原理图如图1-1图1-12、模块原理根据数字频率计的基本原理,本文设计方案的基本思想是分为五个模块来实现其功能,即整个数字频率计系统分为分频模块、控制模块、计数模块、译码模块和量程自动切换模块等几个单元,并且分别用VerilogHDL 对其进行编程,实现了闸门控制信号、计数电路、锁存电路、显示电路等。

脉冲形成模块计数模块译码模块控制模分频模量程切换模块被测信锁存清零使能基准信号五、设计内容1、分频模块由于晶体振荡器提供的为50MHz的时钟,而在整个频率计里将用到周期为2s,半个周期为1s的闸门信号,所以我们在此模块先分频产生0.5Hz的分频信号。

always@(posedge sysclk)beginif(cnt==50_000_000)beginclk_cnt<=~clk_cnt;cnt<=0;endelsebegincnt<=cnt+1'b1;endend由程序中的clk_cnt<=~clk_cnt;cnt<=0;得知会产生我们想要的周期为2s的clk_int信号。

仿真结果如图1-2.图1-22、方波发生器模块always@(posedge sysclk)beginif(cnt1==500)beginclk_out<=~clk_out;cnt1<=0;endelsebegincnt1<=cnt1+1'b1;endend由于在寝室做测试时缺少了信号发生器,所以添加了一个方波发生的模块。

如上面程序中所示,当出cnt1=500时,可以产生50000HZ的方波,通过改变出cnt1的数值调出不同频率的方波从clk_out输出到clkin,进行方波频率计数。

3、五位十进制计数器模块5位十进制计数器模块包含5位十进制的计数器,用来对施加到时钟脉冲输入端的待测信号产生的脉冲进行计数,十进制计数器具有清零控制和进位扩展输出的功能。

always@(posedge clkin)beginif(clk_cnt)beginif(cntp1=='b1001)begincntp1<='b0000;cntp2<=cntp2+1;if(cntp2=='b1001)begincntp2<='b0000;cntp3<=cntp3+1;if(cntp3=='b1001)begincntp3<='b0000;cntp4<=cntp4+1;if(cntp4=='b1001)begincntp4<='b0000;cntp5<=cntp5+1;if(cntp5=='b1001)begincntp5<='b0000;endendendendendelsebegincntp1<=cntp1+1;endend本程序采用的是以累加的方法结合巧妙地if语句进行四重循环,实现四位十进制不同的高低级别,实现计数。

一位十进制原理图仿真如图1-3。

图1-3五位十进制原理图仿真如图1-4。

图1-44、锁存模块如果计数器输出直接与译码器相连接,那么在计数过程中输出端则随输入脉冲数的增加而不断跳变,那么显示数码管则也会不断闪烁跳变,让人不能看到稳定的输出,设锁存器后,则不再跳变,便可清晰读出计数结果。

其生成的功能模块如图所示:if(cntp1!='b0000|cntp2!='b0000|cntp3!='b0000|cntp4!='b0000|cntp5!='b00 00 )begincntq1<=cntp1;cntq2<=cntp2;cntq3<=cntp3;cntq4<=cntp4;cntq5<=cntp5;cntp1<='b0000;cntp2<='b0000;cntp3<='b0000;cntp4<='b0000;cntp5<='b0000;end//5、清零复位模块采用一个开关作为rst复位信号,当rst置0时,5个cntq寄存器赋0,从而5个数码管显示0,同时5个计数单元cntp也清零,为下次阀门信号时计数做准备。

if(cntp1!='b0000|cntp2!='b0000|cntp3!='b0000|cntp4!='b0000|cntp5!='b000 0 )begincntq1<=cntp1;cntq2<=cntp2;cntq3<=cntp3;cntq4<=cntp4;cntq5<=cntp5;cntp1<='b0000;cntp2<='b0000;cntp3<='b0000;cntp4<='b0000;cntp5<='b0000;end//6、译码显示模块选择另一个开关作为量程选择信号rst1,当rst1=0时,将cntq1,cntq2,cntq3,cntq4的值分别赋给seg1,seg2,seg3,seg3,seg4这4个7位共阳极数码管显示的信号(即显示5位数频率的后4位),当rst1=1时,将cntq5的值赋给seg1,再把seg2,seg3,seg4分别置为’0‘所对应的显示码。

还有一种显示方式是吧cntq5的值直接赋给led[ 3:0],直接用4个二极管显示(用二进制表示)。

相关主题