EDA数字钟设计(论文).doc

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

数 字 钟 -- EDA课程设计 姓 名: 专 业: 班 级: 指导教师: 一、数字钟的设计要求 (1)具有正确的星期、时、分、秒计时功能。 (2)计时结果要用6个数码管分别显示时、分、秒的十位和个位。 (3)有校时功能。当键MINUTE按下时,分计数器以秒脉冲的速度递增,并按60min循环,即计数到59min后再回00。当HOUR键按下时,时计数器以秒脉冲的速度递增,并按24h循环,即计数到23h后再回00。当WEEK键按下时,星期计数器以秒脉冲速度递增,并按7天循环,即计数到日后再回到一。 数字钟顶层结构 根据数字钟的功能要求,就可以对数字钟按照功能进行模块划分。图-1是它的顶层电路原理图。 在图-1中,外界通过CLK端输入1Hz的脉冲信号。1Hz信号作为秒脉冲信号送入SECOND(60进制)计数器进行秒计时,满60s产生一个进位信号CARRY,经过或门被送入MINUTE(60进制)计数器进行分计数。当按下SECOND键后,1Hz秒脉冲信号通过或门被送入MINUTE(60进制)计数器进行分计数,从而实现快速校分功能。HOUR(24进制)计数器也是经过同样的过程实现计数和校时功能。 时、分、秒计数器的输出均是十位和个位分开显示的8421BCD码,将这六组BCD码通过一个六选一数据选择器MUX6_1SCAN选出一组BCD码。由外界输入的CLKCAN信号作为MUX6_1SCAN的选择控制信号,然后再将选出的一组BCD码送至七段译码显示器进行译码。译码每输出结果同时送至6个LED数码管的、、、、、个段,至于哪个数码管能够显示,取决于扫描控制信号SEL的输出结果,即SEL选择哪个数码管,那个数码管就点亮。 用多个(6个)数码管显示数据时有并行显示和动态扫描显示两种方式。所谓并行显示,是6个数码管同时被驱动,它需要同时对6组码数据进行编译,并输出组7段驱动信号去驱动6个数码管的7个显示段,共需要个管脚,另外还需要6个7段译码器。 本设计采用动态扫描显示,每次仅仅点亮1个数码管,各个数码管轮流被扫描点亮,如果扫描的速度足够快,由于人眼存在视觉暂留现象,就看不出闪烁。开始工作时,先从6组BCD数据中选出一组,通过7段译码器译码后输出,然后选出下一组数据译码输出。数据选择的时序和顺序由6个进制计数器控制,与此同时,MUX6_1SCAN产生选通信号。这种显示方式需要的资源少,而且节能。 模块WEEK和WEEKDISP为星期(7进制)计数模块和显示模块,当时间为23:59:59时,一个秒脉冲过来,使时间为00:00:00并产生一个星期进位信号,星期计数器驱动显示模块显示相应的信息。 数字钟各模块的VHDL源程序设计 以下是数字钟各模块的VHDL程序及部分主要模块的仿真波形。 秒计数器的源程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY second IS PORT(clk,reset:IN STD_LOGIC; sec1,sec2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); carry:OUT STD_LOGIC); END second; ARCHITECTURE rt1 OF second IS SIGNAL sec1_t,sec2_t:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(clk,reset) BEGIN IF reset=1 THEN sec1_t=0000; sec2_t=0000; ELSIF clkevent AND clk=1 THEN IF sec1_t=1001 THEN sec1_t=0000; IF sec2_t=0101 THEN sec2_t=0000; ELSE sec2_t=sec2_t+1; END IF; ELSE sec1_t=sec1_t+1; END IF; IF sec1_t=1001 AND sec2_t=010

文档评论(0)

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

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

1亿VIP精品文档

相关文档