目录1前言2总体方案设计2.1方案论述2.2设计方式3单元模块电路设计3.1时间显示电路模块设计3.2按键及指示灯电路模块的设计3.3蜂鸣器及有源晶振电路的设计3.4CPLD编程下载电路的设计3.5电源电路电路的设计3.6EPM7128SLC84器件介绍4CPLD编程设计4.1系统信号的定义及顶层模块4.2时钟节拍产生模块4.3模式选择功能模块4.4快速时间设置功能模块4.5秒、分、时计时与时间调整模块4.6闹铃时间设置模块4.7闹铃与整点报时模块4.87段显示译码模块4.9LED显示模块5系统功能及功能仿真5.1系统功能5.2功能仿真5.2.1时钟节拍产生模块的仿真波形5.2.2模式选择功能模块的仿真波形5.2.3闹铃设置功能模块的仿真波形5.2.47段译码功能模块的仿真波形5.2.5LED显示功能模块的仿真波形5.2.6系统总体功能仿真波形6设计总结7参考文献附录:基于CPLD的多功能数字钟电路图1前言我们已经进入了数字化和信息化的时代,其特点是各种数字产品的广泛应用。现代数字产品在性能提高、复杂度增大的同时,其更新换代的步伐也越来越快,实现这种进步的因素在于生产制造技术和电子设计技术的进步。生产制造技术以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管。PLD器件和EDA技术的出现,改变了这种传统的设计思路,使人们可以立足于PLD芯片来实现各种不同的功能,新的设计方法能够由设计者自己定义器件内部逻辑和管脚,将原来由电路板设计完成的工作大部分放在芯片的设计中进行。这样不仅可以通过芯片设计实现各种逻辑功能,而且由于管脚定义的灵活性,减轻了原理图和印制板设计的工作量和难度,增加了设计的自由度,提高了效率。同时这种设计减少了所需芯片的种类和数量,缩小了体积,降低了功耗,提高了系统的可靠性。本设计是基于CPLD的多功能数字钟设计。硬件界面为一个6位的LED数码管,时间显示方式为6位同时显示,即显示状态为:88:88:88。显示的时间制为24小时制。三个时间设定按键,分别为MODE模式选择键,SET设定键和CHANGE数值修改键。按键功能介绍:MODE按键用来选择当前数字钟的工作模式,系统正常工作在模式0下,即模式0为正常时钟模式。当在正常时钟模式下第一次按下MODE键时,系统进入模式1,即闹铃模式,在此模式下可以通过SET和CHANGE按键的配合使用来设定所需要的闹铃时间。当再一次按下MODE按键后系统进入手动校时模式,在此模式下通过SET和CHANGE按键的配合使用,可以改变当前时间。SET按键则用于在不同的模式下选择当前设定的位置,比如当前设定的位置是小时,则再一次按下SET按键后当前设定的位置变为分钟。CHANGE按键用来将当前设定位置的时间值加1,当长时间按下CHANGE按键时,当前设定值为连续快速加1,此功能用于快速设定时间。系统带四个指灯电路,一个为电源指示灯,其他三个为工作状态指示灯,即分别为LED_ALARM、LED_HOUR和LED_MIN。LED_ALARM用于指示当前是否设有闹铃,当LED_ALARM指示灯亮时表明当前设有闹铃。LED_HOUR和LED_MIN用于指示当前设定的是时间的小时还是分钟,当LED_HOUR指示灯亮时表明此时设定的是时间的小时值,当LED_MIN指示灯亮时表明此时设定的是时间的分钟值。闹铃的功能是实现当到达预设的时间点时产生为时20S的“嘀嘀嘀嘀”急促短音。整点报时的功能title=下一页|是实现在每个整点的5秒钟前产生整点报时音,报时音为“嘀嘀嘀---嘟”4短一长音。2总体方案设计2.1方案论述本设计是基于CPLD的多功能数字钟设计。硬件界面为一个6位的LED数码管,时间显示方式为6位同时显示,即显示状态为:88:88:88。显示的时间制为24小时制。三个时间设定按键,分别为MODE模式选择键,SET设定键和CHANGE数值修改键。按键功能介绍:MODE按键用来选择当前数字钟的工作模式,系统正常工作在模式0下,即模式0为正常时钟模式。当在正常时钟模式下第一次按下MODE键时,系统进入模式1,即闹铃模式,在此模式下可以通过SET和CHANGE按键的配合使用来设定所需要的闹铃时间。当再一次按下MODE按键后系统进入手动校时模式,在此模式下通过SET和CHANGE按键的配合使用,可以改变当前时间。SET按键则用于在不同的模式下选择当前设定的位置,比如当前设定的位置是小时,则再一次按下SET按键后当前设定的位置变为分钟。CHANGE按键用来将当前设定位置的时间值加1,当长时间按下CHANGE按键时,当前设定值为连续快速加1,此功能用于快速设定时间。系统带四个指示灯电路,一个为电源指示灯,其他三个为工作状态指示灯,即分别为LED_ALARM、LED_HOUR和LED_MIN。LED_ALARM用于指示当前是否设有闹铃,当LED_ALARM指示灯亮时表明当前设有闹铃。LED_HOUR和LED_MIN用于指示当前设定的是时间的小时还是分钟,当LED_HOUR指示灯亮时表明此时设定的是时间的小时值,当LED_MIN指示灯亮时表明此时设定的是时间的分钟值。电源采用+5V供电。整个设计的设计方式采用TOP-DOWN设计方法。多功能数字钟设计分为1个顶层模块和8个功能子模块。顶层模块名称为CLOCK.V。各功能子模块分别为:系统分频功能模块clk_generate.v、模式选择功能模块mode_select.v、快速时间设置功能模块fast_settime.v、秒、分、时计时与时间调整模块time_mode0.v、闹铃时间设置模块alarm_set.v、闹铃与整点报时模块alarm.v、7段显示译码模块decoder_7seg.v以及LED显示功能模块display.v。2.2设计方式TOP—DOWN设计,即自顶向下的设计。这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在功能级进入仿真和纠错,并用硬件描述语言对高层次的系统行为进行描述,然后用综合工具将设计转化为具体门电路网表,其对应的物理实现可以是PLD器件或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这一方面有利于早期发现结构上的错误,避免设计工作的浪费,同时也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。整个设计的设计方式采用TOP-DOWN设计方法。多功能数字钟设计分为1个顶层模块和8个功能子模块。顶层模块名称为CLOCK.V。各功能子模块分别为:系统分频功能模块clk_generate.v、模式选择功能模块mode_select.v、快速时间设置功能模块fast_settime.v、秒、分、时计时与时间调整模块time_mode0.v、闹铃时间设置模块alarm_set.v、闹铃与整点报时模块alarm.v、7段显示译码模块decoder_7seg.v以及LED显示功能模块display.v。图2.1整个系统的模块划分3单元模块电路设计3.1时间显示电路模块设计时间显示电路主要由两部分组成,如图3.1所示。其中一部分为六位LED数码管的驱动电路,另一部分为LED数码管电路。LED驱动电路由Q1、Q2、Q3、Q4、Q5、Q6六支三级管和R5、R6、R7、R8、R9、R10基极偏置电阻组成。驱动三级管为PNP型三极管,用于开关电路中。当三级管Q1的基极(即CPLD的LED0输出端)为低电平时,Q1的发射结正向偏置,集电结反向偏置,因此三极管处于导通状态,此时有Vce≈0.2~0.3V。反之当Q1的基极为高电平时Q1截止。Q1、Q2、Q3……Q6的基极(LED0~LED5)分别接CPLD的PIN74、PIN73、PIN70、|12345678910|PIN69、PIN68、PIN67,分别作为LED数码管的位选端。图3.1LED显示电路LED的显示方式有静态显示和动态方式两种工作方式。LED显示器工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地(或+5V);每位的段码线(a~dp)分别与一个8位的锁存器输出相连。之所以为静态显示,是因为各个LED的显示字符的字符一经确定,相应锁存器锁存的段码输出将维持不变,直到送入另一个字符的段码为止。正因为如此,静态显示器的亮度都较高。但是因为静态显示方式下,各位LED的段码线都是独立的,因此一个6位的LED显示器需要占用6*8+6=54个I/O口,在这种情况下为了简化接线,因此在本设计中采用的是动态扫描方式来显示距离。在动态显示方式下,通常将所有位的段码线相应并联在一起,由一个8位的I/O口控制,形成段码线的多路复用,而各位的共阳极或共阴极分别由相应的I/O口线控制,形成各位的分时选通。图3.1所示的电路是一个六位的LED显示电路。其中段码线占用1个8位I/O口,而位选线占用六位I/O口。由于各段码线并联,8位I/O口输出的段码对各个显示位来说都是相同的。因此,在同一时刻,如果各位位选线都处于选通状态的话六位LED将显示相同的字符。若要各位LED能同时显示出与本位相应的显示字符,就必须采用动态显示方式,即在某一时刻,只让某一位的位选线处于选能状态,而其他各位的位选处于关闭状态,同时,段码线上输出相应的要显示的字符段码。这样,在同一时刻,六位LED中只有选通的那一位显示出字任,而其它四位则是熄灭的。同样在下一时刻,只让下一位的位选线处于选通状态,而其它各位的位选线处于关闭状态,在段码线上输出将要显示字符的段码,则同一时刻,只有选通位显示相应的字符。而其它各位是熄灭的。如此循环下去,就可以使各位显示出将要显示的字符。图3.1所示三位数码显示管,常用的LED显示器为8段。每一个段对应一个发光二极管。这种显示器有共阳极和共阴极2种。共阴极LED显示器的发光二极管的阴极连接在一起,通常此公共阴极接地。当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。同样,共阳极LED显示器的发光二极管的阳极连接在一起,通常此公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。六位LED显示器有6位位选线和48根段码线。段码线控制显示字符的字型,而位选线为各个LED显示位中各段的公共端,它控制该LED显示位的亮或暗。LED显示器工作于静态显示方式时,各位的共阴极或共阳极连接在一起并接地或+5V。在多位显示时,为简化硬件电路,通常将所有位的段码线相应段并联在一起,由一个8位I/O口控制,形成段码线的多路复用。由于各位段码线并联,8位I/O口输出的段码对各个显示字符来说都是相同的,因此,在同一时刻,如果各位位选线都外于选通状态的话,6位LED将显示相同的字符,就必需采用动态显示方式,即在某一时刻,只让某一位的位选线外于选通状态,而其他各位的位选线外于关闭状态,同时段码线上输出相应位要显示字符的段码。这样在同一时刻,6位LED中只有选通的那一位显示出字符,而其他5位是熄灭的。同样在下一时刻,只让下一位的位选线外于选通状态,而其他各位的位选线处于关闭状态,在段码线上输出将要显示字符的段码,则同一时刻,只有选通位显示出相应的字任,而其他各位刚是熄灭的。如此循环下去,就可以使各位显示出将要显示的字符。虽然这些字符是在不同时刻出现的,但由于人的视觉暂留作用而感到同时显示。3.2按键及指示灯电路模块的设计根据电子电路常识,采用灌电流工作方式的电路的功耗要比采用拉电流方式工作的电路小。因此本设计中所有的外部键盘,指示二极管均采用灌电流的工作方式。当多功能数字钟的|12345678910|按键未按下时按键的输出(即CPLD的输入)为低电平,当按键按下时输出(即CPLD的输入)为高电平。在本设计中只有三个按键,分别为MODE、SET、CHANGE。MODE按键用于模式选择,按下一次MODE按键后电路进入闹铃设置模式,在该模式下可以用SET键来选择当前是设置小时还是设置分钟,而用CHANGE键可以改变当前设置闹铃的小时或分钟(向上加一)。再按一次