课程设计课程设计名称:EDA课程设计专业班级电科1301学生姓名:学号:201316030指导教师:焦素敏课程设计时间:2016-6-20~2016-7-21设计任务及要求用VHDL语言在FPGE/CPLD上实现数字钟的设计。掌握各类计数器的设计方法;掌握多个数码管显示的原理与方法;掌握VHDL语言的设计思想;掌握EDA技术的层次化设计方法;对整个系统的设计有一个初步了解。数字钟的设计要求如下:(1)具有正确的时、分、秒计时功能。(2)计时结果要有6个数码管分别显示时、分、秒的个位和十位。(3)有校时功能,当Key3键按下时,分计数器以秒脉冲的速度递增,并按60min循环,即计数到59min后再回00。当按下Key1键时,时计数器以秒脉冲的速度递增,并按24h循环,即计数到23h后再回00。(4)利用扬声器整点报时。2设计原理及总体框图数字钟的顶层电路原理图如图1所示:(图1数字钟的顶层电路原理图)Clky引脚输入1Hz秒脉冲,输入一个60进制秒计数器,60进制计数器外接输出引脚,输出到秒数码管上显示。当计满60位时,输出引脚CO产生进位输出电平,输入到60进制分计数器上。60进制分计数器接受来自60进制秒计数器的进位电平开始计数,并由输出引脚将所计数字输出到分数码管上显示。当计满60个数后,产生进位输出电平,由进位输出CO引脚输出到20进制时计数器上。20进制时计数器接受来自60进制分计数器的进位电平开始计数,并由输出引脚将所计数字输出到时数码管上显示。当计满20个数后,产生进位输出电平,由进位输出CO引脚输出到异步清零引脚Key3上,整个系统清零,从00:00:00开始重新计数。整点报时模块,当是整点显示时,蜂鸣器报时,key1、key2、key3、引脚分别接开关。key3负责清零,key1引脚接1Hz秒脉冲时实现以秒频率校准分功能,key2引脚接1Hz秒脉冲实现以秒频率校准时功能。3程序设计60进制BCD码计数器的源程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYcnt60ISPORT(clr:INSTD_LOGIC;clk:INSTD_LOGIC;ten:OUTSTD_LOGIC_VECTOR(3DOWNTO0);one:OUTSTD_LOGIC_VECTOR(3DOWNTO0);co:OUTSTD_LOGIC);ENDcnt60;ARCHITECTUREbehavOFcnt60ISSIGNALcin:STD_LOGIC;BEGINPROCESS(clk,clr)VARIABLEcnt0:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFclr='1'THENcnt0:=0000;ELSIFclk'EVENTANDclk='1'THENIFcnt0=1000THENcnt0:=cnt0+1;cin='1';ELSIFcnt0=1001THENcin='0';cnt0:=0000;ELSEcnt0:=cnt0+1;cin='0';ENDIF;ENDIF;one=cnt0;ENDPROCESS;PROCESS(clk,clr,cin)VARIABLEcnt1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFclr='1'THENcnt1:=0000;ELSIFclk'EVENTANDclk='1'THENco='0';IFcin='1'THENIFcnt1=0101THENcnt1:=0000;co='1';ELSEcnt1:=cnt1+1;co='0';ENDIF;ENDIF;ELSEcnt1:=cnt1;ENDIF;ten=cnt1;ENDPROCESS;ENDbehav;24进制计数器的VHDL源程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYcnt24ISPORT(clr:INSTD_LOGIC;clk:INSTD_LOGIC;ten:OUTSTD_LOGIC_VECTOR(7DOWNTO4);one:OUTSTD_LOGIC_VECTOR(3DOWNTO0);co:OUTSTD_LOGIC);ENDcnt24;ARCHITECTUREbehavOFcnt24ISSIGNALt10:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALo1:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALcin:STD_LOGIC;BEGINten=t10;one=o1;p1:PROCESS(clk,clr)BEGINIF(clr='1')THENo1=0000;ELSIFclk'EVENTANDclk='1'THENIF(o1=1001)OR(t10=0010ANDo1=0011)THENo1=0000;cin='0';ELSIF(o1=1000)THENo1=o1+1;cin='1';ELSEo1=o1+1;cin='0';ENDIF;ENDIF;ENDPROCESSp1;p2:PROCESS(clk,clr,cin)BEGINIF(clr='1')THENt10=0000;ELSIFclk'EVENTANDclk='1'THENIF(t10=0010ANDo1=0011)THENt10=0000;co='1';ELSEco='0';ENDIF;IFcin='1'THENt10=t10+1;ENDIF;ENDIF;ENDPROCESSp2;ENDbehav;二选一模块VHDL源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYtwoxuan1ISPORT(A:INSTD_LOGIC;B:INSTD_LOGIC;C:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDtwoxuan1;ARCHITECTUREbehavOFtwoxuan1ISBEGINPROCESS(C)BEGINIFC='0'THENY=A;ELSEY=B;ENDIF;ENDPROCESS;ENDbehav;整点报时源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYzhengdianbaoshiISPORT(clk:INSTD_LOGIC;miaog,miaos,feng,fens:INSTD_LOGIC_VECTOR(3DOWNTO0);qout:OUTSTD_LOGIC);ENDzhengdianbaoshi;ARCHITECTUREbehavOFzhengdianbaoshiISsignalA:STD_LOGIC;BEGINPROCESS(clk)BEGINIFclk'EVENTANDclk='1'THENIFmiaos=0000ANDfens=0000ANDfeng=0000ANDmiaog=0000THENqout='1';ELSIFmiaos=0010THENqout='0';ENDIF;ENDIF;ENDPROCESS;ENDbehav;4编译及仿真QuartusII是Alter公司推出的第四代EDA开发工具软件,同第三代设计工具MAX+PLUSII相比,其功能更加完善,特别适合大规模逻辑电路的设计。QuartusII的设计流程与其他工具软件一样,也可以概括为设计输入,设计编译,设计仿真和设计下载等过程,QuartusII支持图形输入,文本输入等多种输入方法。Alter公司的QuartusII是一个全面的,易于使用且具有独立解决问题能力的软件,可以完成设计流程中的输入综合,布局布线,时序分析,仿真和编程下载等所有功能。数字钟仿真波形为图2所示:(图2数字钟仿真波形)由波形图可以看出,clk为输入1Hz秒脉冲,One为输出秒的个位,ten为输出秒的十位。Ne1为输出分的个位,ten为输出分的十位。One2为输出时的个位,ten为输出时的十位。SOUND为整点报时输出。由最后一行,可以看出,波形总共为两端,分别为第一段对应12个整点报时,每个整点报时对应一个分钟十位的进位。由此图可见,波形仿真正确。图3为数字钟仿真波形为局部放大图(图3数字钟仿真波形为局部放大图)60进制计数器的仿真波形如图4:(图460进制计数器的仿真波形)第一行为输入的1Hz的秒脉冲,由波形图可以看出,最后一行对应的60进制计数器的十位从0变化到5倒数第二行对应的个位,从0变化到9,每个十位数字变化时,对应10个个位数字从0变化到。由此可以看出,波形仿真成功。24进制计数器的仿真波形如下图5所示:(图524进制计数器的仿真波形)第一行为输入的1Hz的秒脉冲,由波形图可以看出,最后一行对应的24进制计数器的十位从0变化到2,十位数字0和1对应10个个位数字从0变化到9,十位数字2对应个位数字从0变化到3。倒数第二行对应的个位。由此可以看出,波形仿真成功。5硬件调试与结果分析按照正确的方法进行引脚锁定后进行编程下载,下载成功后按照引脚锁定的管脚进行连线。可以看到数码管从00;00;00;开始显示计数,秒计满60秒后分进一位,分计满60为后时进一位,时计满24后从00:00:00开始计数。整点时报时声音响起。按下key1键时,将1Hz秒脉冲信号送到分计数器,可以实现快速校分功能。当按下key2键时,分计数器以秒脉冲的速度递增,并按24h循环,即计数到23h后再回到00.硬件验证成功。6参考文献[1]焦素敏.EDA课程设计指导书.郑州:河南工业大学,2008[2]焦素敏.EDA技术基础.北京:清华大学出版社,2014[3]边肇祺.模式识别(第二版).北京:清华大学出版社,1988,25~35[4]李永忠.几种小波变换的图像处理技术.西北民族学院学报(自然科学版),2001.6,22(3),15~18心得体会通过这次课程设计,我进一步加深了对EDA编程的了解。并进一步熟练了对QuartusII软件的操作,更为重要的是时隔一年以后有一次认真地复习了EDA所学的知识,加深了对所学知识的理解与应用。在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。通过与同学探讨和请教老师,终于把问题都解决了,并加深了对数字时钟原理和设计思路的了解。同时我也掌握了做课程设计的一般流程,为以后的电子设计这块积累了一定的经验,为以后从事相关工作一些帮助。刚开始做时,仅仅做了一个比较简单的数字钟,没有做整点报时与校对分、时的功能。在第一次验收时,老师帮忙指出了其中的不足之处,在课下,我又对其进行了修改,增加了整点报时与校对分、时的功能。做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。电子信息科学与技术专业课程设计任务书学生姓名专业班级电科1301学号题目数字钟的设计课题性质工程设计课题来源自拟课题指导教师焦素敏同组姓名主要内容(1)具有正确的时、分、秒计时功能。(2)计时结果要有6个数码管分别显示时、分、秒的个位和十位。(3)有校时功能,当Key3键按下时,分计数器以秒脉冲的速度递增,并按60min循环,即计数到59min后再回00。当按下Key1键时,时计数器以秒脉冲的速度递增,并按24h循环,即计数到23h后再回00。(4)利用扬声器整点报时。任务要求①根据设计题目要求编写相应程序代码②对编写的VHDL程序代码进行编译和仿真③条件允许,完成硬件验证④总结设计内容,完成课程设计说明书参考文献[1]焦素敏.EDA课程设