当前位置:文档之家› EDA课设数字钟设计

EDA课设数字钟设计

课程设计报告课程名称数字系统与逻辑设计课题名称数字钟设计专业通信工程班级学号姓名指导教师乔汇东胡瑛谭小兰2013年7月7日湖南工程学院课程设计任务书课程名称数字系统与逻辑设计课题数字钟设计专业班级通信工程1101班学生姓名学号指导老师审批乔汇东任务书下达日期2013 年6月29日任务完成日期2013 年7月7日《数字系统与逻辑设计》课程设计任务书一、设计目的全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。

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

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

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

4、上机演示。

5、有详细的文档。

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

三、进度安排第十九周星期一:课题讲解,查阅资料星期二:总体设计,详细设计星期三:编程,上机调试、修改程序星期四:上机调试、完善程序星期五:答辩星期六-星期天:撰写课程设计报告附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。

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

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

目录1、课题的主要功能 (1)1.1 问题描述 (1)1.2 功能要求 (1)2、课题的功能模块的划分 (1)3、主要功能的实现 (2)3.1 秒定时器 (2)3.2 分定时器 (2)3.3 时定时器 (3)3.4 报时模块 (3)3.5 分频模块 (3)3.6 主计数器 (4)4、系统调试与仿真 (5)4.1 计数模块时序图 (5)4.2 整点报时时序图 (6)4.3 置数时序图 (6)4.4 引脚配置 (6)5、总结与体会 (7)6、附件 (8)7、评分表 (12)1、课题的主要功能1.1 问题描述多功能数字钟应该具有的功能有:显示时-分-秒、整点报时、小时和分钟可调等基本功能。

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

1.2 功能要求在一个1KHz系统时钟的驱动下完成整个电路的输出,电路要能正确的输出时、分、秒,并且根据用户的设定来改变时钟和分钟的值,这里假定有两个按键输入信号S1,S0,可以分别用来改变时钟和分钟的值以达到时间设定的目的。

同时在整点时分都应该输出一个整点报时信号,信号规律为1秒钟一个脉冲,持续5秒。

2、课题的功能模块的划分1.设计一个60进制的计数器构成的具有清0、置数和计数功能秒计时器。

2.设计一个60进制的计数器构成的具有清0、置数和计数功能分计时器。

3.设计一个24进制的计数器构成的具有清0、置数和计数功能时计时器。

4.报时模块是整点的前十秒的响五下停五下。

5.时钟分频模块使得1KHz的系统时钟分为1Hz的时钟。

6.置数模块是按下对应的按键分钟个位或小时的个位加一。

7.分别采用60进制、24进制、计数器构成秒、分、时计时器。

8.计时模块使用if嵌套语句实现整个计时模块的计时。

下面是功能实现的模块图:3、主要功能的实现3.1 秒定时器秒计时器是由一个60进制的计数器构成的,具有清0、置数和计数功能,在秒的个位从0计数到9时秒的十位开始计数加一,十位计数到5时清零。

3.2 分定时器分定时器和秒定时器相似,由一个60进制的计数器构成的,具有清0、置数和计数功能,在分的个位从0计数到9时分的十位开始计数加一,十位计数到5时清零。

3.3 时定时器时计时器则是由一个24进制的计数器构成的,同样具有清0、置数和计数功能。

其中的时钟信号由上级分计时器控制。

当计数到23时当分和秒为59且个位为3时清零,重新开始计时。

3.4 报时模块整点报时的功能,其工作的状态受到秒计数器所产生的进位信号控制着。

整点的前十秒的响五下停五下,即最后十秒中1,3,5,7,9秒信号alarm为高电平,2,4,6,8,0为低电平。

下面为VHDL代码:if(miao1="0101" and fen0="1001" and fen1="0101") thenif (miao0="0001" or miao0="0011" or miao0="0101" or miao0="0111" or miao0="1001") then speak<='1';Else speak<='0';end if; end if;3.5 分频模块使得频率为1KHz的系统分为1Hz的时钟信号clk,根据clk进行计时,下面为起分频作用的VHDL代码。

com:process(clk1) beginif clk1'EVENT AND clk1='1' THENif q<999 then q<=q+1;else q<=0;end if;if q<500 then clk<='1';else clk<='0';end if;end if;END PROCESS com;注:采用1000分频,且波形为50%的占空比。

3.6 主计数器主计数器采用多重if语句嵌套的方法进行秒,分,时的计时及之间的进位关系。

用VHDL语言描述如下:if miao0="1001" then miao0<="0000";if miao1="0101" then miao1<="0000";if fen0="1001" then fen0<="0000";if fen1="0101" then fen1<="0000";if shi0="1001" then shi0<="0000";shi1<=shi1+1;else shi0<=shi0+1;end if;if shi1="0010" AND shi0="0011"thenshi1<="0000";shi0<="0000";end if;else fen1<=fen1+1;end if;else fen0<=fen0+1;end if;else miao1<=miao1+1;end if;else miao0<=miao0+1;注:miao0和miao1表示秒计时器的个位和十位,fen0 和fen1表示分计时器的个位和十位,shi0和shi1时计数器的个位和十位。

在23时59分59秒时刻清零。

4、系统调试与仿真4.1 计数模块时序图图 4-1注:为了方便测试程序的准确性,计时是否准确所以加入了6个输出端口,分别为:hour1,hour0,min1,min0,sec1,sec0f分别表示时的十位和个位,分的十位和个位,秒的十位和个位。

从图4-1 的时序图中可以看出时间到达23时59分59秒时,在下一个时钟到来后各个位都被清零。

图4-2注:此时序图中可以看出在计时到1时59分59秒后,再来一个时钟沿,时间变为2时0分0秒。

4.2 整点报时时序图图4-3注:此时序图中的alarm为整点报时信号,在整点前的最后十秒内,1,3,5,7,9秒为高电平0,2,4,6,8为低电平。

4.3 置数时序图图4-4注:load1为分钟置数,load2为小时置数。

Load1为高电平时,每来一个时钟沿分的个位加1,load2为高电平时每来一个时钟沿时的个位加1.从图4-4中可以看出load1维持了8个高电平,load1拉低后min0直接从8开始计数;load2持续了三个高电平,拉低后hour0直接从3开始计数。

4.4 引脚配置图4-55、总结与体会为期一周的EDA课程设计结束了,通的过这次课程设计,我对EDA设计的知识有了更深一步的了解。

通过这次的课程设计,我熟悉了quartusII,数码管等,这为我以后的类似设计打了一定的基础。

开始拿到这个课题时感觉没有什么难的,实际操作起来才发现并不是想象的那么容易。

首先必须搞清楚时钟的运行方式,小时为24进制,分钟为60进制,秒为60进制。

通过这次课程设计,我觉得做任务不能眉毛胡子一把抓,要学会模块化实现,最后把所有模块整合起来,一步一步进行仿真,最后在到实验箱上实现。

通过这次实验我又掌握了一门软件操作,最重要的是通过这次实验我将原先学的好多东西整合到一块了,不过也得了一些经验:就是在做系统开始的时候先将系统的大体结构规划好,然后再做每一个小模块,对模块的中的每一个细节都要全面思考,将问题最好解决在小模块中;遇到问题,要顺藤摸瓜,分析清楚,不可胡乱改动,每做一次改变都要有充分的理由;模块化设计方法的优点在于其简洁性,但是在实验设计中也发现,在实验最终电路确定之前,要尽量减少模块重叠嵌套,因为在总的电路敲定之前,电路还不成熟,很多地方需要改进,如果在开始时就进行多层模块化,里层模块电路的修改将影响其外层的全部电路,这样就是牵一发动全身,很显然,这样将导致电路设计的低效,所以在设计过程中,一定要尽量减少超过两层的模块。

编程过程中在加入置数信号时出现了错误,应该把置数功能加在时钟的下面,否则程序机会报错。

报警信号编写时,应该注意哪里该写end,哪里该写or 。

时钟部分给的是1KHz的系统时钟,所以只有分频后的时钟才能用来计时。

数码管部分的程序很好写,但是这里更重要的是准确的实现,特别要注意引脚的配置要准确。

在这次实验中,我学会了如何使用Quartus II软件,如何分层设计电路,如何编写VHDL程序,如何对实验程序进行编译和仿真和对程序进行硬件测试。

相关主题