课程设计课程名称EDA技术课题名称电子时钟的设计专业电子技术班级学号姓名指导教师陈意军2012年6月23日湖南工程学院课程设计任务书课程名称:eda技术题目:多功能电子钟的设计专业班级:电子科学与技术学生姓名:指导老师:陈意军审批:任务书下达期2012年6月10日设计完成日期2012年6月23日设计内容与设计要求一.设计内容:1.设计并调试键盘扫描与数码管显示电路;2.键盘为3*4,数码管为7段8位;3.以数字形式显示键盘12个输入键的识别;4.外设置控制开关和防抖动电路;5.功能扩展(自选);完成加减运算或某外部硬件对象的控制二.设计要求:1.设计思路清晰,整体设计给出框图,提供顶层电路图;2.应用vhdl或verilog完成各次级模块设计,给出具体设计程序;3.完成设计仿真和程序下载;4.写出设计报告主要设计条件1.提供EDA实验室;2.提供EL实验箱和CPLD芯片3.提供ALTERA公司的quartusⅡ设计软件;说明书格式1.课程设计封面;2.任务书;3.说明书目录;4.设计总体思路;5.单元电路设计程序;6.设计仿真;7.编程下载;8.总结与体会;9.附录;10.参考文献进度安排月日~日课题电路设计。月日~日总体电路设计和子模块设计月日~日软件仿真和联线。月日~日电路调试月日写设计报告,打印相关图纸,月日答辩;参考文献目录一引言.......................................................................................1二设计目的及总体方框图.......................................................1三电子时钟功能.......................................................................1四电子时钟设计.......................................................................24.1设计思路..............................................................................24.2电子时钟各个模块的设计..................................................24.2.1秒计时器的设计...............................................................24.2.2分计时器的设计..............................................................44.2.3时计时器的设计..............................................................54.2.47段译码器的设计............................................................84.2.5整点报时器的设计..........................................................9五电子时钟顶层电路图.........................................................11六系统仿真波形.....................................................................11七硬件测试及引脚的锁定.....................................................12八设计心得与体会................................................................13一引言EDA技术在电子设计领域越来越普及,本设计主要利用VHDL语言在EDA平台上设计一个电子数字时钟,它的计时周期为24小时,显示的最大时间为23时59分59秒,另外还具有校时功能和整点报时功能。总的程序由5个模块组成,分别为秒计时器、分计时器、时计时器、7段显示译码器和整点报时器。二设计目的及总体方框图此次设计的主要目的是学会使用quartus软件,掌握用VHDL语言设计编写源程序,并要求下载到实验箱实现所实现电子时钟的各项功能。通过这次设计,让我们加深对理论知识的理解,培养理论联系实际的能力,提高分析问题和解决问题的能力总体方框图三电子时钟功能(1)计时功能:这是电子时钟的基本功能,每隔一秒钟计时一次,并在显示屏上显示当时时间。(2)校时功能:能设置实时时间作为数字钟的当前时间,具有小时、分钟、秒钟的校准时间功能。(3)整点报时功能:每逢整点,整点报时器自动报时。四电子时钟设计4.1设计思路该数字钟可以实现3个功能:计时功能、整点报时功能和重置时间功能,因此有3个子模块:计时、报时、重置时间。其中计时模块由3部分构成:秒计时器、分计时器和时计时器。秒计时器和分计时器都是由60进制的计数器构成的,具有清0、置数和计数功能。当清0信号为低电平时,计时器清0;当置数信号为高电平时,计时器置数;clk为脉冲信号,ci为输入信号。co为计时器的进位信号,作为下一级的输入信号。时计时器是由一个24进制的计数器构成的,具有清0、置数和计数功能。当清0信号为低电平时,计时器清0;当置数信号为高电平时,计时器置数;clk为脉冲信号,ci为输入信号。7段数码显示模块的功能是在显示屏上显示当时时间。1对应的显示代码为0110000,2对应的显示代码为1101101,3对应的显示代码为1111001,4对应的显示代码为0110011,5对应的显示代码为1011011,6对应的显示代码为1011111,7对应的显示代码为1110000,8对应的显示代码为1111111,9对应的显示代码为1111011,0对应的显示代码为1111110。报时模块的功能是当整点时,报时器输出高电平,并且持续1分钟。4.2电子时钟各模块的设计4.2.1秒计时器的设计(1)秒计时器源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitysecondisport(clk,ci,nreset,load:instd_logic;d:instd_logic_vector(7downto0);co:outstd_logic;qh:bufferstd_logic_vector(3downto0);ql:bufferstd_logic_vector(3downto0));endsecond;architecturebehaveofsecondisbeginco='1'when(qh=0101andql=1001andci='1')else'0';process(clk,nreset)beginif(nreset='0')thenqh=0000;ql=0000;elsif(clk'eventandclk='1')thenif(load='1')thenqh=d(7downto4);ql=d(3downto0);elsif(ci='1')thenif(ql=9)thenql=0000;if(qh=5)thenqh=0000;elseqh=qh+1;endif;elseql=ql+1;endif;endif;endif;endprocess;endbehave;(2)秒计时器仿真波形在秒计时器的(clk)输入一个周期为(2us)的时钟信号;清0端(nreset)前面一小段为低电平,后面均为高电平;置数端(load)中间一段为高电平,其余均为低电平;将(ci)端置高电平,秒重置端(d)置数值为56秒,进行仿真,产生如下波形:图1秒计时器仿真波形图由上述波形可以清楚的看到:当清0信号(reset)无效时,秒计时器置数,从50秒开始计数,到59秒时回到0,并且从ensec输出一个高电平。(3)秒计时器原理图图2秒计时器原理图4.2.2分计时器的设计(1)分计时器源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityminuteisport(clk,ci,nreset,load:instd_logic;d:instd_logic_vector(7downto0);co:outstd_logic;qh:bufferstd_logic_vector(3downto0);ql:bufferstd_logic_vector(3downto0));endminute;architecturebehaveofminuteisbeginco='1'when(qh=0101andql=1001andci='1')else'0';process(clk,nreset)beginif(nreset='0')thenqh=0000;ql=0000;elsif(clk'eventandclk='1')thenif(load='1')thenqh=d(7downto4);ql=d(3downto0);elsif(ci='1')thenif(ql=9)thenql=0000;if(qh=5)thenqh=0000;elseqh=qh+1;endif;elseql=ql+1;endif;endif;endif;endprocess;endbehave;(2)分计时器仿真波形在分计时器的(clk)输入一个周期为(2us)的时钟信号;清0端(nreset)前面一小段为低电平,后面均为高电平;置数端(load)中间一段为高电平,其余均为低电平;将(ci)端置高电平,分重置端(d)置数值为56分,进行仿真,产生如下波形:图3分计时器仿真波形图(3)分计时器原理图图4分计时器原理图4.2.3时计时器的设计(1)时计时器源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityhoursisport(clk,ci,nreset,load:instd_logic;d:instd_logic_vector(7downto0);qh:bufferstd_logic_vector(3downto0);ql:bufferstd_logic_vector(3downto0));endhours;architecturebehaveofhoursisbeginprocess(clk,nreset)beginif(nreset='0')thenqh=0000;ql=0000;elsif(clk'eventandclk='1')thenif(load='1')thenqh=d(7downto4);ql=d(3downto0);elsif(ci='1')thenif(qh=0010andql=0011)thenqh=0000;ql=0000;elsif(ql=9)thenql=0000;if(qh=2)thenqh=0000;elseqh=qh+1;endif;elseql=ql+1;endif;endif;endif;endprocess;endbehave;(2)时计时器仿真波形在时计时器的(clk)输入一个周期为(2us)的时钟信号;清0端(nreset)前面一小段为低电平,后面均为高电平;置数端(load)中间一段为高电平,其余均为低电平;将(ci)端置高电平,时重置端(d)置数值为21时,进行仿真,产生如下波形:图5时计时器仿真波形图(3)