数字电路课程设计数字钟的设计与实现.docx

上传人:b****8 文档编号:10248197 上传时间:2023-02-09 格式:DOCX 页数:16 大小:32.23KB
下载 相关 举报
数字电路课程设计数字钟的设计与实现.docx_第1页
第1页 / 共16页
数字电路课程设计数字钟的设计与实现.docx_第2页
第2页 / 共16页
数字电路课程设计数字钟的设计与实现.docx_第3页
第3页 / 共16页
数字电路课程设计数字钟的设计与实现.docx_第4页
第4页 / 共16页
数字电路课程设计数字钟的设计与实现.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数字电路课程设计数字钟的设计与实现.docx

《数字电路课程设计数字钟的设计与实现.docx》由会员分享,可在线阅读,更多相关《数字电路课程设计数字钟的设计与实现.docx(16页珍藏版)》请在冰豆网上搜索。

数字电路课程设计数字钟的设计与实现.docx

数字电路课程设计数字钟的设计与实现

学号

 

数字电路课程设计

设计说明书

数字钟的设计与实现

起止日期:

2013年6月25日至2013年6月28日

 

学生姓名

班级

成绩

指导教师(签字)

 

计算机与信息工程学院

2013年6月28日

 

一、引言..........................................................2

二、实验要求........................................................2

三、实验目的........................................................2

四、实验内容.......................................................2

五、实验原理.......................................................2

六、实验连线.......................................................3

七、数字钟VHDL文本..............................................3

八、总结...........................................................11

 

一、引言

数字钟是采用数字电路实现对时、分、秒,数字显示的计时装置,广泛用于个人家庭,车站,码头、办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英振荡器的广泛应用,使得数字钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大地方便,而且大大地扩展了钟表原先的报时功能。

诸如定时自动报警、校时自动打铃、时间程序自动控制、定是广播、自动启闭路灯、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

因此,研究数字钟及扩大其应用有着非常现实的意义。

二、实验要求

1.具有时,分,秒,计数显示功能,以24小时循环计时。

2.具有清零,调节小时、分钟功能。

3.具有整点报时功能,整点报时的同时LED灯花样显示。

三、实验目的

1.掌握多位计数器相连的设计方法。

2.掌握十进制、六进制、二十四进制计数器的设计方法。

3.巩固多位共阴极扫描显示数码管的驱动及编码。

4.掌握扬声器的驱动。

5.LED灯的花样显示。

6.掌握CPLD技术的层次化设计方法。

四、实验内容

1.根据电路持点,可在教师指导下用层次设计概念,将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,让几个学生分做和调试其中之一,然后再将各模块合起来联试,以培养学生之间的合作精神,同时加深层次化设计概念。

2.了解软件的元件管理深层含义,以及模块元件之间的连接概念。

了解如何融合不同目录下的统一设计。

模块说明:

各种进制的计数及时钟控制模块(10进制、6进制、24进制);

扫描分时显示,译码模块;

彩灯,扬声器编码模块;

各模块都是由VHDL语言编写。

数字钟各模块连接示意图

五、实验原理

1.时钟计数:

秒——60进制BCD码计数;

分——60进制BCDD码计数;

时——24进制BCDD码计数;

整个计数器有清零,调分,调时功能,在接近整数时间能提供报时信号。

2.具有驱动8位八段共阴扫描数码管的片选驱动信号输出和八段字形译码输出,编码和扫描部分可参照前面实验。

3.扬声器在整点时有报时驱动信号产生。

4.LED灯在整点时有花样显示信号产生。

 

六、实验连线

◎输入接口:

1.代表清零,调时,调分信号RESET,SETHOUR,SETMIN的管脚分别已经连接按键开关。

2.代表计数时钟信号CLK和扫描时钟信号CKDSP的管脚分别已经同1HZ时钟源和32HZ(或更高)时钟源相连。

3.Reset键为低电平复位,已经接上。

◎输出接口:

1.代表扫描显示的驱动信号管脚SCAN2,SCAN1,SCAN0已经接到实验箱上的SCAN0~SCAN2,A…G接八位数码管显示模块的A~G。

2.代表花样LED灯显示的信号管脚LAMP0…LAMP2已经同3个LED灯相连。

代表到时LED灯闪烁提示的ENHOUR接LED灯。

SETHOUR、SETMIN分别对应CPU板上的PB0、PB1(有些CPU板对应的标识是SW1、SW2)

RESET对应CPU板上的RESET

CLKDSP对应CPU板上的50MHz固定晶振输入。

LAMP对应IO9-IO11。

CLK,对应IO3。

功能选择位M[3..0]状态为0010,左端8个数码管,低8位为7位段加小数点选取位,高8位为8个数码管com端选取,即如果要选取数码管0,则发送总线值为:

1111111011111111,如要选取数码管1,则发送总线值为:

1111110111111111,此时所选数码管7段和DP位将全部亮。

实验接线:

用导线连接IO3与ADJ_CLK,调整SW17-SW20,使输出频率为1Hz;

IO9-IO11接到L1-L3上;IO5接到蜂鸣器的BUZZER控制端口。

按下PB0、PB1(有些CPU板对应的标识是SW1、SW2)可以调整时钟,分钟。

 

七、数字钟VHDL文本

本设计全部采用VHDL文本描述,所有文本存放在同一个工作文件夹中。

可先录入底层文件,把某个底层文件设为当时的顶层,保存、编译、仿真、退出;再录入另一个底层文件;这样把所有底层文件一一录入;最后录入顶层文件,并保存、编译、仿真,再下载顶层文件到器件实现硬件功能。

7.1、顶层文本(clock_top.vhd)

libraryieee;

useieee.std_logic_1164.all;

entityclock_topis

port(clk,reset,setmin,sethour,clkdsp:

instd_logic;

speaker:

outstd_logic;

lamp:

outstd_logic_vector(2downto0);

sel:

outstd_logic_vector(2downto0);

a,b,c,d,e,f,g,dpout:

outstd_logic);

endclock_top;

architectureaofclock_topis

COMPONENTsecond

PORT(

clk,reset,setmin:

INSTD_LOGIC;

daout:

outstd_logic_vector(6downto0);

enmin:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTminute

PORT(

clk,clk1,reset,sethour:

INSTD_LOGIC;

enhour:

OUTSTD_LOGIC;

daout:

outstd_logic_vector(6downto0));

ENDCOMPONENT;

COMPONENThour

port(

clk,reset:

INSTD_LOGIC;

daout:

outstd_logic_vector(5downto0));

ENDCOMPONENT;

COMPONENTalert

PORT(

clk:

INSTD_LOGIC;

dain:

instd_logic_vector(6downto0);

lamp:

outstd_logic_vector(2downto0);

speak:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTseltime

PORT(

clk1,reset:

INSTD_LOGIC;

sec,min:

instd_logic_vector(6downto0);

hour:

instd_logic_vector(5downto0);

dp:

outstd_logic;

daout:

outstd_logic_vector(3downto0);

sel:

OUTSTD_LOGIC_vector(2downto0));

ENDCOMPONENT;COMPONENTdeled

PORT(

num:

INSTD_LOGIC_vector(3downto0);

led:

outstd_logic_vector(6downto0));

ENDCOMPONENT;

signalenmin_re,enhour_re:

std_logic;

signalsecond_daout,minute_daout:

std_logic_vector(6downto0);

signalhour_daout:

std_logic_vector(5downto0);

signalseltime_daout:

std_logic_vector(3downto0);

signalledout:

std_logic_vector(6downto0);

begin

a<=ledout(6);b<=ledout(5);c<=ledout(4);d<=ledout(3);

e<=ledout

(2);f<=ledout

(1);g<=ledout(0);

u1:

secondportmap(reset=>reset,

clk=>clk,

setmin=>setmin,

enmin=>enmin_re,

daout=>second_daout);

u2:

minuteportmap(clk=>enmin_re,

clk1=>clk,

reset=>reset,

sethour=>sethour,

enhour=>enhour_re,

daout=>minute_daout);

u3:

hourportmap(clk=>enhour_re,

reset=>reset,

daout=>hour_daout);

u4:

alertportmap(clk=>clk,

dain=>minute_daout,

speak=>speaker,

lamp=>lamp);

u5:

seltimeportmap(clk=>clkdsp,

reset=>reset,

sec=>second_daout,

min=>minute_daout,

hour=>hour_daout,

daout=>seltime_daout,

dp=>dpout,

sel=>sel);

u6:

deledportmap(num=>seltime_daout,

led=>ledout);

enda;

 

7.2、秒计数器(second.vhd)为底层文本

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYsecondIS

PORT(

clk,reset,setmin:

INSTD_LOGIC;

enmin:

OUTSTD_LOGIC;

daout:

outstd_logic_vector(6downto0));

ENDentitysecond;

ARCHITECTUREfunOFsecondIS

SIGNALcount:

STD_LOGIC_VECTOR(6downto0);

SIGNALenmin_1,enmin_2:

STD_LOGIC;

BEGIN

daout<=count;

enmin_2<=(enmin_1orenmin_2);

enmin<=(enmin_1orenmin_2);

process(clk,reset,setmin)

begin

if(reset='0')thencount<="0000000";

elsif(clk'eventandclk='1')then

if(count(3downto0)="1001")then

if(count<=16#60#)then

if(count="1011001")then

enmin_1<='1';count<="0000000";

else

count<=count+7;

endif;

else

count<="0000000";

endif;

elsif(count<16#60#)then

count<=count+1;

enmin_1<='1'after100ns;

else

count<="0000000";

endif;

endif;

endprocess;

ENDfun;

 

7.3分计数器(minute.vhd)为底层文本

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYminuteIS

PORT(

clk,clk1,reset,sethour:

INSTD_LOGIC;

enhour:

OUTSTD_LOGIC;

daout:

outstd_logic_vector(6downto0));

ENDentityminute;

ARCHITECTUREfunOFminuteIS

SIGNALcount:

STD_LOGIC_VECTOR(6downto0);

SIGNALenhour_1,enhour_2:

STD_LOGIC;

BEGIN

daout<=count;

enhour_2<=(sethourandclk1);

enhour<=(enhour_1andenhour_2);

process(clk,reset,sethour)

begin

if(reset='0')then

count<="0000000";

elsif(clk'eventandclk='1')then

if(count(3downto0)="1001")then

if(count<16#16#)then

if(count="1011001")then

enhour_1<='1';

count<="0000000";

ELSE

count<=count+7;

endif;

else

count<="0000000";

endif;

elsif(count<16#16#)then

count<=count+1;

enhour_1<='0'after100ns;

else

count<="0000000";

endif;

endif;

endprocess;

ENDfun;

7.4小时文本(hour.vhd)为底层文本

HOUR

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYhourIS

PORT(

clk,reset:

INSTD_LOGIC;

daout:

outstd_logic_vector(5downto0));

ENDentityhour;

ARCHITECTUREfunOFhourIS

SIGNALcount:

STD_LOGIC_VECTOR(5downto0);

BEGIN

daout<=count;

process(clk,reset)

begin

if(reset='0')then

count<="000000";

elsif(clk'eventandclk='1')then

if(count(3downto0)="1001")then

if(count<16#23#)then

count<=count+7;

else

count<="000000";

endif;

elsif(count<16#23#)then

count<=count+1;

else

count<="000000";

endif;

endif;

endprocess;

ENDfun;

 

7.5时间数据扫描分时选择模块文本(seltime.vhd)为底层文本

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

useieee.std_logic_arith.all;

ENTITYseltimeIS

PORT(

clk1,reset:

INSTD_LOGIC;

sec,min:

INSTD_LOGIC_VECTOR(6downto0);

hour:

instd_logic_vector(5downto0);

daout:

OUTSTD_LOGIC_vector(3downto0);

sel:

outstd_logic_vector(2downto0));

ENDseltime;

ARCHITECTUREfunOFseltimeIS

SIGNALcount:

STD_LOGIC_vector(2downto0);

BEGIN

sel<=count;

process(clk1,reset)

begin

if(reset='0')then

count<="000";

elsif(clk1'eventandclk1='1')then

if(count>="101")then

count<="000";

else

count<=count+1;

endif;

endif;

casecountis

when"000"=>daout<=sec(3downto0);

when"001"=>daout(3)<='0';

daout(2downto0)<=sec(6downto4);

when"010"=>daout<=min(3downto0);

when"011"=>daout(3)<='0';

daout(2downto0)<=min(6downto4);

when"100"=>daout<=hour(3downto0);

whenothers=>daout(3downto2)<="00";

daout(1downto0)<=hour(5downto4);

endcase;

endprocess;

endfun;

 

八、总结

在同学帮助下,我终于把数字钟做出来,能够成功地实现计数和校时校分的功能。

通过此次课程设计让我明白了理论是实践的基础,实践让自己更好地去掌握理论。

让我懂得了做事要有锲而不舍的精神,朝着自己的目标奋斗,坚持不懈,以后我要脚踏实地一步一个脚印的去学习理论与实践,多动手,多思考,多反思。

计算机与信息工程学院课程设计成绩单

课程名称:

指导教师:

姓名

性别

学号

班级

综合成绩

成绩等级

程序运行情况

(占总成绩20%)

□能正确运行□基本能正确运行□能运行但结果不完善

(20分)(15分)(10分)

程序功能的完善程度

(占总成绩10%)

□完善□基本完善□不完善

(10分)(8分)(5分)

程序结构的合理性

(占总成绩10%)

□合理□基本合理□不太合理

(10分)(8分)(5分)

对问题的答辩情况

(占总成绩40%)

□概念正确有创新□能正确回答所有问题□基本能正确回答

(40分)(35分)(30分)

□部分问题回答概念不清晰

(20分)

学生的工作态度与独立工作能力

(占总成绩10%)

□工作态度认真能独立完成任务□工作态度认真但独立性较差

(10分)(8分)

□工作态度基本认真但缺乏独立性

(5分)

设计报告的规范性

(占总成绩10%)

□符合规范□基本符合规范□规范性较差

(10分)(8分)(5分)

优秀:

90分~100分良好:

80分~89分中等:

70~79分及格:

60~69分不及格0分~59分

计算机与信息工程学院计算机与信息技术实验中心制表

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1