(EDA)基于FPGA的数字电子时钟设计-VHDL说明书.doc

(EDA)基于FPGA的数字电子时钟设计-VHDL说明书.doc

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目 录 数字系统课程设计 1 一、题目要求 1 1、功能 1 2、工作介绍 1 二、设计方案 1 三、模块实现及代码 1 1、分频模块 1 2、响铃模块 4 3、数码管显示模块 8 4、流水灯显示模块 11 5、主控模块 12 6、消抖模块: 28 四、仿真分析 32 五、实物展示 34 六、实验总结和感想 36 1、实验错误排查和解决 37 2、 实验感想 37 一、题目要求 本次设计的是three star watch,它所具有的功能和具体的工作介绍如下: 1、功能 1)具有显示年、月、日、时、分、秒的功能,能准确显示时间 2)能够手动设置时间、闹钟。 3)具有闹钟功能,可以设置闹钟的时间,然后再实际时间与设定时间相等是闹钟响,并有闹钟开关,可控制其是否响,闹钟响时伴有流水灯效果。 4)具有秒表功能,可以累计计时 2、工作介绍 此电子时钟开机后即会进入原始状态(全0),按下s3即会显示初始时间,按下s5一次即会显示时分,再按下s5即会显示秒,再按下s5即会显示闹钟,再按下s5即会显示秒表。 设置秒表:进入秒表界面之后,按下s4后,秒表开始计数,再按下s4后,秒表停止计数。再按下s4,秒表复位。 设置日期、时间:在相应的显示界面,按下s4后,前两位数码管会跳动,此时为可设置状态,按下s5可调整时间,再按下s4,后两位跳动,此时按下s5进行调整,再按下s4即可确定。 设置闹钟:进入闹钟界面后,调整方法跟设置时间的方法一样。打开拨盘开关s1,d3灯亮表示闹钟处于开启状态。到达指定时间之后,闹钟响,流水灯跳动。关闭拨盘开关s1,d3灯灭表示闹钟处于关闭状态。 二、设计方案 设计一个电子手表,必然要用到计时器,而需要设置时间和闹钟,又需要控制器来控制系统所处的状态。我们采用外部一个按键来切换系统的状态,用另一个按键来调整时间和启动秒表,再有一个按键来确认操作,并返回显示状态,继续等待命令。在控制器中,需要接受外部信号,并给出信号给计时器,使其做出相应的动作。 三、模块实现及代码 本设计主要分成分频模块,响铃模块,数码管显示模块,流水灯显示模块,主控模块和消抖模块。各个模块的分析和代码如下: 1、分频模块 此模块主要通过连接外部50MHz时钟信号来控制计数频率,使其产生不同频率的信号,用来进行显示时间和日期。只要检测时钟上升沿到来,计数器就加1,直至计到相应的数字,又从0开始计时。 代码如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; --Frequency Divide entity clkdiv is port( clk_50MHz:in std_logic; clk_2KHz:out std_logic; clk_100Hz:out std_logic; clk_1Hz:out std_logic; clk_4Hz:out std_logic_vector(7 downto 0); clk_4Hz2:out std_logic; clk_xHz:out std_logic ); end clkdiv; architecture behav of clkdiv is begin process(clk_50MHz) VARIABLE time_flag: integer RANGE 0 TO 500000; --100HZ VARIABLE time_flag1: integer RANGE 0 TO --1HZ VARIABLE time_flag2:integer RANGE 0 TO 25000; --2KHZ VARIABLE time_flag3: integer RANGE 0 TO --4HZ VARIABLE time_flag4: integer RANGE 0 TO 5000000; --10HZ begin if(rising_edge(clk_50MHz) )then time_flag:=time_flag+1; time_flag1:=time_flag1+1; time_flag2:=time_flag2+1; time_flag3:=time_flag3+1;

文档评论(0)

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

1亿VIP精品文档

相关文档