数字钟设计EDA.docx

上传人:b****3 文档编号:1059774 上传时间:2022-10-16 格式:DOCX 页数:19 大小:75.97KB
下载 相关 举报
数字钟设计EDA.docx_第1页
第1页 / 共19页
数字钟设计EDA.docx_第2页
第2页 / 共19页
数字钟设计EDA.docx_第3页
第3页 / 共19页
数字钟设计EDA.docx_第4页
第4页 / 共19页
数字钟设计EDA.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数字钟设计EDA.docx

《数字钟设计EDA.docx》由会员分享,可在线阅读,更多相关《数字钟设计EDA.docx(19页珍藏版)》请在冰豆网上搜索。

数字钟设计EDA.docx

数字钟设计EDA

课程设计报告

课程名称数字系统与逻辑设计

课题名称数字钟的设计

专业通信工程

班级通信工程1001班

学号201003040126

姓名唐群

指导教师乔汇东胡瑛

2012年7月2日

湖南工程学院

课程设计任务书

 

课程名称数字系统与逻辑设计

课题数字钟的设计

 

专业班级通信工程1001班

学生姓名唐群

学号201003040126

指导老师乔汇东胡瑛

审批乔汇东

 

任务书下达日期2012年6月23日

任务完成日期2012年7月2日

《数字系统与逻辑设计》课程设计任务书

一、设计目的

全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。

二、设计要求

1、设计正确,方案合理。

2、程序精炼,结构清晰。

3、设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。

4、上机演示。

5、有详细的文档。

文档中包括设计思路、设计仿真程序、仿真结果及相应的分析与结论。

三、进度安排

第二十周星期一:

课题讲解,查阅资料

 星期二:

总体设计,详细设计

星期三:

编程,上机调试、修改程序

星期四:

上机调试、完善程序

星期五:

答辩

星期六-星期天:

撰写课程设计报告

附:

课程设计报告装订顺序:

封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。

正文的格式:

一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。

正文的内容:

一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现;四、系统调试与仿真;五、总结与体会;六、附件(所有程序的原代码,要求对程序写出必要的注释);七、评分表。

1、数字钟系统的设计2

1.1数字钟系统的设计2

1.2基本设计思想2

2、数字钟系统的实现2

2.1数字钟的基本组成2

2.2系统的总体框图3

2.3系统各功能模块的实现3

2.3.1计数模块3

2.3.2、整点报时模块的实现4

2.3.3显示模块5

3系统的调试与仿真7

4心得与总结8

5源程序8

5评分表15

 

一、数字钟系统的设计

1.1数字钟系统的设计

在QuartusII平台上设计一个多功能数字钟,设计基本要求:

显示时-分-秒、整点报时、小时和分钟可调等基本功能。

首先要知道钟表的工作机理,整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,但是需要注意的是,小时的范围是从0~23时。

1.2基本设计思想

本次课设任务是设计一个多功能数字钟,包括多个模块,设计基本思路:

首先,设计显示格式为小时-分钟-秒钟的模块,整点报时,报时时间为5秒,即从整点前5秒钟开始进行报时提示,LED开始闪烁,过整点后,停止闪烁。

其次,调整时间的的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调整分钟,每按下一次,分钟增加一分钟。

另外用S8按键作为系统时钟复位,复位后全部显示00-00-00。

2、数字钟系统的实现

2.1数字钟的基本组成

本数字钟的实现可分为以下几个模块:

(1)秒计数模块:

秒计数,在频率为1Hz的时钟下以60次为循环计数,并产生进位信号影响分计数; 

(2)分计数模块:

分计数,在秒进位信号为高电平时,计数一次,同样以60次为一个循环计数,同时产生分进位信号影响时计数;

(3) 时计数模块:

时计数,在分进位信号为高电平时,计数一次,以24/12次为一个循环计数;

(4) 时间显示模块:

数码管通过动态显示,同时进行一定频率的扫描显示时,分,秒。

(5) 时间设置模块:

设置调试使能端,可以调时,分,秒。

基本功能是在使能端为高电平时,可以使时和、分和秒循环计数;

(6) 整点报时模块:

在秒计数到55秒时,同时分计数到59分开始,持续5秒。

2.2系统的总体框图

校时电路

秒计数器

分计数器

分译码器

秒译码器

分显示器

秒显示器

时译码器

时计数器

时显示器

报时

1HZ

振荡器

分频器

图1数字钟的系统框图

 

2.3系统各功能模块的实现

2.3.1计数模块

计数部分由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计数。

其VHDL源程序相差不大由于篇幅有限,这里我们以分计数的实现为例。

程序如下:

-----------------------------------------------分钟十位

m110:

process(clk,min2,sec1,sec2,md1,md2)

begin

ifclk'eventandclk='1'then

if(min1="0101"andmin2="1001")and(sec1="0101"andsec2="1001")then

min1<="0000";

elsifmin1="0101"andmin2="1001"and(md1='0'andmd2="00")then

min1<="0000";

elsif(min2="1001"and(sec1="0101"andsec2="1001"))or(min2="1001"andmd1='0'andmd2="00")then

min1<=min1+1;

endif;

endif;--endif;

endprocessm110;

----------------------------------------------分钟个位

m220:

process(clk,sec1,sec2,md1,md2)

begin

ifclk'eventandclk='1'then

ifmin2="1001"and(sec1="0101"andsec2="1001")then

min2<="0000";

elsifmin2="1001"and(md1='0'andmd2="00")then

min2<="0000";

elseif(sec1="0101"andsec2="1001")or(md1='0'andmd2="00")then

min2<=min2+1;

endif;

endif;endif;

endprocessm220;

2.3.2、整点报时模块的实现

整点报时持续5秒,进入整点前从55秒开始一直到到59秒报点。

程序如下:

e:

process(second1,second2,minute1,minute2)

begin

ifsecond1=9andsecond2=5andminute1=9andminute2=5then

alarm<='1';

elsealarm<='0';

endif;

endprocesse;

2.3.3显示模块

计时显示电路的作用是将计时值在LED数码管上显示出来。

计时电路产生的值经过BCD七段译码后,驱动LED数码管。

计时显示电路的实现方案采用扫描显示。

disp:

process(sel,md1,hou1,hou2,min1,min2,sec1,sec2,seth1,seth2,setm1,setm2)

begin

ifsel="000"then

selout<="000";

caseh1is

when"0000"=>dout<="0111111";

when"0001"=>dout<="0000110";

when"0010"=>dout<="1011011";

whenothers=>dout<="1000000";

endcase;

elsifsel="001"then

selout<="001";

caseh2is

when"0000"=>dout<="0111111";

when"0001"=>dout<="0000110";

when"0010"=>dout<="1011011";

when"0011"=>dout<="1001111";

when"0100"=>dout<="1100110";

when"0101"=>dout<="1101101";

when"0110"=>dout<="1111101";

when"0111"=>dout<="0000111";

when"1000"=>dout<="1111111";

when"1001"=>dout<="1101111";

whenothers=>dout<="1000000";

endcase;

elsifsel="010"then

selout<="010";

casem1is

when"0000"=>dout<="0111111";

when"0001"=>dout<="0000110";

when"0010"=>dout<="1011011";

when"0011"=>dout<="1001111";

when"0100"=>dout<="1100110";

when"0101"=>dout<="1101101";

whenothers=>dout<="1000000";

endcase;

elsifsel="011"then

selout<="011";

casem2is

when"0000"=>dout<="0111111";

when"0001"=>dout<="0000110";

when"0010"=>dout<="1011011";

when"0011"=>dout<="1001111";

when"0100"=>dout<="1100110";

when"0101"=>dout<="1101101";

when"0110"=>dout<="1111101";

when"0111"=>dout<="0000111";

when"1000"=>dout<="1111111";

when"1001"=>dout<="1101111";

whenothers=>dout<="1000000";

endcase;

elsifsel="100"then

selout<="100";

cases1is

when"0000"=>dout<="0111111";

when"0001"=>dout<="0000110";

when"0010"=>dout<="1011011";

when"0011"=>dout<="1001111";

when"0100"=>dout<="1100110";

when"0101"=>dout<="1101101";

whenothers=>dout<="1000000";

endcase;

elsifsel="101"then

selout

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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