基于EDA的数字时钟设计EDA课程设计.docx
《基于EDA的数字时钟设计EDA课程设计.docx》由会员分享,可在线阅读,更多相关《基于EDA的数字时钟设计EDA课程设计.docx(14页珍藏版)》请在冰点文库上搜索。
基于EDA的数字时钟设计EDA课程设计
EDA课程设计报告书
课题名称
基于EDA的数字时钟设计
姓名
熊静平
学号
0812201-41
院系
物理与电信工程系
专业
电子信息工程
指导教师
周来秀讲师
2011年6月8日
一、设计任务及要求:
主要设计任务及要求如下:
1.数字显示当前的小时、分钟及秒钟;
2.可以预置为12小时计时显示或24小时计时显示;
3.时间修改功能:
能进行小时、分钟以及秒钟的修改;
4.闹铃功能:
能预置时间,并在相应时刻闹铃。
指导教师签名:
年月日
二、指导教师评语:
指导教师签名:
年月日
三、成绩
验收盖章
年月日
基于EDA的数字时钟设计
熊静平
(湖南城市学院物理与电信工程系电子信息工程专业,湖南益阳,41300)
1设计目的
1、学习复杂数字电路系统的设计。
2、运用VHDL设计一个多功能数字时钟。
2设计的主要内容和要求
1.数字显示当前的小时、分钟以及秒钟;
2.可以预置为12小时计时显示或24小时计时显示;
3.时间修改功能:
能进行小时、分钟以及秒钟的修改;
4.闹铃功能:
能预置时间,并在相应时刻闹铃。
3整体设计方案
该设计的基本设计方案:
电路由控制电路、两个60进制加法计数器、一个24进制加法计数器、译码器、显示器、闹铃电路组成。
计数器对秒、分、小时进行计时,当计时到23时59分59秒(选择24小时计时方式)或11时59分59秒(选择12小时计时方式)时,来一个计数脉冲,则计数器清零,重新开始计时。
译码器将计数器输出的BCD码计时结果转换成十进制送到显示器,显示器显示时、分、秒计时结果。
当时间达到预置的闹铃时间时,输出高电平实现闹铃。
总体设计框图如图3.1所示。
图3.1总体方案设计框图
4软件电路的设计
4.1秒计时电路设计
本设计是采用VHDL语言来设计硬件电路,首先完成秒钟的计时程序,亦即完成一个60进制计时器的设计,源程序代码如下:
--秒钟的计时程序
LIBRARYieee;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_unsigned.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
ENTITYsecondIS--实体,定义输入和输出端口
PORT(clk1,rst1:
instd_logic;
cout1:
outstd_logic;
cq0:
outstd_logic_vector(3downto0);
cq1:
outstd_logic_vector(3downto0));
ENDsecond;
ARCHITECTUREbehaveofsecondis--结构体
SIGNALd:
std_logic_vector(3downto0);--定义信号d、g,作为中转量供进程使用SIGNALg:
std_logic_vector(3downto0);
BEGIN
process(clk1,rst1,d,g)--进程开始
BEGIN
if(rst1='1')then--当复位rst1=1时,秒计时复位
d<="0000";
g<="0000";
elsif(clk1'EVENTandclk1='1')then--时钟的上升沿有效
if(d=9andg=5)then--当d=9且g=5时产生进位
cout1<='1';
else
cout1<='0';
endif;
if(d=9)then--d=9则把d清零
d<="0000";
if(g=5)then
g<="0000";--在d=9的情况下,若g=5,将g清零,否则加1
else
g<=g+1;
endif;
else
d<=d+1;--d小于9时,d+1
endif;
endif;
endprocess;
cq0<=d;cq1<=g;--将信号d和g分别赋给输出的cq0和cq1
endbehave;
clk1是时钟输入信号,rst1是秒钟复位信号,cout1作为下一模块分钟计时的时钟信号,cq0,cq1为输出信号最后,接在动态译码管芯片上,编译完成后生成秒计时器的硬件电路,如图4.1中second部分所示。
此外在时钟输入端加入一个调秒(tiaomiao)信号,与clk1一起采用或门输入,用以实现调秒功能。
完整的秒计时电路如图4.1所示。
图4.1秒计时电路
4.2分计时电路设计
和秒计时电路相比较,分秒计时器都是60进制的计数器,所以只需在秒计时电路下级串联一个秒计时器即可完成分计时电路的设计。
设计电路如图4.2所示。
图4.2分计时电路
上一级秒计时电路产生的cout1与调分(tiaofen)输入信号采用或门输入作为此分时钟设计电路的clk1时钟信号,rst1是复位信号,输出的cout1作为下一模块小时计时的时钟信号,cq0,cq1输出信号最后接在动态译码管芯片上。
得出实验要求的分计时器,如图4.2所示:
4.3小时计时电路设计
系统要求实现12小时,24小时切换计时,即12进制计数和24进制计数之间的切换,采用一个按键输入信号可控制计数进制的选择,源程序代码如下:
--小时计时程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
USEIEEE.STD_LOGIC_ARITH.ALL;
entityhourIS--实体,定义输入和输出
port(clk3,rst3,m:
instd_logic;
cq4:
outstd_logic_vector(3downto0);
cq5:
outstd_logic_vector(3downto0));
ENDhour;
ARCHITECTUREbehaveofhouris
SIGNALd:
std_logic_vector(3downto0);--定义信号d、g,作为中转量
SIGNALg:
std_logic_vector(3downto0);
BEGIN
process(clk3,rst3,m,d,g)
BEGIN
if(rst3='1')then--时钟的复位,rst3=1,则复位
d<="0000";
g<="0000";
elsif(clk3'EVENTandclk3='1')then--时钟clk3的上升沿有效
if(m='0')then--m=0,采取12进制计时
if(d=9or(d=1andg=1))then
d<="0000";
if(g=1)then
g<="0000";
else
g<=g+1;
endif;
else
d<=d+1;
endif;
else--若m不等于0,则采用24进制计时
if(d=9or(d=3andg=2))then
d<="0000";
if(g=2)then
g<="0000";
else
g<=g+1;
endif;
else
d<=d+1;
endif;
endif;
endif;
endprocess;
cq4<=d;cq5<=g;--将信号d和g分别赋给输出的cq4和cq5
endbehave;
当输入信号m=0时,进行12进制计数;当m=1时,进行24进制计数。
从分钟计时输出的进位(cout)信号,与调时(tiaoshi)信号采用或门一起输入作为此小时计时电路的clk3时钟信号,rst3是复位信号,cq4,cq5输出信号最后接在动态译码管芯片上。
得出实验要求的小时计时器,如图4-3所示。
图4.3小时计时电路
4.4译码显示以及闹铃电路设计
从各计时电路输出的时钟信号需要进行译码后才能在数码管上动态显示,且当时输入的时钟信号达到某一设定值时要能进行闹铃,设计程序如下:
--译码以及闹铃程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
ENTITYyimaIS--实体,定义输入和输出
PORT(CLK:
INSTD_LOGIC;
RESET:
INSTD_LOGIC;
SEC1:
INSTD_LOGIC_VECTOR(3DOWNTO0);--秒输入
SEC2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
MIN1:
INSTD_LOGIC_VECTOR(3DOWNTO0);--分输入
MIN2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
HOUR1:
INSTD_LOGIC_VECTOR(3DOWNTO0);--时输入
HOUR2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
set_hour1:
INSTD_LOGIC_VECTOR(3DOWNTO0);--闹铃时间输入
set_hour2:
INSTD_LOGIC_VECTOR(1DOWNTO0);
set_min1:
INSTD_LOGIC_VECTOR(3DOWNTO0);
set_min2:
INSTD_LOGIC_VECTOR(2DOWNTO0);
CLOCK:
OUTSTD_LOGIC;
miao1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);--时钟信号输出显示
miao2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
fen1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
fen2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
shi1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
shi2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDyima;
ARCHITECTUREARTOFyimaIS--结构体
BEGIN
PROCESS(set_hour1,set_hour2,set_min1,set_min2,CLK,RESET)
BEGIN--进程开始
IF(RESET='1')THEN--复位显示0
miao1<="0000";
miao2<="0000";
fen1<="0000";
fen2<="0000";
shi1<="0000";
shi2<="0000";
ELSIF(CLK'EVENTANDCLK='1')THEN
IF((set_hour2(1DOWNTO0)=HOUR2(3DOWNTO0))and(set_hour1(3DOWNTO0)=HOUR1(3DOWNTO0))and(set_min1(3DOWNTO0)=MIN1(3downto0))and(set_min2(2DOWNTO0)=MIN2(3DOWNTO0)))then
CLOCK<='1';--到闹铃时间则拉高CLOCK进行闹铃
ELSECLOCK<='0';
ENDIF;
miao1<=SEC1(3DOWNTO0);--译码显示
miao2<=SEC2(3DOWNTO0);
fen1<=MIN1(3DOWNTO0);
fen2<=MIN2(3DOWNTO0);
shi1<=HOUR1(3DOWNTO0);
shi2<=HOUR2(3DOWNTO0);
ENDIF;
ENDPROCESS;
ENDART;
CLK为译码器时钟输入信号,RESET为复位信号,SEC1、SEC2、MIN1、MIN2、HOUR1、HOUR2为时钟输入信号,set_hour1、set_hour2、set_min1、setmin2为闹铃时间的预置输入,CLOCK为闹铃输出信号,miao1、miao2、fen1、fen2、shi1、shi2为译码时钟输出信号。
其电路图如图4.4所示。
图4.4译码显示以及闹铃电路
5总体电路设计
5.1电路设计
多功能数字时钟的总体电路如图5.1所示,主要由两个60进制的计数器,一个24进制的计数器,数码管译码器以及闹铃电路构成,。
图5.1数字时钟的总体电路
5.2功能及使用说明
(1)计时功能:
首先通过时钟脉冲clk1产生一个信号来实现秒钟的计时功能,当秒钟计数到59后,下一个时钟秒钟清零,并产生一个分钟进位信号送到分钟计数器;同理,当分钟计数到59后,下一个计数时钟信号会让分钟清零,同时产生一个小时进位信号,送到小时计数器。
当小时计数器计数到24或12(由输入信号m控制)时,完成一个周期,全部跳转到零并重新开始计数。
译码输出后由6个数码管来显示时钟信号。
(2)使用控制说明:
①时间周期选择功能,通过m来控制12进制或24进制时钟显示;
②秒钟、分钟以及小时都有复位键,相应为rst1,rst2,rst3;
③秒钟、分钟以及小时都有调节功能,相应为tiaomiao、tiaofen、tiaoshi;
④具有闹铃功能,通过set_hour1、set_hour2、set_min1、set_min2来设置闹铃时间,当时钟时间与闹铃时间吻合时,由CLOCK输出高电平实现闹铃。
6系统仿真
6.1时钟显示以及复位和调时功能的仿真
仿真图如图6.1所示,当clk1为高电平且复位信号为0时秒钟加1,采用与clk1的反相时钟信号CLK作为动态译码显示时钟,使时钟信号能及时准确的显示出来。
如图中所示调分和调时信号拉高后时间从01秒变位01时01分02秒,当复位信号rst1、rst2、rst3被拉高后时钟显示全部为0,再重新计时显示。
图6.1时钟显示以及复位和调时功能的仿真
6.2闹铃功能仿真
如图6.2所示,设定闹铃的时间为1时11分,当时间时钟时间达到该值时,CLOCK信号立即变位高电平,说明闹铃开启正常。
图6.2闹铃功能仿真图
7设计总结
这次EDA的课程设计让我学到了很多思路与方法,对EDA有了更加深刻的认识与兴趣:
1、学会复杂数字电路系统的设计:
对一般复杂的电路系统可以采用分模
块的设计形式,这样可以使设计简单明了;
2、学会了60进制和24进制的计时器设计;
3、学会了8位数据输入4位数据输出译码器的程序设计。
参考文献
[1]江国强.《EDA技术与应用》[M].北京:
电子工业出版社,2010:
36-51.
[2]胡立涛.《EWB电子仿真实验指导书》[M].海口:
南海出版公司,2006:
61-78.
[3]朱运利.《EDA技术应用》[M].北京:
电子工业出版社,2004:
41-63.
[4]郭勇.《EDA技术》[M].北京:
高等教育出版社,2004:
73-89.
[5]唐治德.《数字电子技术》[M].北京:
科学出版社,2010:
56-67.