- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数
电
课
程
设
计
系:.电子信息与计算机科学系 .
专业:. 自动化 .
班级:. 文自112-2班 .
姓名:. 桑*超 .
学号:. 2011905192** .
数字逻辑与数字系统课程设计——24小时制时钟
一、实验目的:
1了解多功能数字电子钟的工作原理。
2 学习数字系统设计中自顶向下的设计方法。
3加深利用EDA技术实现数字系统的体会。
实验结果基本要求:
1、能够正确的连线及下载。
2、能够完成以秒为最小及时单位的时钟设计。
3、时钟能够正常调整时、分、秒的时间。
扩展部分:
能够完成整点报时的功能。
能够完成预设闹钟的功能。
二、基本功能图:
正常的计时功能
正常的调时功能
正常的显示功能
扩展功能图:
※整点报时功能
※闹钟定时功能
3、整体上有几个模块
计时功能模块:
它是由两个60进制计数器和一个24进制计数器连接成的。构成了时钟正常的计时功能。当到达59秒钟的时候,当再来一个CP脉冲的时候,将自动进位,使分针上加一。分针也是一样。当时针到达23点59分59秒的时候,当再次来一个CP脉冲时候,又转化为0点0分0秒。
调时功能模块:
调分有效时,按动分钟调节键,分针加一;调时有效,按动小时调节键,时针加一。
整点报时与闹钟功能模块:
时间每走到一个整点,蜂鸣器发出响声;扩展部分可以按预定的时间让蜂鸣器鸣叫。在闹钟定时显示状态下,按下set键,进入闹钟的“时”设置状态,之后按下闹钟的‘k’键,进入闹钟的分设置状态,再按下‘k’键进入秒设置状态,再次按下‘k’键,又回到闹钟的定时显示状态。
三、各模块程序、符号图、仿真图
模块一:24进制
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity v_cnt24 is
port(clk,en,reset : in std_logic;
ql,qh : buffer std_logic_vector(3 downto 0);
co : out std_logic );
end v_cnt24 ;
architecture one of v_cnt24 is
begin
co=1 when(ql=0011and qh=0010and en=1) else 0 ;
process (clk,reset)
begin
if(reset=0)then
ql=0000;
qh=0000;
else
if(clkevent and clk=1 ) then
if( en=1)then
if(ql=0011and qh=0010) then
ql=0000;
qh=0000;
elsif(ql=1001) then
ql=0000;
qh=qh+1;
else
ql=ql+1;
end if;
end if;
end if;
end if ;
end process;
end one ;
模块二:60进制
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity v_cnt60 is
port(clk,reset,en : in std_logic;
ql,qh : buffer std_logic_vector(3 downto 0);
co : out std_logic );
end v_cnt60;
architecture one of v_cnt60 is
begin
co=1 when (ql=1001 and qh=0101 and en=1 ) else0;
process(clk,reset)
begin
if(reset=0) then
ql=0000;
qh=0000;
elsif (clkevent and clk=1)then
if(ql=1001and qh=0101)then
ql=0000;
qh=0000;
elsif(ql=1001)then
文档评论(0)