试验三EDA技术设计性试验-数字钟的设计.PDF

试验三EDA技术设计性试验-数字钟的设计.PDF

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

15 电本 3151004147 林培欢 实验三 EDA 技术设计性实验-数字钟的设计 本次的实验是设计一个数字钟,时钟具有时,分,秒计数显示功能,并且能够调 节小时、分钟。时钟以24小时循环计时,能够整点报时。 实验设计流程:将时钟分为秒、分、时、警报显示四个模块,分别设计他们的顶 层文件,最后建立原理图文件工程和仿真。 一、秒计时模块的代码: LIBRARYIEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY secondIS PORT(clk,reset,setmin:STD_LOGIC; enmin:OUT STD_LOGIC; daout:OUT STD_LOGIC_VECTOR(6DOWNTO0)); END ENTITY second; ARCHITECTURE fun OF secondIS SIGNALcount:STD_LOGIC_VECTOR(6DOWNTO0); SIGNALenmin_1,enmin_2:STD_LOGIC; BEGIN daout count; enmin_2 (setmin andclk); enmin (enmin_1or enmin_2); PROCESS(clk,reset,setmin) BEGIN IF(reset 0)THEN count 0000000;--若reset 为0,则异步清零 ELSIF(clk event andclk 1)then --否则,若clk 上升沿到 IF(count(3downto0) 1001)then --若个位计时恰好到1001即9 IF(count16#60#)then --又若count 小于16#60#,即60H IF(count 1011001)then --又若已到59D enmin_1 1;count 0000000;--则置进位为1及count 复0 ELSE --未到59D count count+7;--则加7,而+7 +1+6,即作加6校正 END IF; ELSE --若count 不小于16#60# (即count 等于或大于16#60#) count 0000000;--count 复0 END IF;--END IF (count16#60#) ELSIF(count16#60#)then --若个位计数未到1001则转此句再判 count count+1;--若count16#60#则count 加1 enmin_1 0after 100ns;--没有发生进位 ELSE --否则,若count 不小于16#60# count 0000000;--则count 复0 END IF;--END IF (count (3DOWNTO0) 1001) END IF;--END IF (reset 0) END PROCESS; END fun; 秒计时模块的顶层文件: 设计思路:在上次实验的0 到59轮换显示的基础上进行改进,满足满59清零并且分计数器 进一。给定两个信号,enmin_1,enmin_2。其中,enmin_1为59秒时的进位信号,满足59 秒后就完成进位的工作,而enmin_2 是Setmin 与clk 共同决定的,且setmin 在clk 为高电平 时有效,实现时间调整的功能。Setmin 为手动调分控制信号,enmin 为向分进位信号。16#60# 表示的是16进制的60,当count 小于60 的时候count 加1,当count 到59 时候,完成进位 并且清零的工作。由于使用的是8421BCD 码,所以低四位向高四位进位时,需要进行加6 校正。 二、分计时模块代码: LIBRARYIEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYminuteIS PORT(clk,clk1,reset,sethour:IN STD_LOGIC; enhour:OUT STD_LOGIC; daout:OUT STD_LOGIC_VECTOR(6DOWNTO0)); END ENTITYminute; ARCHITECTURE fun OFminuteIS SIGNALcount :STD_LOGIC_VECTOR (6DOWNTO0); SIGNALenhour_1,enhour_2:STD_LOGIC;--enmin_1为59 分时的进位信号

文档评论(0)

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

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

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档