VHDL课程设计可编程逻辑器件及应用课程设计题目:数字电子钟设计与实现姓名:11111学号:111111111班级:111111111同组人员:1111指导教师:1111完成日期:111111111目录一、设计目的二、设计内容三、设计原理四、设计方法4.1分频器(输入1024Hz频率,输出1Hz和512Hz信号)4.2六十进制计数器4.3二十四进制计数器4.4整点报时模块(数据选择器)4.5校时校分模块4.6完整数字钟4.7开发平台及硬件显示结果五、课程设计总结一、设计目的1.熟练的运用数字系统的设计方法进行数字系统设计2.掌握较复杂的数字系统设计3.掌握原理图设计方法和VHDL语言设计方法二、设计内容分别用原理图和VHDL语言设计1.显示时、分、秒的数字钟,显示格式如下:具有清零、校时、校分、整点报时等功能三、设计原理该系统由振荡器、分频器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路等组成。石英晶体振荡器和分频器产生整个系统的时基信号,它直接决定计时系统的精度。“秒计数器”采用六十进制计数器,每累计60秒向“分计数器”进位;“分计数器”采用六十进制计数器,每累计60分向“时计数器”进位;“时计数器”采用二十四进制计数器,按照“24翻1”规律计数。“时、分、秒”计数器的输出经译码器送显示器显示。校时电路用来当计时出现误差时对“时、分、秒”进行校对调整。整点报时电路是根据计时系统的输出状态产生一脉冲信号,然后去触发音频发生器实现报时。四、设计方法4.1分频器(输入1024Hz频率,输出1Hz和512Hz信号)数字钟系统中需要1Hz、512Hz、1024Hz三种脉冲信号。1Hz信号用于计数的秒信号,也用于校时、校分的信号,1024Hz和512Hz用于整点报时。由于系统板上提供1024Hz信号,用分频器可得到这些信号。1)原理图设计原理图设计时,可用三个16进制计数器74161串接后得到1Hz、512Hz两种脉冲信号。分频器原理图:分频器仿真波形:由仿真波形可以看出,输入为1024Hz(实验仿真时没有精确计算周期)信号,512Hz的输出端频率变为输入的一半,1Hz输出端频率变为输入的1/1024,可知所设计分频器具有将1024Hz信号分频得到512Hz和1Hz信号的功能。2)VHDL语言设计VHDL语言设计分频器是,可做一个10位二进制计数器,其中输出的512Hz=out(0),1Hz=out(9)。分频器VHDL语言:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYfenpinisPORT(clk:INSTD_LOGIC;out1:OUTSTD_LOGIC;out512:OUTSTD_LOGIC);ENDfenpin;ARCHITECTUREaOFfenpinISSIGNALcount:STD_LOGIC_VECTOR(9DOWNTO0);BEGINPROCESS(clk)BEGINif(clk'eventANDclk='0')thencountendif;ENDPROCESS;out512out1ENDa;4.2六十进制计数器1)原理图设计74160分别设计一个带清零功能的10进制计数器和6进制计数器,然后串联起来就是六十进制计数器。60进制计数器原理图如下:60进制计数器仿真波形:由仿真波形可看出,在计数脉冲作用下,输出端高四位[q60H3,q60H2,q60H1,q60H0]的bcd码在0~5之间循环,而低四位[q60L3,q60L2,q60L1,q60L0]在0~9之间循环,这样完成了0~59的计数功能。2)VHDL语言设计VHDL语言设计时,整体设计一个带清零功能的60进制计数器的BCD码计数器。输出低四位为outbcd[3..0],高四位为outbce[7..0]。60进制计数器VHDL语言:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYbcd60isPORT(clk:INSTD_LOGIC;reset:INSTD_LOGIC;c:OUTSTD_LOGIC;daout:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDbcd60;ARCHITECTUREaOFbcd60ISSIGNALcount:STD_LOGIC_VECTOR(7DOWNTO0);BEGINPROCESS(clk,reset)BEGINif(reset='1')thencountelsif(clk'eventANDclk='1')thenif(countif(count(3downto0)=1001)thencountelsecountcendif;elsecountcendif;endif;ENDPROCESS;daoutENDa;4.3二十四进制计数器1)原理图设计原理图设计时,用74160设计一个带清零功能的24进制BCD码计数器。[q24H3,q24H2,q24H1,q24H0]为输出的高四位,其在0000~0010即0~2之间循环,[q24L3,q24L2,q24L1,q24L0]为输入的低四位,其在0000~1001即在0~9之间循环。后一个74160在计数脉冲作用下计数,当到9后,再一个脉冲便产生进位信号,RCO端产生一个脉冲送到前一个74160使之加一。当前一个74160为2,后有一个74160为3时产生清零信号,使两个计数器同时清零。这样便完成24进制计数。24进制计数器原理图:24进制计数器仿真波形2)VHDL语言设计VHDL语言设计时,,整体设计一个带清零功能的24进制BCD码计数器。24进制BCD码VHDL语言代码:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYbcd24isPORT(clk:INSTD_LOGIC;reset:INSTD_LOGIC;c:OUTSTD_LOGIC;daout:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDbcd24;ARCHITECTUREaOFbcd24ISSIGNALcount:STD_LOGIC_VECTOR(7DOWNTO0);BEGINPROCESS(clk,reset)BEGINif(reset='1')thencountelsif(clk'eventANDclk='1')thenif(count(3downto0)=1001)thenif(countcountelsecountendif;elsif(countcountcelsecountcendif;endif;ENDPROCESS;daoutENDa;4.4整点报时模块(数据选择器)1)原理图整点报时是数字钟最基本功能电路之一。要求在离整点10s时进行报时,即当时间在59:51、59:53、59:55、59:57时以低音512Hz信号持续1s发出整点报时的预警声,在59:59时以高音1024Hz信号持续1s发出整点报时声。当59:5X时,小时输出的八位数是01011001,分的八位数是0101XXXX。将其中高电平对应得管脚接到与非门,当计数器到达59:5X时与非门的输出为0,将4选1数据选择器打开。将秒信号的个位sLa、sLd分别接到4选1数据选择器地址端A、B。如图:从真值表看出:mLdmLcmLbmLa显示十进制数mLdmLa组合0000000000110100102000011301010040001015010110600011170110008001001901当59:51、59:53、59:55、59:57时,mLa、mLd为01,从上图看出选中2C1端口,喇叭发出512Hz低音信号。当59:59是,mLa、mLd为11.从上图看出选中端口2C3,喇叭发出1024Hz高音信号。2)VHDL语言代码LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYbaoshiisPORT(clock:INSTD_LOGIC;clk1024,clk512:INSTD_LOGIC;tm,tc:INSTD_LOGIC_VECTOR(7DOWNTO0);speaker:OUTSTD_LOGIC);ENDbaoshi;ARCHITECTUREaOFbaoshiISBEGINPROCESS(tm,tc,clock)beginif(tm=01011001ANDtc(7downto4)=0101ANDtc(0)='1')thenif(tc(3downto0)=1001)thenspeakerelsespeakerendif;elsespeakerendif;ENDPROCESS;ENDa;4.5校时校分模块校时校分电路中用到2选1电路进行信号选择。原理图:仿真波形:VHDL语言代码:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux21isPORT(a,b:INSTD_LOGIC;s:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDmux21;ARCHITECTUREoneOFmux21ISBEGINPROCESS(a,b,s)BEGINif(s='0')thenyelseyendif;ENDPROCESS;ENDone;2选1数据选择器顶层文件2选1电路接在前级向后间进位信号之间。2选1电路输入信号一个是前级向后级的进位信号,另一个是1Hz信号。当SEL信号等于1时选择A端信号,输入下级时钟端的信号为1Hz信号,实现校时、校分;当SEL信号等于0时选择B端信号,输入下级时钟端的信号为正常的进位信号,实现正常计时。4.6完整数字钟1)原理图设计2)仿真图VHDL语言顶层文件:总体仿真:从仿真图可以看出,所设计时钟具备校时、校分、清零、整点报时的功能,符合课程设计要求。4.7开发平台及硬件显示结果开发平台:GW48-CKEDA实验开发系统编号00067058带MAX+PLUSII软件PC机硬件显示结果:五、课程设计总结本次可编程逻辑电路课程设计在设计系统以及画原理图和编写程序过程当中,由于对可编程逻辑电路不太熟悉以及对MAX+PLUSII软件的运用也很生疏,我们遇到了很多问题,并且对遇到的问题也只能在网上搜索或请教老师,但是最终在和队友的协作下我们顺利完成了课程设计任务,总的来说并不顺利。本次课程设计任务——数字电子钟设计与实现,是将本学期VHDL硬件描述语言与数字逻辑电路设计和上学期所学的数字电路中所学的知识运用的实践中去,提高了自己理论与实践相结合能力,使我进一步掌握本专业的各项知识,为以后的专业学习打下良好的基础。在设计中还是需要注意一些常见的问题,比如实体名、项目名等,还有在编写VHDL文件时,一些文件名也是需要注意的。最后,感谢老师在我们做课程设计过程当中的耐心指导和辛勤付出,也感谢队友的悉心帮助。