量程自动转换数字频率计.docx

量程自动转换数字频率计.docx

ID:50741568

大小:235.10 KB

页数:15页

时间:2020-03-14

量程自动转换数字频率计.docx_第1页
量程自动转换数字频率计.docx_第2页
量程自动转换数字频率计.docx_第3页
量程自动转换数字频率计.docx_第4页
量程自动转换数字频率计.docx_第5页
资源描述:

《量程自动转换数字频率计.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、量程自动转换数字频率计的设计1.设计目标:A.设计一个3位十进制数字式频率计,其测量范围为1MHz,量程分10kHz,100kHz和1MHz三档(最大读数分别为9.99kHz,99.9kHz,999kHz)。被测信号应是一符合CMOS电路要求的脉冲或正弦波。B.要求量程可根据被测量的频率大小自动转换,即当计数器溢出时,产生一个换挡信号,让整个计数时间减少为原来的1/10,从而实现换挡功能。C.要求实现溢出报警功能,即当频率高于999kHz时,产生一个报警信号,点亮LED灯,从而实现溢出报警功能。D.小数点位置随

2、量程变化自动移位。E.采用记忆显示方式,即计数过程中不显示数据,待计数过程结束后,显示计数结果,并将此显示结果保持到下一次计数结束。显示时间应不小于1秒。2.设计思路及实现方案:1.频率计的工作原理:常用的测量频率的方法有两种,一种是测周期法,一种是测频率法。测周期法需要有基准系统时钟频率Fs,在待测信号一个周期Tx内,记录基准系统时钟频率的周期数Ns,则被测频率可表示为:Fx=Fs/Ns测频率法就是在一定时间间隔Tw(该时间定义为闸门时间)内,测得这个周期性信号的重复变换次数为Nx,则其频率可表示为:Fx=N

3、x/Tw本设计采用的是直接测频率的方法。2.频率计的原理框图:频率计的系统设计可分为3位十进制计数模块,闸门控制模块,译码显示模块,可自动换挡模块和分频模块。其原理框图如下:分频模块可自动换挡模块闸门控制模块3位十进制计数模块译码显示模块→其中,可自动换挡模块为闸门控制模块提供3个挡,也就是三个测量范围的基准时钟信号,通过计数器的最高位的溢出情况来判定工作在第几挡。闸门控制模块根据基准时钟信号产生基准时钟信号周期2倍的周期使能信号,随后为锁存器产生一周期性地锁存信号,再然后为计数模块产生一周期性的清零信号。3位

4、十进制计数模块在使能信号和清零信号的控制下对被测信号的波形变化进行计数,若产生溢出则为自动换挡模块输出一换挡信号。译码显示模块显示被测信号的频率。1.设计过程(包括关键模块的仿真结果及贴图)1.分频模块:输入信号为4MHZ的高频脉冲,经过分频器后得到1KHZ的脉冲。分频器的代码如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityfenping2isport(clk:instd_logic;clk_out:o

5、utstd_logic);endfenping2;architecturebehavioroffenping2isbeginprocess(clk)variablecount:integerrange0to1999;variablex:std_logic;beginifclk'eventandclk='1'thenifcount<1999thencount:=count+1;elsecount:=0;x:=notx;endif;endif;clk_out<=x;endprocess;endarchitectur

6、ebehavior;模块说明:clk为4MHZ时钟脉冲输入端,clk_out为1KHZ脉冲输出端。由于输入为高频信号,不易仿真且代码编译无误,这里没有给出时序波形图。经软件编译后,得到模块为:2.3位十进制计数模块:3位十进制计数模块包含3个级联十进制计数器,用来对施加到时钟脉冲输入端的待测信号产生的脉冲进行计数,十进制计数器具有计数使能、清零控制和进位输出功能。用于计数的时间间隔(计数允许周期T)由闸门控制模块的控制信号发生器所产生的使能信号来控制,计数使能信号也在闸门控制模块中产生。自动换挡模块决定计数器读

7、数的单位。1位十进制计数器的VHDL源程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycount10isport(CLK,RST,EN:instd_logic;CQ:outstd_logic_vector(3downto0);COUNT:outstd_logic);endcount10;architecturebehavofcount10isbeginprocess(CLK,RST,EN)varia

8、bleCQ1:std_logic_vector(3downto0);beginifRST='1'thenCQ1:=(others=>'0');elsifCLK'eventandCLK='1'thenifEN='1'thenifCQ1<9thenCQ1:=CQ1+1;elseCQ1:=(others=>'0');endif;endif;endif;ifCQ1=9thenCOUNT<='1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。