数字系统设计报告--数字频率计设计.doc

数字系统设计报告--数字频率计设计.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字系统设计报告--数字频率计设计

一、实验目的 了解时序电路设计的一般方法 了解利用可编程器件和VHDL语言进行数字系统开发的方法 掌握数字频率计的设计。 二、实验原理 本次实验要求设计一个数字频率计,频率测量范围为1Hz~50MHz,采用100MHz的基准时钟。刷新时间不大于2秒(最长2秒刷新一次频率显示)。功能示意框图如图3-1: 图3-1 数字频率计功能示意图 本次实验要求设计一个数字频率计,对输入频率进行测量。根据实验的要求,频率测量的范围为1Hz~50MHz,跨度较大,考虑到若完全输出至少需要8位,位数较多,因此可考虑分档显示,用三到四位显示数值,一位显示档位。 本实验要实现一个数字频率计,核心部分是要实现一个脉冲计数器,对输入脉冲进行计数,然后再转化输出。由于需要测量的最小频率为1Hz,可以考虑使用一个频率为0.5Hz的门控信号,让它在高电平期间计数被测信号的上升沿,对于0.5Hz的门控信号而言,它的每个高电平持续时间为1秒,被测信号上升沿的数目即为待测信号的频率。 考虑本次实验的基准时钟为100MHz,因此必须分频到0.5Hz才能完成计数被测信号上升沿的功能,因此要让基准时钟通过加一个分频器以得到0.5Hz的门控信号。 题目指标要求刷新时间不大于2秒,可以在前次计数结束后,即门控信号为低电平期间将计数值清零,计数器停止计数。当门控信号的上升沿来时,计数器进入下一次计数,这样刷新时间为2秒,符合设计要求。 对于显示模块的实现,由实验版的电路图中看可发现在控制数码管显示只有一个4511去控制,则一次只能显示一个数码,因此如何实现多位的显示,是本模块实现的关键。 实验电路图如下: 三、源程序代码 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity corma is port( clr,sig,door:in std_logic; alm:out std_logic; m3,m2,m1,m0,dang_out:out std_logic_vector(3 downto 0) ); end entity; architecture behav of corma is signal q3,q2,q1,q0,dang:std_logic_vector(3 downto 0); begin process(sig,door) --主程序部分,实现对待测频率的测量 variable c0,c1,c2,c3,c4,c5,c6:std_logic_vector(3 downto 0); variable x:std_logic; begin if(rising_edge(sig))then if(door=1)then if c01001 then c0:=c0+1; else c0:=0000; if c11001 then c1:=c1+1; else c1:=0000; if c21001 then c2:=c2+1; else c2:=0000; if c31001 then c3:=c3+1; else c3:=0000; if c41001 then c4:=c4+1; else c4:=0000; if c51001 then c5:=c5+1; else c5:=0000; if c61001 then c6:=c6+1; else c6:=0000; alm=1; end if; end if; end if; end if; end if; end if; end if; else if clr=0 then alm=0; end if; c0:=0000;--Q低电平清零 c1:=0000; c2:=0000; c3:=0000; c4:=0000; c5:=0000; c6:=0000; end if; if c6/=0000 then q3=c

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档