毕业设计(论文)基于VHDL语言的多功能数字钟设计.doc

上传人:仙人指路1688 文档编号:3980055 上传时间:2023-03-30 格式:DOC 页数:50 大小:717KB
返回 下载 相关 举报
毕业设计(论文)基于VHDL语言的多功能数字钟设计.doc_第1页
第1页 / 共50页
毕业设计(论文)基于VHDL语言的多功能数字钟设计.doc_第2页
第2页 / 共50页
毕业设计(论文)基于VHDL语言的多功能数字钟设计.doc_第3页
第3页 / 共50页
毕业设计(论文)基于VHDL语言的多功能数字钟设计.doc_第4页
第4页 / 共50页
毕业设计(论文)基于VHDL语言的多功能数字钟设计.doc_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《毕业设计(论文)基于VHDL语言的多功能数字钟设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于VHDL语言的多功能数字钟设计.doc(50页珍藏版)》请在三一办公上搜索。

1、基于 VHDL语言的多功能数字钟设计摘 要VHDL作为一种硬件描述语言,可用于数字电路与系统的描述、模拟和自动设计与仿真等,是当今电子设计自动化的核心技术。 本文使用VHDL语言设计了一个数字时钟电路,给出了设计该数字系统的流程和方法。本设计方法具有硬件描述能力强,设计方法灵活,便于修改等优点,大大降低了数字系统设计的难度,提高了工作效率。本设计采用EDA技术,以硬件描述语言VHDL为系统逻辑描述手段设计文件,在MAX+Plus工具软件环境下,采用自顶向下的设计方法,由各个基本模块共同构建了一个基于CPLD的数字钟。系统主芯片采用EPM7128SLC84,由时钟模块、控制模块、计时模块、数据译

2、码模块、显示以及报时模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,本系统能够完成时、分、秒的分别显示,由按键输入进行数字钟的校时、清零、启停功能。关键词:硬件描述语言,VHDL,数字电路设计, 数字钟Digital Clock Design Based On The Hardware Description Language(VHDL) Author: 。Tutor: 。AbstractVHDL can be used to describe,simulate and digital system automatically. Nowdays,it becomes a key

3、 technology in automatic electronic design. There is a lot of superiority in this description language.This article introduces the method and the process using VHDL to design a digital system by an example of digital clock dasign. The result given in this paper shows that VHDL is one of the stronges

4、t tools in hardware description and it is a flexible among the design method. The method given in this paper can reduce the difficulty of digital system design and improve the work efficiency.The use of EDA design technology, hardware-description language VHDL description logic means for the system

5、design documents, in MaxplusII tools environment, a top-down design, by the various modules together build a CPLD-based digital clock.The main system chips used EPM7128SLC84, make up of the clock module, control module, time module, data decoding module, display and broadcast module. After compiling

6、 the design and simulation procedures, the programmable logic device to download verification, the system can complete the hours, minutes and seconds respectively, using keys to modify, cleared , start and stop the digital clock. Key words: Hardware description language,VHDL, Digital circuit design,

7、 digital clock目 录1 绪论11.1 课题背景11.2 本课题研究的内容12 总体设计方案33 单元模块电路设计43.1 时间显示电路模块设计43.2 按键及指示灯电路模块的设计53.3 蜂鸣器及有源晶振电路的设计73.4 CPLD编程下载电路的设计83.5 电源电路的设计93.5.1 变压器次级电压估算93.5.2 变压器输入功率的计算93.5.3 滤波电容参数的选取103.6 EPM7128SLC84器件介绍104 CPLD 编程设计114.1系统信号的定义及顶层模块114.2 时钟节拍产生模块124.3模式选择功能模块144.4 快速时间设置功能模块164.5 秒、分、时计

8、时与时间调整模块164.6闹铃时间设置模块184.7闹铃与整点报时模块194.8 七段显示译码模块204.9 LED显示模块225 系统功能仿真255.1 时钟节拍产生模块的仿真波形255.2 模式选择功能模块的仿真波形265.3 闹铃设置功能模块的仿真波形275.4 七段译码功能模块的仿真波形285.5 LED显示功能模块的仿真波形305.6 系统总体功能仿真波形31总 结32致 谢33参考文献34附录A:基于CPLD的多功能数字钟电路图35附录B:基于VHDL语言的时、分、秒等电路的源码361 绪论1.1 课题背景我们已经进入了数字化和信息化的时代,其特点是各种数字产品的广泛应用。现代数字

9、产品在性能提高、复杂度增大的同时,其更新换代的步伐也越来越快,实现这种进步的因素在于生产制造技术和电子设计技术的进步。生产制造技术以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管1。PLD器件和EDA技术的出现,改变了传统的设计思路,使人们可以立足于PLD芯片来实现各种不同的功能,新的设计方法能够由设计者自己定义器件内部逻辑和管脚,将原来由电路板设计完成的工作大部分放在芯片的设计中进行。这样不仅可以通过芯片设计实现各种逻辑功能,而且由于管脚定义的灵活性,减轻了原理图和印制板设计的工作量和难度,增加了设计的自由度,提高了效率。同时这种设计减少了所需芯片的

10、种类和数量,缩小了体积,降低了功耗,提高了系统的可靠性2。钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。1.2 本课题研究的内容本设计是基于CPLD(MAX7000S系列)的多功能数字钟设计。硬件界面为一个6位的LED数码管,时间显示方式为6位同时显示,即显示状态为:88:88:88。显示的时间制为24小时制。三个时间设定按键,分别为MODE模式选择键,SET设定键和CHANGE数值修改

11、键3。按键功能介绍:MODE按键用来选择当前数字钟的工作模式,系统正常工作在模式0下。当在正常时钟模式下第一次按下MODE键时,系统进入模式1,即闹铃模式,在此模式下可以通过SET和CHANGE按键的配合使用来设定所需要的闹铃时间。当再一次按下MODE按键后系统进入手动校时模式,在此模式下通过SET和CHANGE按键的配合使用,可以改变当前时间。SET按键则用于在不同的模式下选择当前设定的位置,比如当前设定的位置是小时,则再一次按下SET按键后当前设定的位置变为分钟。CHANGE按键用来将当前设定位置的时间值加1,当长时间按下CHANGE按键时,当前设定值为连续快速加1,此功能用于快速设定时间

12、4。系统带四个指示灯电路,一个为电源指示灯,其他三个为工作状态指示灯,即分别为LED_ALARM、LED_HOUR和LED_MIN。LED_ALARM用于指示当前是否设有闹铃,当LED_ALARM指示灯亮时表明当前设有闹铃。LED_HOUR和LED_MIN用于指示当前设定的是时间的小时还是分钟,当LED_HOUR指示灯亮时表明此时设定的是时间的小时值,当LED_MIN指示灯亮时表明此时设定的是时间的分钟值。闹铃的功能是实现当到达预设的时间点时产生为时20s的“嘀嘀嘀嘀”急促短音。整点报时的功能是实现在每个整点的5秒钟前产生整点报时音,报时音为“嘀嘀嘀-嘟”4短一长音。 2 总体设计方案整个设计

13、的方式采用TOP-DOWN设计方法,即自顶向下的设计。这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在功能级进入仿真和纠错,并用硬件描述语言对高层次的系统行为进行描述,然后用综合工具将设计转化为具体门电路网表,其对应的物理实现可以是PLD器件或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这一方面有利于早期发现结构上的错误,避免设计工作的浪费,同时也减少了逻辑功能仿真的工作量,提高了设计的一次成功率5。多功能数字钟设计分为1个顶层模块和8个功能子模块。顶层模块名称为clock.v。各功能子模块分别为:系统分频功能模块clk_generate.v、模式选择

14、功能模块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基极偏置电阻组成

15、。驱动三级管为PNP型三极管,用于开关电路中。当三极管Q1的基极(即CPLD的LED0输出端)为低电平时,Q1的发射结正向偏置,集电结反向偏置,因此三极管处于导通状态,此时有Vce0.20.3V。反之当Q1的基极为高电平时Q1截止。Q1Q6的基极(LED0LED5)分别接CPLD的PIN74、PIN73、PIN70、PIN69、PIN68、PIN67,分别作为LED数码管的位选端6。 图3.1 LED显示电路LED的显示方式有静态显示和动态方式两种工作方式。LED显示器工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地(或+5V);每位的段码线(Adp)分别与一个8位的锁存器输出相

16、连。之所以为静态显示,是因为各个LED的显示字符的字符一经确定,相应锁存器锁存的段码输出将维持不变,直到送入另一个字符的段码为止。正因为如此,静态显示器的亮度都较高。但是因为静态显示方式下,各位LED的段码线都是独立的,因此一个6位的LED显示器需要占用6*8+6=54个I/O口,在这种情况下为了简化接线,本设计采用的是动态扫描方式来显示。在动态显示方式下,通常将所有位的段码线相应并联在一起,由一个8位的I/O口控制,形成段码线的多路复用,而各位的共阳极或共阴极分别由相应的I/O口控制,形成各位的分时选通7。图3.1所示的电路是一个六位的LED显示电路。其中段码线占用1个8位I/O口,而位选线

17、占用六位I/O口。由于各段码线并联,8位I/O口输出的段码对各个显示位来说都是相同的。因此,在同一时刻,如果各位位选线都处于选通状态的话六位LED将显示相同的字符。若使各个LED能同时显示出与本位相应的字符,就必须采用动态显示方式,即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选处于关闭状态,同时,段码线上输出相应的要显示的字符段码。这样,在同一时刻,六位LED中只有选通的那一位显示出字数,而其它则是熄灭的。同样在下一时刻,只让下一位的位选线处于选通状态,而其它各位的位选线处于关闭状态,在段码线上输出将要显示字符的段码,则同一时刻,只有选通位显示相应的字符,而其它各位是熄灭的,如

18、此循环下去,就可以使各位显示出将要显示的字符。3.2 按键及指示灯电路模块的设计根据电子电路常识,采用灌电流工作方式的电路的功耗要比采用拉电流方式工作的电路小。因此本设计中所有的外部键盘,指示二极管均采用灌电流的工作方式。当多功能数字钟的按键未按下时按键的输出(即CPLD的输入)为低电平,当按键按下时输出(即CPLD的输入)为高电平。 在本设计中只有三个按键,分别为MODE、SET、CHANGE。MODE按键用于模式选择,按下一次MODE按键后电路进入闹铃设置模式,在该模式下可以用SET键来选择当前是设置小时还是设置分钟,而用CHANGE键可以改变当前设置闹铃的小时或分钟(向上加一)。再按一次

19、MODE键则进入手动校时功能模式8。按键电路如图3.2所示。图3.2 按键电路在本设计中共有四个指示灯,一个为电源指示灯,其它三个是工作状态指示灯,D1为闹铃报警指示电路,当设置闹铃后闹铃指示电路就工作在点亮状态,指示当前设有闹铃。D2和D3用来指示当前设置状态。当在闹铃设置模式和手动校时模式下,D2或D3会有一个在点亮状态,当D2亮时表示当前设置的是小时,当D3亮时表示当前设置的是分钟。指示灯电路如图3.3所示。图3.3 指示灯电路引脚的连接为,D1接CPLD的PIN61,D2接CPLD的PIN63,D3接CPLD的PIN64。当CPLD的引脚输出为高电平时相应的指示灯就点亮。3.3 蜂鸣器

20、及有源晶振电路的设计在本设计中由于有音调的变换,所以必需采用交流蜂鸣器。由于CPLD管脚的驱动能力有限,因此通过连接一个三极管来增强驱动能力,从而提高蜂鸣器的响度。二极管D9起到续流保护的作用,蜂鸣器电路如图3.4所示。图3.4蜂鸣器电路系统时钟采用2.048MHZ的有源晶体振荡器。为了使有源晶振能输出较好的波形,必需保证供电的稳定。所以在晶振电路的前端加了两个小电容对电源进行滤波,在时钟输出端加了一个小电阻,能有效地抑制高次谐波和实现阻抗匹配。有源晶振电路如图3.5所示。图3.5有源晶振电路3.4 CPLD编程下载电路的设计CPLD器件多采用JTAG编程方式,JTAG编程方式是在线编程,传统

21、生产流程中先对芯片进行预编程现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG接口可对PSD芯片内部的所有部件进行编程9。在硬件结构上,JTAG 接口包括两部分:JTAG 端口和控制器。与JTAG 接口兼容的器件可以是微处理器(MPU)、微控制器(MCU)、PLD、CPL、FPGA、ASIC 或其它符合IEEE.1149.1 规范的芯片。IEEE.1149.1 标准中规定对应于数字集成电路芯片的每个引脚都设有一个移位寄存单元,称为边界扫描单元BSC。它将JTAG 电路与内核逻辑电路联系起来,同时隔离内核逻辑电路和芯片引脚。由集成电路的所有

22、边界扫描单元构成边界扫描寄存器BSR。边界扫描寄存器电路仅在进行JTAG 测试时有效,在集成电路正常工作时无效,不影响集成电路的功能。JTAG编程方式对CPLD和FPGA器件都支持,用于CPLD器件的下载文件是POF文件。JTAG下载电路如图3.6所示。JTAG下载电路的10针接口引脚定义为:1引脚为TCK时钟,2引脚接地,3引脚TDO为测试数据输出(数据输出,来自器件),4引脚接电源电压,5引脚TMS为测试模式选择(编程使能),NC为NO-CONNECT。9引脚TDI为测试数据输入(数据输入到器件),10引脚接地。图3.6 JTAG下载电路3.5 电源电路的设计本设计中的核心器件为MAX70

23、00S系列的EPM7128SLC84,I/O口电压VCCIO和核心电压VCCINT均支持正5V,因此在本设计中统一给I/O端口和内核提供+5V的电压。图3.7 电源电路电源电路是由电源变压器T、桥堆、滤波电容C11、C13、C15、C17及集成三端稳压电路7805以及保险丝组成,其电路图如图3.7所示。电源的输出为+5V输出。下面介绍电源各部分参数的整定方法。3.5.1 变压器次级电压估算由于稳压器要正常工作时输入端的电压必需要比输出端高2.5V时才能使其稳定工作。考虑到市网交流电压的波动情况,在市网电压为200V时也能正常工作,则有220/200*Vac要大于8.0,所以Vac必需要大于8.

24、8V,即交流变压器的副边输出电压应该高于8.8V,在本设计中选取9V。 3.5.2 变压器输入功率的计算假设负载电流为500mA,若输出电压为5V,则有效功率为5V*0.5A=2.5W。正常情况下变压器输出功率约为9V*1.2*1.5A=5.4W,当市网电压升到250V时,变压器的输出功率为5.4W*250/220=6.2W。小型电源变压器的效率一般为75%左右。因此电源变压器的输入功率为6.2W/0.75=8.27W。3.5.3 滤波电容参数的选取假设负载电流为500mA,若输出电压为7.5V,则等效负载电阻为15。电源频率为50hz,则T=0.02s,根据CRL=(35)T/2,则C=(3

25、5)T/2/RL=20003300uF。在本设计中取2200uF。电容耐压应大于1.42*Vac即Vc=1.42*9*250/220=14.5V(其中250/220是考虑市网电源电压过高时的情况)。在本设计中电容耐压值取16V。3.6 EPM7128SLC84器件介绍10本次设计的核心器件采用ALTERA公司的CPLD可编程器件。ALTERA公司的MAX7000S系列CPLD有着较高的性价比。MAX7000S系列是基于ALTERA第二代MAX架构的高密度、高性能的PLD器件。MAX7000器件包含32256个可联结成16个宏单元组的逻辑阵列块的宏单元。图3.8 EPM7128SLC的PLCC封

26、装EPM7128SLC84是MAX7000S家族成员之一,它有如下的特点:可用逻辑门个数为2500门,128个宏单元,8个逻辑阵列块,最大用户可用I/O口100个,支持5V在系统编程和符合IEEE.STD.1179的JTAG下载接口,内建边界扫描测试电路,支持片上调试,EPM7128SLC84-15的封装如图3.8所示。4 CPLD 编程设计4.1系统信号的定义及顶层模块整个系统输入、输出信号的定义:sysclk:系统的时钟信号,由外部有源晶振产生,频率为2.048Mhz;mode:外接按键,模式选择信号,mode=0时为时钟模式,mode=1时为设定闹钟模式,mode=2时为手动设定时间模式

27、;set:外接按键,用于在手动设置时间时选择是调整小时还是分钟;若长时间按住该键,还可以使秒信号清零,用于精确调整时间;change:外接按键,手动调整时间,每按一次计数器加1;若长时间按住则连续快速加1,用于快速调时和定时;alarm:接蜂鸣器,输出到蜂鸣器的信号,用于产生闹铃音和报时音;闹铃音为持续20s的急促的“嘀嘀嘀”音,整点报时音为“嘀嘀嘀-嘟”四短一长音;Dataout:输出信号,输出显示时间的数码管显示的段码12。include clk_generate.v include time_mode0.vinclude mode_select.vinclude fast_settime

28、.vinclude alarm_set.vinclude alarm.vinclude decoder_7seg.vinclude display.vmodule clock;clk_generate clk_generate(); /调用时钟节拍产生模块time_mode0 time_mode0(); / 秒、分、时计时与时间调整模块mode_select mode_select(); /调用模式选择功能模块fast_settime fast_settime(); /调用快速时间设置功能模块alarm_set alarm_set(); /调用闹铃时间设置模块alarm alarm(); /调

29、用闹铃与整点报时模块decoder_7seg decoder_7seg(); /调用7段译码模块display display(); /调用显示模块endmodule4.2 时钟节拍产生模块由于整个系统只有一个晶体振荡器,但是设计需要不同的时钟信号,因此需要设计一个分频进程,对系统的有源晶振产生的2.048Mhz时钟进行分频,产生需要的时钟节拍。在本设计中总共用到如下几个时钟节拍:1hz的时钟CLK,4HZ的时钟CLK_4hz,1Khz的时钟信号CLK_1K,和50hz的时钟displayclk。其中CLK节拍用于产生秒计时信号,在每个CLK的上升沿到来时秒计数器加1。CLK_4hz节拍用于快

30、速调整时间,当长时间按下CHANG按键时,当前设置的时钟快速增加11。CLK_1K节拍用于闹铃音的产生,displayclk时钟节拍是频率为50hz的信号,由于本设计中显示部分采用LED动态显示的方式,因此必需要有一个扫描信号对6位的LED的每个位进行轮流选通点亮。分频进程的原理是在CPLD内部设置一个分频计数器和一个触发器,当计数到分频值时触发器进行翻转,因此只要设置不同的分频计数器的计数值就可以得到不同的时钟节拍。在CPLD内部设置分频计数器的缺点是,CPLD的触发器资源有限,设置计数器对资源的占用比较大,因此尽量可能少用一些时钟节拍,或者尽量使需要使用的时钟节拍相同,还有一种方法是利用两

31、个已有的时钟信号进行逻辑运算从而获得想要的时钟节拍。系统的分频进程如下: module clk_generate(reset,sysclk,clk,clk_4hz,clk_1k,displayclk);input sysclk,reset;output clk,clk_4hz,clk_1k,displayclk;reg clk,clk_4hz,clk_1k,displayclk;reg 20:0div_count1; /分频时钟计数器,用于产生周期为1S的时钟信号reg 19:0div_count2; /分频时钟计数器,用于产生频率为4hz的时钟信号reg 11:0div_count3; /分

32、频时钟计数器,用于产生频率为1Khz的时钟信号reg 14:0divclk_cnt; /分频时钟计数器,用于产生50HZ的数码管扫描信号displayclkalways (posedge sysclk)beginif (reset) div_count1=21d0000000;if (div_count1=21d1024000) /1024000/2048000=0.5Sbeginclk=clk; /clk为周期为1S的时钟信号div_count1=21d0000000;endelse begindiv_count1=div_count1+1b1;endendalways (posedge s

33、ysclk)beginif (reset) div_count2=20d000000;if (div_count2=20d512000) /512000/2048000=0.25Sbeginclk_4hz=clk_4hz; /clk_4hz为4hz的时钟信号div_count2=20d000000;endelse begindiv_count2=div_count2+1b1;endendalways (posedge sysclk)begin /产生周期为50HZ和1KHZ的时钟节拍endendmodule4.3模式选择功能模块本设计是多功能数字钟,实现的功能是以数字形式显示时、分、秒的时间,

34、 能进行手动快校时、快校分或慢校时、慢校分。该多功能电子钟共有3种模式。分别为:模式0为正常时钟模式,模式1为设置闹铃功能,模式2为手动校时功能。多功能电子钟共有三个按键,一个MODE模式选择键,用于选择相应的模式,一个SET时间选择键,用于选择当前设定的是分钟或者是小时,一个CHANGE键,用于给当前值加1,当长时间按住CHANGE时当前值连续快速加1,用于快速设定时间12。模式选择进程如下所示。module mode_select( clk,mode,set,change,count1,counta,count2,countb,led_min,led_hour,m);input mode,

35、set,change,clk;output count1,counta,count2,countb,led_min,led_hour,m;regbool,count1,counta,count2,countb;reg 1:0m;reg led_min,led_hour;always (posedge mode)beginif (m=2) m=0;else m=m+1;endalways (posedge set)bool=bool;always (posedge clk)begincase(m)2: begin if (bool) begin /手动设定分钟count1=change;led_

36、min,led_hour=2b10;end else begin /手动设定小时 counta=change; led_min,led_hour=2b01;end count2,countb=2b00;end1:beginif (bool) begin /设定闹铃分钟 count2=change;led_min,led_hour=2b10;end else begincountb=change; led_min,led_hour=2b01;end count2,countb=2b00;enddefault: ount1,count2,counta,countb,led_min,led_hour

37、=0; /正常时钟状态endcaseendendmodule4.4 快速时间设置功能模块多功能数字钟要求有快速时间设置功能和慢设置功能。所谓快速时间设置功能是指一直按住按键不放时,当前值能够快速的增加;而慢设置是指每按一次按键则当前值向上增一。快速时间设置进程如下所示。快速时间设置进程,功能描述:长时间按下“change”键,则分别生成num1、num2、num3、num4信号用于连续快速加1。当长时间按下CHANGE按键后,利用系统的CLK_4HZ对计数器进行快速加一处理。如果不是长时间按下CHANGE按键的话则每按一次CHANGE按建键就对相应的寄存器的值加一处理。4.5 秒、分、时计时与

38、时间调整模块秒计时程序采用周期为1S的基准时钟信号CLK,在每个CLK时钟信号的上升沿对秒寄存器加1,当长时间按下SET按键后对秒寄存器进行清零,该功能用于准确校时。CT1为分计时的同步时钟,在每个CT1时钟信号的上升沿对分寄存器加1。当未长时间按下CHANGE按键时,CT1时钟是周期为60秒的时钟信号。当长时间按下CHANGE后,CT1时钟变为周期为4HZ的时钟信号,该信号用于快速时间校准功能。CTA时钟是周期为60分钟的时钟信号,在每个CTA时钟信号的上升沿对小时寄存器加1,当当前设置值为小时且长时间按下CHANGE按键后,CTA时钟变为周期为4HZ的时钟信号,该信号用于快速时间校准功能。

39、module time_mode0(clk,set,m,count1,ct1,counta,m_clk,h_clk,cta,sec1,min1,hour1);input clk,set,m,count1,counta,ct1,cta,m_clk,h_clk;inout 7:0sec1,min1,hour1;reg minclk,hclk;reg 7:0sec1,min1,hour1;wire m_clk,h_clk;always (posedge clk)beginif (!(sec1 8d59) | set & (!m)/按住SET键一段时间,秒信号自动清零sec1 7:0 = 8h00;i

40、f (!(set & (!m) minclk =1b1;else begin if (sec13:0=4b1001)begin sec13:0=4b0000;sec17:4=sec17:4 + 1b1;endelse beginsec13:0 = sec13:0 + 1b1;minclk=1b0;endendendalways (posedge ct1) /分钟计时进程beginif (min1 = 8d59)begin min1 = 0; hclk = 1;endelse begin if (min13:0 =9)begin min13:0 =0;min17:4=min17:4 + 1;en

41、delse beginmin13:0 =min13:0 +1;hclk =0;endendendalways (posedge cta) /小时计时与调整进程beginif (hour1=8h23) hour1=0;else begin /此段VHDL语言时、分、秒源码见附录二endendendmodule4.6闹铃时间设置模块module alarm_set(ct2,ctb,amin,ahour);input ct2,ctb;output 7:0amin,ahour;reg 7:0amin,ahour;always (posedge ct2)beginif (amin=8d59) amin=

42、0;else if (amin3:0=9)begin amin3:0=0;amin7:4=amin7:4 + 1;endelse amin3:0=amin3:0 + 1;endalways (posedge ctb)beginif (ahour=8d23) ahour=0;else if (ahour3:0=9)begin ahour3:0=0;ahour7:4=ahour7:4 + 1;endelse ahour3:0=ahour3:0 + 1; endendmodule4.7闹铃与整点报时模块闹铃的功能是实现当到达预设的时间点时产生为时20s的“嘀嘀嘀嘀”急促短音。整点报时的功能是实现在每

43、个整点的5秒钟前产生整点报时音,报时音为“嘀嘀嘀-嘟”4短一长音。 module alarm(sysclk,clk_1k,min1,hour1,amin,ahour,alarm1,alarm2);input sysclk,clk_1k;input 7:0min1,hour1,amin,ahour;output alarm1,alarm2;reg alarm1,alarm2;reg 7:0sec1;always (posedge sysclk)beginif (min1=amin)&(hour1=ahour)if (sec18d20) alarm1=1;else alarm1=0;else al

44、arm18d54)|(!(min1|sec1)if (sec18d58) alarm2=clk_1k; / 产生长音else alarm2=clk_1k; /产生短音else alarm2=0;endendmodule4.8 七段显示译码模块由于时钟计数模式采用的是BCD码计数方式,而显示采用的8段发光二极管,每个段代表一位二进制数,在本系统中采用的是共阳极接法,因此7段码为共阳编码。因此在数码管上正常显示时间的话,必需要对在三个模式下的时、分、秒进行译码才能得到正常的显示。module decoder_7seg(sysclk,clk,clk_4hz,clk_1k,m,alarm1,alarm

45、2,ahour,amin,min1,hour1,sec1,hour_msb,hour_lsb,min_msb,min_lsb,sec_msb,sec_lsb);input sysclk,clk,clk_4hz,clk_1k, alarm1,alarm2;input 7:0ahour,amin,min1,hour1,sec1;input 1:0m;output 7:0hour_msb,hour_lsb,min_msb,min_lsb,sec_msb,sec_lsb;reg 7:0hour,min,sec,hour_msb,hour_lsb,min_msb,min_lsb,sec_msb,sec_lsb;wire led_alarm;always (posedge sysclk)begincase(m) 3b00: /在模式0下,将正常计数值赋值给寄存器,等待译码begin hour=hour1;min=min1;sec=sec1;end3b01: /在模式1下,将闹铃时间设置值赋值给寄存器,等待译码begin hour=ahour;min=amin;sec=8hzz;end3b10: /在模式2下

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号