北华航天工业学院《EDA技术综合设计》课程设计报告报告题目:数字钟作者所在系部:电子工程系作者所在专业:自动化专业作者所在班级:作者姓名:指导教师姓名:完成时间:2010—12—03内容摘要VHDL是VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage的缩写,意思是超高速集成电路硬件描述语言。对于复杂的数字系统的设计,它有独特的作用。它的硬件描述能力强,能轻易的描述出硬件的结构和功能。这种语言的应用至少意味着两种重大的改变:电路的设计竟然可以通过文字描述的方式完成;电子电路可以当作文件一样来存储。随着现代技术的发展,这种语言的效益与作用日益明显,每年均能够以超过30%的速度快速成长。这次毕业设计的内容是在简要介绍了VHDL语言的一些基本语法和概念后,进一步应用VHDL,在MAX+plusII的环境下设计一个数字钟,最后通过仿真出时序图实现预定功能。数字钟的时间显示用到了七段数码管(或称七段显示器)的电路设计,内部的时间控制输出则用到了各种设计,包括:加法计数器,扫描电路,控制秒、分、时的分频电路,各种数制的转换。关键词:VHDL,数字钟,MAX+plusII,时序仿真图。目录一、实验目的……………………………………………………………………………1二、硬件要求……………………………………………………………………………1三、实验原理……………………………………………………………………………1四、模块说明……………………………………………………………………………11.秒计数器………………………………………………………………………………12.分计数器………………………………………………………………………………23.小时计数器……………………………………………………………………………34.报警模块………………………………………………………………………………45.扫描模块………………………………………………………………………………56.译码模块………………………………………………………………………………67.顶层文件………………………………………………………………………………8五、整体连接图…………………………………………………………………………9六、实验步骤……………………………………………………………………………10七、实验结果……………………………………………………………………………10八、实验总结……………………………………………………………………………10九、参考文献……………………………………………………………………………10课程设计任务书课题名称数字钟完成时间2010-12-03指导教师职称学生姓名班级总体设计要求和技术要点利用VHDL进行数字钟设计,主要完成以下功能:1.具有时、分、秒计数显示功能,以24小时循环计时。2.具有清零,调节小时、分钟功能。3.具有整点报时功能,整点报时的同时LED灯花样显示。工作内容及时间进度安排周5:硬件仿真周6:验收答辩课程设计成果1.与设计内容对应的软件程序2.课程设计报告书3.成果使用说明书4.设计工作量要求一、实验目的(1)掌握多位计数器相连的设计方法。(2)掌握十进制、六进制、二十四进制计数器的设计方法。(3)巩固多位共阴极扫描显示数码管的驱动及编码。(4)掌握扬声器的驱动。(5)LED灯的花样显示。(6)掌握EDA技术的层次化设计方法。二、硬件要求(1)主芯片EPF10K10LC84-4。(2)8个LED灯。(3)蜂鸣器。(4)8位八段扫描共阴极数码显示管。(5)三个按键开关(清零,调小时,调分钟)。三、实验原理在同一芯片EPF10K10上集成了如下电路模块:(1)时钟计数:秒——60进制BCD码计数;分——60进制BCD码计数;时——24进制BCD码计数;同时整个计数器有清零,调分,调时功能。在接近整数时间能提供报时信号。(2)具有驱动8位八段共阴扫描数码管的片选驱动信号输出和八段字形译码输出。(3)蜂鸣器在整点时有报时驱动信号产生。(4)LED灯在整点时有花样显示信号产生。四、模块说明时钟的设计共化分为6个模块:秒计数器(count60),分计数器(count601),小时计数器(count24),报警电路(bs),扫描电路(set),译码电路(led7)。下面具体分析各个模块的原理、内容和功能。1.秒计数器(count60)能够实现60进制循环计数,带有复位端reset、手动调分功能端setmin和向分进位端c,受时钟上升沿信号控制,其文本语言(文件名:count60.vhd)为底层文本,图1为秒计数器的仿真波形图。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCOUNT60ISPORT(CLK,RESET,SETMIN:INSTD_LOGIC;SEC0,SEC1:OUTSTD_LOGIC_VECTOR(3DOWNTO0);C:OUTSTD_LOGIC);1ENDCOUNT60;ARCHITECTUREONEOFCOUNT60ISSIGNALSEC0_T,SEC1_T:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALE_1,E_2:STD_LOGIC;BEGINSEC0=SEC0_T;SEC1=SEC1_T;E_2=(NOTSETMINandCLK);C=(E_1orE_2);PROCESS(CLK,RESET,SETMIN)BEGINIFRESET='0'THENSEC0_T=0000;SEC1_T=0000;ELSIFCLK'EVENTANDCLK='1'THENIFSEC0_T=1001THENSEC0_T=0000;SEC1_T=SEC1_T+1;ELSESEC0_T=SEC0_T+1;ENDIF;IFSEC0_T=1001ANDSEC1_T=0101THENSEC0_T=0000;SEC1_T=0000;E_1='1';ELSEE_1='0';ENDIF;ENDIF;ENDPROCESS;ENDONE;图1.六十进制秒计数器的仿真波形2.分计数器(COUNT601)能够实现60进制循环计数,带有带有复位端reset、手动调小时功能端sethour和向分进位端CO,受时钟上升沿信号控制。其文本语言(文件名:COUNT601.vhd)为底层文本,图2为分计数器的仿真波形图LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCOUNT601ISPORT(CLK,RESET,CLK1,SETHOUR:INSTD_LOGIC;2MIN0,MIN1:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CO:OUTSTD_LOGIC);ENDCOUNT601;ARCHITECTUREONEOFCOUNT601ISSIGNALMIN0_T,MIN1_T:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALENHOUR_1,ENHOUR_2:STD_LOGIC;BEGINMIN0=MIN0_T;MIN1=MIN1_T;ENHOUR_2=(NOTSETHOURandCLK1);CO=(ENHOUR_1orENHOUR_2);PROCESS(CLK,RESET,SETHOUR)BEGINIFRESET='0'THENMIN0_T=0000;MIN1_T=0000;ELSIFCLK'EVENTANDCLK='1'THENIFMIN0_T=1001THENMIN0_T=0000;MIN1_T=MIN1_T+1;ELSEMIN0_T=MIN0_T+1;ENDIF;IFMIN0_T=1001ANDMIN1_T=0101THENMIN0_T=0000;MIN1_T=0000;ENHOUR_1='1';ELSEENHOUR_1='0';ENDIF;ENDIF;ENDPROCESS;ENDONE;图2.六十进制分计数器的仿真波形3.小时计数器(COUNT24)能够实现24进制循环计数,带有复位端reset,受时钟上升沿信号控制。其文本语言(文件名:COUNT24.vhd)为底层文本,图3为分计数器的仿真波形图。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCOUNT24ISPORT(CLK,RESET:INSTD_LOGIC;3H0,H1:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDCOUNT24;ARCHITECTUREONEOFCOUNT24ISSIGNALH0_T,H1_T:STD_LOGIC_VECTOR(3DOWNTO0);BEGINH0=H0_T;H1=H1_T;PROCESS(CLK,RESET)BEGINIFRESET='0'THENH0_T=0000;H1_T=0000;ELSIFCLK'EVENTANDCLK='1'THENIFH0_T=1001THENH0_T=0000;H1_T=H1_T+1;ELSEH0_T=H0_T+1;ENDIF;IFH0_T=0011ANDH1_T=0010THENH0_T=0000;H1_T=0000;ENDIF;ENDIF;ENDPROCESS;ENDONE;图3.小时计数器的仿真波形4.报警模块(BS)能够实现整点报时和循环点亮3只LED灯,工作时受时钟上升沿控制。其文本语言(文件名:BS.vhd)为底层文本,图4为其仿真波形。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYBSISPORT(CLK:INSTD_LOGIC;M0,M1:INSTD_LOGIC_VECTOR(3DOWNTO0);SPEAK:OUTSTD_LOGIC;4LAMP:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDBS;ARCHITECTUREONEOFBSISSIGNALCOUNT:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALCOUNT1:STD_LOGIC_VECTOR(1DOWNTO0);BEGINSPEAKER:PROCESS(CLK)BEGINSPEAK=COUNT1(1);IFCLK'EVENTANDCLK='1'THENIFM0=0000ANDM1=0000THENIFCOUNT1=10THENCOUNT1=00;ELSECOUNT1=COUNT1+1;ENDIF;ENDIF;ENDIF;ENDPROCESSSPEAKER;LAMPER:PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENIFCOUNT=10THENIFCOUNT=00THENLAMP=001;ELSIFCOUNT=01THENLAMP=010;ELSIFCOUNT=10THENLAMP=100;ENDIF;COUNT=COUNT+1;ELSECOUNT=00;ENDIF;ENDIF;ENDPROCESSLAMPER;ENDONE;图4.声光报警仿真波形55.扫描模块(SET)能够实现逐次扫描秒个位、秒十位、分个位、分十位、时个位、时十位,并输出扫描数据和相应位的点dp,带有复位端reset,受扫描时钟上升沿控制。其文本语言(文件名:SET.vhd)为底层