数电设计数字钟基于QUARTUS

合集下载

数字逻辑电路设计多功能数字钟

数字逻辑电路设计多功能数字钟

数字逻辑电路设计-多功能数字钟多功能数字钟摘要:实验作品名为多功能数字钟,具有校时、清零、保持、整点报时、闹钟五大功能。

整个实验以QuartusII 7.0为软件设计基础,结合Altera公司研发的Cyclone系列可编程逻辑器件工具箱进行实际测试。

整个数字钟的开发完全遵照自顶向下的设计方法,这个设计因为该方法可移植性强、逻辑符合一般规律、可多人共做等优点而得以为设计人员省去大量时间和精力。

本作品在防抖动电路和蜂鸣器鸣响时长控制上拥有一定的自主创新性和理论证明,同时由于整个设计过程当中适当地对每个器件进行了有机的封装,所以电路图的逻辑关系较为清晰。

现在数字钟因其在日常生活生产中的作用而成为可盈利的商品,在金钱的驱动下数字钟的设计方法及本实验作品相比功能和效率上都有非常大的提升,故本实验的目的在于让设计者充分了解数字逻辑电路设计的流程和具体软件的使用方法。

关键词:数字钟,可编程逻辑器件,防抖动电路,学习型设计The design of Multifunctional digital clock Abstract: This experimental product is called Multifunctional digital clock. It has five majorfunctions such as time setting, resetting, holding,alarming, and beeping when it comes to an additionto the hour. The whole experiment is based on the software of design called Quartus II 7.0 and is tested by combining the Cyclone series of programmable logical device provided by Altera. The clock is designed under the process of ‘from the top to the end’. The method spares designers lots of time and energy for its flexibility to be transplanted, easiness for ordinary logic reasoning and availability for cooperative designing. The product is self-creative and provable in terms of turbulence muting and manipulation of the period of beeping. At the same time, the diagrams of the circuits are apparently logical thanks to well-organized sealing of each part of device during the design. In this era of common concept of inexpensiveness of digital clocks, methods and effectiveness of designing a clock are improved due to its profitability. Hence, this experimental designis aimed at letting the participants to understand the process of digital logic circuits designing and to get to familiar with the usage of particular software.Keyword: Digital Clock, programmable logic device, mute circuit, design for learning目录一.设计要求及说明 (4)二.方案论证……………………………………………………………… (4)1.设计整体思路2.设计大体流程三.各子模块设计原理及调试仿真 (5)1.时钟发生器 (5)2.计时电路 (7)3.显示电路 (9)4.校分电路和清零电路 (12)5.报时电路 (13)6.储时电路 (15)7.选择电路 (16)8.闹钟比较电路 (16)9.其他 (1)7四.编程下载1.整体电路图 (18)2.管脚配置 (19)3.编译调试 (19)五.实验感想一.设计要求及说明1、能进行正常的时、分、秒计时功能2、分别由六个数码管显示时分秒的计时3、使能开关4、清零开关5、校分开关6、校时开关7、使时钟具有整点报时功能(当时钟计到59’53”时开始报时,在59’53”, 59’55”,59’57”时报时频率为512Hz,59’59”时报时频率为1KHz, )8、闹表设定功能9、自己添加其他功能二.方案论证1.设计整体思路图1数字钟的功能设计思路大致如图1时钟发生电路:位计时电路提供频率为1HZ的稳定脉冲,该电路是整个时钟是否精准的关键计时电路:由时钟发生器驱动,存储并演绎时间的流逝储时电路(闹钟):储存一个固定的时间选择电路:由输入端控制调校或显示储时电路和计时电路中的一个显示电路:将两个时间电路的输出信号调制成可输出的信号报时电路:根据时间信号以一定的模式输出符合要求的蜂鸣器驱动信号校分电路:使时间电路脱离时钟驱动并以累加的方式分别调校时及分清零电路:使时钟电路的所有信号归零2设计大体流程1)设计时钟发生电路及计时电路2)连接两个模块并调试电路,分别用LED灯检测时分秒的运行状况3)设计显示电路并单独调试4)连接时钟电路和显示电路并调试,整体调试时钟电路5)设计校分电路和清零电路并连接调试6)设计报时电路并单独调试7)连接报时及时钟电路,利用已调校好的调分清零电路调校报时电路的功能8)设计储时电路(在计时电路上适当修改)9)设计选择电路将计时电路和储时电路连接,调校选择电路以保证时间及调校显示的接口功能正常10)整体调试并增加诸如防抖动等优化电路三.各子模块的设计原理及调试1.时钟发生器图2时钟发生器设计思路大致如图21)十六分频电路由四个T触发器异步连接而成2)图3实时(timing)仿真如图4图4有仿真图波形可初步断定用4*T触发器一步连接对高频信号进行16分频是不会产生明显延迟和错位现象3)一千分频电路由三个十进制加法计数器连接而成,连接方式是:低位计数器的QD端及高位计数器的CLK端相连图5为方便今后对十分频器的使用在此对其进行了封装,仿真波形图如下图6输入波周期为10ns,由图6所示仿真图中的时间条可看出,在Timing模式下1000分频电路对高频信号几乎无延迟及错位,同时可看出该分频器的占空比为1:10。

根据QuartusII软件的数字时钟设计

根据QuartusII软件的数字时钟设计
ten :buffer std_logic_vector(3 downto 0);
full:out std_logic);
end component;
component scan6----------------------------------------------------------------元器件4
Port(clr,clk:in std_logic;
one :buffer std_logic_vector(3 downto 0);
ten :buffer std_logic_vector(3 downto 0);
full:out std_logic;
dout:buffer std_logic_vector(7 downto 0));
3.2.2 count60组件
由此提供分(秒)计数值,当分计数器计数到59再来一个脉冲信号秒计数器清零从新开始计数,而进位则作为小时计数器的计数脉冲,使小时计数器计数加1,同时分计数器在分设置时钟信号的响应下设置分计数器的数值。在count60组件中,个位(one)和十位(ten)分别计数,都设为二进制四位矢量形式,当个位从0计到9时,在下一个clk上升沿来临后,十位进1,个位变0,十位从0到5计数,在十位为5,个位9的时候,下一个上升沿来临后,十位个位都变0,进位full加1。因此在程序设计中需要两个进程process来分别完成计数,秒计数以1Hz的输入为触发信号,分计数以秒的full信号为触发信号。具体的count60的组件代码如下:
component div40M------------------------------------------------------------------元器件1

基于QuartusII的多功能数字钟设计

基于QuartusII的多功能数字钟设计

EDA技术与VHDL课程大作业学号:姓名:多用途数字时钟设计摘要:应用QuartusII9。

0软件采用模块化设计方法设计一数字时钟,用原理图输入进行设计,使之具有清零、整点报时、闹钟设置、彩铃和星期显示调节等功能.软件仿真调试成功后编译下载至可编程实验系统SmartSOPC中进行硬件测试。

关键词:译码器脉振 QuartusII 清零计数器蜂鸣器锁存目录一设计内容简介 (1)二设计要求 (1)三方案论证(整体电路设计原理) (1)四子模块设计原理4.0 脉冲产生电路 (4)4.1 计时电路 (7)4.2 显示电路 (11)4.3 保持电路 (13)4.4 清零电路 (13)4.5 校分电路 (14)4。

6 校时电路 (14)4.7 整点报时电路 (14)4.8 闹钟设定电路 (16)4。

9 音乐产生电路 (17)4。

10 闹钟报时电路 (22)4.11 闹铃关闭电路 (23)4.12 星期调整电路 (24)4.13 电路总图 (26)五实验中遇到问题及解决法 (27)六结论 (28)七参考文献 (28)一、设计内容简介设计一数字时钟,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等功能。

我们设计的电路在具有基本功能的基础上,增加了下列功能:整点报时、闹钟设置、彩铃和星期显示调节功能。

二、设计要求2。

0 基本要求1、能进行正常的时、分、秒计时功能;2、分别由六个数码管显示时分秒的计时;3、K1是系统的使能开关(K1=0正常工作,K1=1时钟保持不变);4、K2是系统的清零开关(K2=0正常工作,K2=1时钟的分、秒全清零);5、K3是系统的校分开关(K3=0正常工作,K3=1时可以快速校分);6、K4是系统的校时开关(K4=0正常工作,K4=1时可以快速校时);2。

1 提高部分要求1、使时钟具有整点报时功能(当时钟计到59’53”时开始报时,在59’53”, 59’55",59’57”时报时频率为512Hz,59’59”时报时频率为1KHz);2、闹表设定功能;三、方案论证本实验在实现实验基本功能的基础上,加入了整点报时、闹钟设置、彩铃和星期显示调节功能。

基于quartus的电子钟

基于quartus的电子钟

电子线路设计Ⅱ——基于QuartusII软件的数字钟姓名:范征东5指导老师:黄建宇郝磊多功能数字钟设计一、设计内容简介电子数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,因此得到了广泛的使用。

电子数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

因此,此次设计与制做电子数字钟就是可以了解电子数字钟的原理,学会制作电子数字钟。

通过电子数字钟的制作能进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法,通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。

这次电子数字钟的设计主要是利用74LS90的计数功能来实现电子钟时、分、秒的跳变,整个设计主要分为六个模块:时模块、分模块、秒模块、分频模块、校时校分模块、整点报时模块。

时、分、秒模块分别用两块74LS90实现,并且分别将它们设置为60进制,60进制,24进制。

秒信号的产生用石英晶体振荡器加分频器来实现,将秒信号送入秒模块,每累计60秒发出一个分脉冲信号,分模块每累计60分钟,发出一个时脉冲信号,时模块实现对24小时的累计,通过六个七段数码管显示出来。

整点报时电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到蜂鸣器实现报时。

校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。

本数字钟以计时为基本功能,可以完成00:00:00到23:59:59,以及星期一至星期日的计时功能,并在控制电路的作用下具有保持、快速校时、快速校分的功能。

在具有基本功能的基础上,增加了下列扩展功能:闹钟、整点报时功能。

数字计时器是由分频电路、计时电路、控制电路、译码显示电路等几部分组成的。

其中,分频电路将试验箱提供的48Mhz 的频率分成各模块电路所需要的频率;计时电路完成计时功能,并与动态显示电路相连,将时间、日期、星期等信息显示在七段数码管上;秒表电路启动后可完成最小单位为0.01秒的计时;以上各部分电路均与译码显示电路连接,将以上数据分别显示,通过按钮切换。

基于QuartusII以及74ls192为核心的简易数字时钟设计

基于QuartusII以及74ls192为核心的简易数字时钟设计

基于QuartusII以及74ls192为核心的简易数字时钟设计版权信息:重庆文理学院电子电气工程学院作者:电子信息科学与技术学生廖智星该项目是利用QuartusII软件设计一个数字钟,进行试验设计和仿真调试,实现了计时,校时,校分,保持和整点报时功能,并下载到FPGA实验系统中进行调试和验证。

此外还添加了显示星期,使得设计的数字钟的功能更加完善。

关键字:QuartusII EDA FPGA 数字钟 74ls192This experiment is to design a digital clock using QuartusII software, debugging test design and simulation, to achieve timing, timing, school hours, maintain and the whole point timekeeping function, and download the debugging and verification of FPGA experimental system. In addition also added that week, making digital clock design features more perfect.Keywords: QuartusII EDA FPGA 74LS192 digital clock目录1.设计要求 (1)2.工作原理 (1)3.各模块设计的说明 (2)4.实物效果 (7)5、总结 (11)一、设计要求1.设计一个数字计时器,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、调时的基本功能。

2.具体要求如下:1)能进行正常的时、分、秒计时功能,最大计时显示23小时59分59秒。

2)分别由7个数码管显示,前面6个进行时分秒的计时显示,最后一个。

根据QuartusII的数字时钟的设计

根据QuartusII的数字时钟的设计

根据QuartusII的数字时钟的设计基于QuartusII的数字时钟的设计摘要QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD 设计流程。

QuartusII使用户可以充分利用成熟的模块,简化了设计的复杂性,加快了设计速度。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

数字钟是一种用数字电路实现时、分、秒计时的装置,与机械实施中相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到了广泛的使用。

在对EDA的课程有了初步的了解并掌握Quartus II软件的初步应用之后,我们决定将课题设置为应用Quartus II软件,设计出一个时间可调,并可以通过LED七段共阴极数码管来显示时、分、秒的简易数字钟。

关键词:QuartusII;VHDL;EDA;数字钟SummaryQuartusII is Altera company comprehensive PLD/FPGA development software, support principle diagram, VHDL, VerilogHDL and AHDL design input in the form of embedded own comprehensive device simulators, and can be done from the design input to the hardware configuration of the complete PLD design process.QuartusII allow users to take full advantage of mature modules, simplifies the design complexity, speed up the design.Good support for third-party EDA tools also allow users to use in the different stages of the design process is familiar withthird-party EDA tools.Digital clock is a kind of when using a digital circuit implementation, minutes and seconds timing device, a higher accuracy compared with the implementation of the mechanical and intuitive, and no mechanical device, has a longer service life, has been widely used.In the course of EDA have a preliminary understanding and mastering the Quartus II software after the initial application, we decided to set the topic for the application of the Quartus II software, design a time is adjustable, and can be through the 7 common cathode LED digital tube display hours, minutes and seconds of simple digital clock.Keywords:QuartusII;VHDL;EDA;digital clock目录摘要 (1)绪论 (5)1.课程设计的目的与作用 (7)2.设计任务 (7)3.QuartusII软件介绍 (7)4.相关理论 (8)4.1 理论 (8)4.2 器件 (8)5. 系统设计 (8)5.1 总体 (8)5.2 各模块 (9)5.2.1 顶层模块 (9)5.2.2 十进制计数器模块 (9)5.2.3 六进制计数器模块 (10)5.2.4 二十四进制计数器模块 (10)5.2.5 7段LED显示驱动模块 (11)6. 硬件设计 (11)6.1 顶层实体图 (11)6.2 各模块实体图 (12)6.2.1 十进制计数器模块 (12)6.2.2 六进制计数器模块 (12)6.2.3 二十四进制计数器模块 (13)6.2.4 7段LED显示驱动模块 (13)6.3 总体实体图 (14)7. 流程图设计 (15)8.模块设计实现 (16)8.1建立顶层模块 (16)8.1.1新建dianzizhong.工程 (16)8.1.2建立VHDL源程序 (16)8.2建立十进制计数器模块 (18)8.2.1新建CNT10.工程 (18)8.2.2建立VHDL源程序 (18)8.3建立六进制计数器模块 (19)8.3.1新建CNT6.工程 (19)8.3.2建立VHDL源程序 (19)8.4建立二十四进制计数器模块 (20)8.4.1新建CNT24.工程 (20)8.4.2建立VHDL源程序 (20)8.5建立7段LED显示驱动模块 (21)8.5.1新建LED_DRIV.工程 (21)8.5.2建立VHDL源程序 (22)9.仿真调试结果分析 (22)9.1顶层模块的编译与波形仿真 (22)9.2十进制计数器模块的编译与波形仿真 (23) 9.3六进制计数器模块的编译与波形仿真 (24) 9.4二十四进制计数器模块的编译与波形仿真 (25)9.5 7段LED显示驱动模块的编译与波形仿真 (26)10. 结论 (27)11.设计总结和体会 (27)12. 致谢 (28)13. 参考文献 (29)绪论1.研究的意义在快速发展的年代,时间对于人们来说越来越宝贵,在快节奏的生活中,人们往往会忘记了时间,一旦在一些重要的场合忘记了时间,将会带来重大的损失。

基于QuartusⅡ可校时电子钟的设计

基于QuartusⅡ可校时电子钟的设计

工 业 技 术114科技资讯 SCIENCE & TECHNOLOGY INFORMATIONDOI:10.16661/ki.1672-3791.2018.09.114基于QuartusⅡ可校时电子钟的设计孙浩程(衡水市第十三中学 河北衡水 053000)摘 要:本文介绍了基于Altera公司开发的QuartusⅡEDA软件,该软件功能强大且界面友好,在此基础上利用原理图和VHDL语言设计可校时的电子钟 。

QuartusⅡ软件具有极其丰富的功能单元,可搭接的灵活性能够满足具有复杂性和创造性的理想开发平台, 本文利用QuartusⅡEDA软件设计可校时的电子钟,达到了预期的开发设计效果。

该电子钟具有计时、清零、校时、报时等基本功能。

关键词:QuartusⅡ EDA 可校时 电子钟 中图分类号:TN70 文献标识码:A 文章编号:1672-3791(2018)03(c)-0114-02QuartusⅡ是Altera公司的综合性PLD /FPGA开发软件,界面友好,使用便捷,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的EDA工具软件。

支持原理图、VHDL、Verilog HDL以及AHDL(A1tera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

对于CPLD、FPGA、SOC和HardCopy ASIC设计,Altera Quartus Ⅱ软件在性能和效能上是业界首屈一指的软件[1-2]。

本文采用Quartus Ⅱ来设计可校时的电子钟。

1 设计原理本多功能数字钟具有的功能有:显示时—分—秒、整点报时,可校准。

根据钟表的工作机理,整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1s,当秒从59s跳转到00s时,分钟增加1分,分钟在59分跳转到00分时,小时增加1小时,小时的范围是从0~23时。

基于-Quartus多功能数字钟设计

基于-Quartus多功能数字钟设计

基于Quartus的多功能数字钟设计该实验是利用QuartusII软件设计一个数字钟,进展试验设计和仿真调试,实现了计时,校时,校分,清零,保持和整点报时等多种根本功能,并下载到SmartSOPC实验系统中进展调试和验证。

此外还添加了显示星期,闹钟设定,秒表和彩铃等附加功能,使得设计的数字钟的功能更加完善。

一、设计要求1.设计一个数字计时器,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等根本功能。

2.具体要求如下:1)能进展正常的时、分、秒计时功能,最大计时显示23小时59分59秒。

2)分别由六个数码管显示时分秒的计时。

3)K1是系统的使能开关,K1=0正常工作,K1=1时钟保持不变。

4)K2是系统的清零开关,K2=0正常工作,K2=1时钟的分、秒全清零。

5)在数字钟正常工作时可以对数字钟进展快速校时和校分。

K3是系统的校分开关,K3=0正常工作K3=1时可以快速校分;K4是系统的校时开关,K4=0正常工作,K4=1时可以快速校时。

3.设计提高局部要求1)时钟具有整点报时功能,当时钟计到59’51〞时开场报时,在59’51〞,59’53〞, 59’55〞,59’57〞时报时频率为512Hz,59’59〞时报时频率为1KHz。

2)星期显示:星期显示功能是在数字钟界面显示星期,到计时到24小时时,星期上显示的数据进一位。

3)闹表设定:通过开关切换显示至闹钟界面,利用闹钟校时和校分开关对闹钟时间进展设定,且不影响数字钟计时。

当计时到闹钟设定时间蜂鸣器鸣叫,并响起彩铃。

4)秒表计时:通过开关切换显示至秒表界面,分秒局部是100进制的,即当值为99时向秒位进位。

4.仿真与验证用Quartus软件对设计电路进展功能仿真,并下载到实验板上对其功能进展验证。

二、工作原理数字计时器是由计时电路、译码显示电路、脉冲发生电路和控制电路等几局部组成的,控制电路按要求可由校分校时电路、清零电路和保持电路组成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大连理工大学本科实验报告题目:数电课设——多功能数字钟课程名称:数字电路课程设计学院(系):电信学部专业:电子与通信工程班级:学生姓名: ***************学号:***************完成日期:成绩:2010 年 12 月 17 日题目:多功能数字时钟一.设计要求1)具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)2)具有手动校时校分功能3)具有整点报时功能,从59分50秒起,每隔2秒钟提示一次4)具有秒表显示、计时功能(精确至百分之一秒),可一键清零5)具有手动定时,及闹钟功能,LED灯持续提醒一分钟6)具有倒计时功能,可手动设定倒计时范围,倒计时停止时有灯光提示,可一键清零二.设计分析及系统方案设计1. 数字钟的基本功能部分,包括时、分、秒的显示,手动调时,以及整点报时部分。

基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。

利用DE2硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。

将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。

进入手动调时功能时,通过按键改变控制计数器的时钟周期,使用的时钟脉冲进行调时计数(KEY1调秒,LOAD2调分,LOAD3调时),并通过译码器由七位数码管显示。

从59分50秒开始,数字钟进入整点报时功能。

每隔两秒提示一次。

(本设计中以两个LED灯代替蜂鸣器,进行报时)2. 多功能数字钟的秒表功能部分,计时范围从00分秒至59分秒。

可由输入信号(RST1)异步清零,并由按键(EN1)控制计时开始与停止。

将DE2硬件中的50MHZ晶振经过分频获得周期为秒的时钟脉冲,将信号送入计数器进行计算,并把累计结果通过译码器由七位数码管显示。

3.多功能数字钟的闹钟功能部分,通过按键(KEY1,KEY2,KEY3)设定闹钟时间,当时钟进入闹钟设定的时间(判断时钟的时信号qq6,qq5与分信号qq4,qq3分别与闹钟设定的时信号r6,r5与分信号r4,43是否相等),则以LED灯连续提示一分钟。

4. 多功能数字钟的倒计时功能部分,可通过按键(LOAD7调秒,LOAD8调分,LOAD9调时)设定倒计时开始时刻。

倒计时的时钟与数字钟的时钟相同,每迎到一个时钟上升沿,则计数器减一。

计数器减至00时,分钟位、秒钟位恢复至59,时钟位恢复至23。

倒计时结束时(即00时00分00秒),控制LED灯亮,表示倒计时结束。

本设计通过数据选择器控制译码器,使数码管独立显示,各功能之间互不影响。

当LOAD4为高电平,则对秒表信号进行译码,数码管显示秒表数据;当LOAD4为低电平,LOAD5为高电平,则对闹钟信号进行译码,数码管显示闹钟数据;当LOAD4,LOAD5为低电平,LOAD6为高电平,则对倒计时信号进行译码,数码管显示倒计时信号数据;当LOAD4,LOAD5,LOAD6全为低电平,则对正常时钟信号进行译码,数码管显示时钟信号数据。

附图1:系统总体结构框图附图2系统硬件电路设计下载时选择的开发系统模式以及管脚定义四系统的VHDL设计源程序:--代码共372行library ieee;use clock isport( load9,load8,load7,load6,load5,load4,load3,load2,load1:instd_logic;clk,rst1,rst2,en1,en2,key1,key2,key3:in std_logic;q1,q2,q3,q4,q5,q6:out std_logic_vector(6 downto 0);led1,led2,led3,led4,led5:out std_logic);end;architecture a of clock issignal qq1,qq2,qq3,qq4,qq5,qq6:std_logic_vector(3 downto 0);--数字钟计数器信号signal vis1,vis2,vis3,vis4,vis5,vis6:std_logic_vector(3 downto 0);signal cp1,cp2,cp3,cp4,cp5:std_logic;signal p1:integer range 0 to 49;signal p2:integer range 0 to 999;signal p3:integer range 0 to 999;signal clfsa:integer range 0 to 499;signal a,b,c,d,e,f,g: std_logic_vector(3 downto 0);--秒表计数器信号signal r1,r2,r3,r4,r5,r6:std_logic_vector(3 downto 0);--闹钟信号signal z1,z2,z3,z4,z5,z6:std_logic_vector(3 downto 0);--倒计时计数器信号signal alz1,alz2,alz3,alz4,alz5:std_logic;Begin-----------------------------------------------------------------------分频模块-------------------------------------------------------------------------------------process(clk) --分频1beginif rising_edge(clk) thenif p1=49 thenp1<=0;cp1<='1';elsep1<=p1+1;cp1<='0';end if;end if;end process;process(cp1) --分频2beginif rising_edge(cp1) thenif p2=999 thenp2<=0;cp2<='1';elsep2<=p2+1;cp2<='0';end if;end if;end process;process(cp2) --得到周期为1秒的信号beginif rising_edge(cp2) thenif p3=999 thenp3<=0;cp3<='1';elsep3<=p3+1;cp3<='0';end if;end if;end process;process(cp2) --得到周期为百分之一秒的信号beginif rising_edge(cp2) thenif a="1001" then a<="0000";a1<='1';else a<=a+1;a1<='0';end if;e nd if;process(cp2) --得到周期为秒的信号beginif rising_edge(cp2) thenif clfsa=499 thenclfsa<=0;hlfs<='1';elseclfsa<=clfsa+1;hlfs<='0';end if;end if;end process;-----------------------------------------------------------------------数字钟模块----------------------------------------------------------------------------------process(cp3,load1,key1) --数字钟秒钟计数器beginif rising_edge(cp3) thenif load1='1' thenif key1='0' then --秒钟手动调节if qq2="0101" and qq1="1001"then qq1<="0000"; qq2<="0000";elsif qq1="1001" thenqq1<="0000";qq2<=qq2+1;else qq1<=qq1+1;end if;end if;else if load1='0' thenif qq2="0101" and qq1="1001"then qq1<="0000"; qq2<="0000";cp4<='1';elsif qq1="1001" thenqq1<="0000";qq2<=qq2+1;cp4<='0';else qq1<=qq1+1;cp4<='0';end if;if qq2="0101" and en='1' then --整点报时case qq1 iswhen "0001"=>led2<='1';when "0011"=>led2<='1';when "0101"=>led2<='1';when "0111"=>led2<='1';when "1001"=>led3<='1';when others =>led2<='0';led3<='0';end case;else led2<='0';led3<='0';end if;end if;end if;end if;process(hlfs,cp4,load2) --数字钟分钟计数器beginif load2='1' then clkx<=hlfs;else clkx<=cp4;end if; --当load2为高电平时,进行分调节if rising_edge(clkx)thenif qq4="0101" and qq3="1001"then qq3<="0000"; qq4<="0000";cp5<='1';elsif qq3="1001" thenqq3<="0000";qq4<=qq4+1;cp5<='0';else qq3<=qq3+1;cp5<='0';end if;end if;i f qq3="1001" and qq4="0101" then en<='1';else en<='0';end if;end process;process(hlfs,cp5,load1) --数字钟时钟计数器beginif load3='1' then clkx1<=hlfs;else clkx1<=cp5;end if; --当load3为高电平时,进行小时调节if rising_edge(clkx1) thenif qq5="0011" and qq6="0010" thenqq5<="0000"; qq6<="0000";elsif qq5="1001" thenqq5<="0000";qq6<=qq6+1;else qq5<=qq5+1;end if;end if;end process;-----------------------------------------------------------------------闹钟模块-------------------------------------------------------------------------------------process(hlfs,load5,key1) --闹钟秒计数器beginif rising_edge(hlfs) thenif load5='1' thenif key1='0' then --手动进行闹钟秒设定if r2="0101" and r1="1001"then r1<="0000"; r2<="0000";elsif r1="1001" thenr1<="0000";r2<=r2+1;else r1<=r1+1;end if;end if;end if;end if;end process;process(hlfs,load5,key2) --闹钟分计数器beginif rising_edge(hlfs) thenif key2='0' then --手动进行闹钟分设定if r4="0101" and r3="1001"then r3<="0000"; r4<="0000";elsif r3="1001" thenr3<="0000";r4<=r4+1;else r3<=r3+1;end if;end if;end if;end if;end process;process(hlfs,load5,key3) --闹钟小时计数器beginif rising_edge(hlfs) thenif load5='1' thenif key3='0' then --手动进行闹钟小时设定 if r6="0010" and r5="0011"then r5<="0000"; r6<="0000";elsif r5="1001" thenr5<="0000";r6<=r6+1;else r5<=r5+1;end if;end if;end if;end if;end process;process(cp3,qq1,qq2,qq3,qq4,qq5,qq6,r1,r2,r3,r4,r5,r6) --数字钟与闹钟相符,以LED灯进行提示beginif rising_edge(cp3) thenif qq3=r3 and qq4=r4 and qq5=r5 and qq6=r6then led1<='1';else led1<='0';end if;end if;end process;-----------------------------------------------------------------------秒表模块-------------------------------------------------------------------------------------process(a1,rst1,en1) --秒表计数器beginif rst1='1' then b<="0000";c<="0000"; --秒表异步清零elsif rising_edge(a1) thenif en1='1' thenif b="1001" and c="1001"then b<="0000";c<="0000";c1<='1';elsif b="1001" thenb<="0000";c<=c+1;c1<='0';else b<=b+1;c1<='0';end if;e nd if;end process;process(c1,rst1,en1)beginif rst1='1' then d<="0000";e<="0000";elsif rising_edge(c1) thenif en1='1' thenif d="1001" and e="0101"then d<="0000";e<="0000";e1<='1';elsif d="1001" thend<="0000";e<=e+1;e1<='0';else d<=d+1;e1<='0';end if;end if;end if;end process;process(e1,rst1,en1)beginif rst1='1' then f<="0000";g<="0000";elsif rising_edge(e1) thenif en1='1' thenif f="1001" and g="0101"then f<="0000";g<="0000";elsif f="1001" thenf<="0000";g<=g+1;else f<=f+1;end if;end if;e nd if;e nd process;-----------------------------------------------------------------------倒计时模块----------------------------------------------------------------------------------process(cp3,rst2,en2,clkx2,load7,hlfs) --倒计时计数器beginif load7='1' then clkx2<=hlfs; else clkx2<=cp3;end if;if rst2='1' then z2<="0000";z1<="0000";alz1<='1'; --倒计时异步清零elsif rising_edge(clkx2) thenif en2='1' thenif z2="0000" and z1="0000"then z2<="0101";z1<="1001";alz1<='1';elsif z1="0000" thenz1<="1001";z2<=z2-1;alz1<='0';else z1<=z1-1;alz1<='0';end if;if z1="0001" and z2="0000"then led4<='1';else led4<='0';end if;end if;end if;e nd if;end process;process(alz1,rst2,en2,load8,clkx3,hlfs)beginif load8='1' then clkx3<=hlfs;else clkx3<=alz1;end if;if rst2='1' then z4<="0000";z3<="0000";alz2<='1';elsif rising_edge(clkx3) thenif z4="0000" and z3="0000"then z4<="0101";z3<="1001";alz2<='1';elsif z3="0000" thenz3<="1001";z4<=z4-1;alz2<='0';else z3<=z3-1;alz2<='0';end if;i f alz4='1' theni f z4<="0000" and z3<="0000"then alz5<='1';e lse alz5<='0';end if;end if;e nd if;end process;process(clkx4,alz2,rst2,en2,load9,hlfs)beginif load9='1' then clkx4<=hlfs;else clkx4<=alz2;end if;if rst2='1' then z6<="0000";z5<="0000";elsif rising_edge(clkx4) thenif z6="0000" and z5="0000"then z6<="0010";z5<="0011";elsif z5="0000" thenz5<="1001";z6<=z6-1;else z5<=z5-1;end if;i f z5="0000" and z6="0000" then alz4<='1';else alz4<='0';end if;e nd if;end process;process(z1,z2,z3,z4,z5,z6,hlfs,l)beginif rising_edge(hlfs)then if z1="0000" and z2="0000" and z3="0000" and z4="0000" and z5="0000" and z6="0000" thenl<=not l;else l<='0';end if;end if;led5<=l;------------------------------------------------------------------------------------------------------数据选择器,选择对数字钟,秒表,倒计时,闹钟其中之一进行译码显示------------------------------------------------------------------------------------------------------process(qq1,qq2,qq3,qq4,qq5,qq6,b,c,d,e,f,g,load4,load5,load6,r1,z1,r 2,z2,r3,z4,r5,z5,r6,z6)beginif load4='1' then vis1<=b;vis2<=c;vis3<=d;vis4<=e;vis5<=f;vis6<=g; else if load5='1' thenvis1<=r1;vis2<=r2;vis3<=r3;vis4<=r4;vis5<=r5;vis6<=r6;elsif load6='1' thenvis1<=z1;vis2<=z2;vis3<=z3;vis4<=z4;vis5<=z5;vis6<=z6;elsevis1<=qq1;vis2<=qq2;vis3<=qq3;vis4<=qq4;vis5<=qq5;vis6<=qq6;end if;end if;end process;------------------------------------------------------------------显示模块------------------------------------------------------------------------process(vis1,vis2,vis3,vis4,vis5,vis6)begincase vis1 iswhen "0000"=>q1<="1000000";when "0001"=>q1<="1111001";when "0010"=>q1<="0100100";when "0011"=>q1<="0110000";when "0100"=>q1<="0011001";when "0101"=>q1<="0010010";when "0110"=>q1<="0000010";when "0111"=>q1<="1111000";when "1000"=>q1<="0000000";when "1001"=>q1<="0010000";when others => null;end case;case vis2 iswhen "0000"=>q2<="1000000";when "0001"=>q2<="1111001";when "0010"=>q2<="0100100";when "0011"=>q2<="0110000";when "0100"=>q2<="0011001";when "0101"=>q2<="0010010";when "0110"=>q2<="0000010";when "0111"=>q2<="1111000";when "1000"=>q2<="0000000";when others => null;end case;case vis3 iswhen "0000"=>q3<="1000000"; when "0001"=>q3<="1111001"; when "0010"=>q3<="0100100"; when "0011"=>q3<="0110000"; when "0100"=>q3<="0011001"; when "0101"=>q3<="0010010"; when "0110"=>q3<="0000010"; when "0111"=>q3<="1111000"; when "1000"=>q3<="0000000"; when "1001"=>q3<="0010000"; when others => null;end case;case vis4 iswhen "0000"=>q4<="1000000"; when "0001"=>q4<="1111001"; when "0010"=>q4<="0100100"; when "0011"=>q4<="0110000"; when "0100"=>q4<="0011001"; when "0101"=>q4<="0010010"; when "0110"=>q4<="0000010"; when "0111"=>q4<="1111000"; when "1000"=>q4<="0000000"; when "1001"=>q4<="0010000"; when others => null;end case;case vis5 iswhen "0000"=>q5<="1000000"; when "0001"=>q5<="1111001"; when "0010"=>q5<="0100100"; when "0011"=>q5<="0110000"; when "0100"=>q5<="0011001"; when "0101"=>q5<="0010010"; when "0110"=>q5<="0000010"; when "0111"=>q5<="1111000"; when "1000"=>q5<="0000000"; when "1001"=>q5<="0010000"; when others => null;end case;case vis6 iswhen "0000"=>q6<="1000000"; when "0001"=>q6<="1111001"; when "0010"=>q6<="0100100"; when "0011"=>q6<="0110000";when "0101"=>q6<="0010010";when "0110"=>q6<="0000010";when "0111"=>q6<="1111000";when "1000"=>q6<="0000000";when "1001"=>q6<="0010000";when others => null;end case;end process;end;五结论以及结果说明系统的运行环境为DE2,主芯片为Cyclone II EP2C35F672C6NK.输入时钟信号选择50MHz。

相关文档
最新文档