实用多功能数字钟的设计_第1页
实用多功能数字钟的设计_第2页
实用多功能数字钟的设计_第3页
实用多功能数字钟的设计_第4页
实用多功能数字钟的设计_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘 要 伴随着集成电路(IC)技术的开展,电子设计自动化(EDA)逐渐成为重要的设计手段,己经广泛应用于模拟与数子电路系统等许多领域。电子设计自动化是一种实现电子系统或电子产品自动化设计的技术,使用EDA技术设计的结果既可以用FPGA / CPLD来实施验证,也可以直接做成专用集成电路(ASIC)。EDA的一个重要特征就是使用硬件描述语言(HDL)来完成的设计文件,在电子设计领域受到了广泛的接受。Verilog HDL是一种应用广泛的硬件描述语言,可用于从算法级、门级到开关级的多种抽象层次的数字系统设计。Verilog HDL语言最大的特点就是易学易用,通过学习和使用,可以在短时间内掌握该语言

2、。另外该语言的功能强大,可以满足各个层次设计人员的需要,从高层的系统描述到底层的幅员设计,都能很好地支持。本文就是用Verilog HDL语言来描述一个基于FPGA的多功能数字时钟的设计。该数字时钟具备准确计时,时间校准, 定时闹钟, 报时, 数字跑表等功能。本文首先介绍了EDA方面的根底知识,然后介绍了多功能数字时钟的设计以及源代码开发过程。源代码首先在Quartus软件上进行仿真、综合,通过后下载到电子箱上,在FPGA器件上的试验结果说明上述功能全部正确,工作稳定良好。【关键词】:EDA 数字时钟 Verilog AbstractElectronic Design Automation i

3、s an electronic system or electronic product design automation technology. EDA technology can be used in both FPGA and ASIC design. An important feature of EDA is the use of Hardware Description Languages (HDL) to complete the design in a uniform format. Verilog HDL is a widespread use of the hardwa

4、re description language can be used from the algorithm level, gate-level to switch-level of the various abstraction levels of system design. Verilog HDL greatest feature is easy to use, learn and use, in a short period of time can master the language. Meanwhile, the language of the powerful, all lev

5、els designed to meet the needs of the staff, The system from the top to bottom describing the layout, can better support. This paper is using Verilog HDL language to describe the design of an FPGA-based multifunctional digital timer. This timer has the function of accurate time clock, time calibrati

6、on, regular alarm clock, timer, digital stopwatch and so on. This paper first introduces the basic knowledge of the EDA, then introduces the design of the multifunctional digital clock and the development of the source code. After the simulation、synthesis on Quartus software, the source code downloa

7、ds to development box, test results on the FPGA devices shows that all of the above functions are correct and stable. 【Key Words】: EDA Digital Clock Verilog 目 录摘要.IAbstract.II 绪论.11.1 课题的目标及意义.11.2 有关多功能数字钟的开展和背景.11.3 设计研究的范围和内容.2第二章 Verilog HDL 的根底语言知识.32.1 硬件描述语言(HDL)概述32.2 为何使用硬件描述语言.32.3 硬件描述语言的

8、开展历史.42.4 HDL语言的主要特征.42.5 Verilog HDL 与 VHDL 的比拟.52.6 Verilog HDL设计流程及设计方法简介.51) 设计流程.62) 设计方法.61自下而上的设计方法.62自上而下(Top-Down)的设计方法.63综合设计方法.72.7 硬件描述语言的新开展.7第三章 电路仿真软件的使用.83.1 QuartusII简介-EDA工具设计.8第四章 多功能数字钟的设计和原理.124.1 数字钟的组成和工作原理.121数字钟的组成.122工作原理.124.2 设计步骤和方法.131) 数字钟的功能要求.131根本功能.132扩展功能.142) 主体电

9、路设计与程序.14160进制计数模块秒和分共用模块14224进制计数模块小时计数153100进制计数模块数字跑表毫秒计数.16460进制计数模块数字跑表秒和分计数185BCD码转换成4_7译码模块196主体程序顶层文件.20第五章 总结27致谢.28参考文献.29英文资料.30译文.34第一章 绪论1.1 课题的目标及意义钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时播送、定时启闭路灯等。所有这些,都是以钟表数字化为根底的。因此,研究数字钟及扩大其应用,有非常现实的意义。数字钟是一种用数字电路技术实现时、分

10、、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。 因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法. 1.2 有关多功能数字钟的开展和背景20世纪末,电子技术获得了飞速的开展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了

11、社会生产力的开展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么珍贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间。尤其在医院,每次护士都会给病人作皮试,测试病人是否对药物过敏。注射后,一般等待5分钟,一旦超时,所作的皮试试验就会无效。手表当然是一个好的选择,但是,随着接受皮试的人数增加,到底是哪个人的皮试到时间却难以判断。所以,要制作一个定时系统。随时提醒这些容易忘记

12、时间的人。钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时播送、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为根底的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 数字钟以成为人们日常生活中数字电子钟一般由振荡器,分频器,译码器,显示器等局部组成。数字钟的应用非常广泛,应用于人家庭以及车站。码头。剧场,办公室等公共场所,给人们的生活,学习,工作,娱乐带来极大的方便,由于数字集成电路技术的开展和采用了先进的石英技术,使数字钟具有走时准确,性能稳定,携带

13、方便等特点,它还用于计时,自动报时及自动控制等各个领域。 尽管目前市场上以有现成数字钟集成电路芯片出售,价格廉价这些都是数字电路中最根本的,应用最广的电路。数字电子钟的根本逻辑功能:它是一个将“时,“分,“秒显示于人的视觉器官的计时装置。利用EDA技术进行电子系统的设计具有以下几个特点:采用自顶向下的设计方法;用软件的形式设计硬件;用软件的方式设计过程中可用相关软件进行仿真;系统可现场编程,升级;整个系统集成在一个芯片上,体积小,功耗低,可靠性高.因此,EDA技术是现代电子设计的开展趋势.本设计采用EDA以硬件描述语言(Verilog HDL)为系统逻辑描述手段设计文件, Quartus II

14、工具软件环境下,采用自顶向下的设计发放,由各个根本模块共同构建了一个基于FPGA的数字时钟.1.3 设计研究的范围和内容 对所有设计的小系统能够正确分析;基于Verilog语言描述系统的功能;在quartus 环境中编译通过;仿真通过并得到正确的波形;掌握数字系统的分析和设计方法。能够熟练的、合理的选用集成电路器件。掌握数字钟的设计制作方法。数字钟具有显示时、分、秒的功能;有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;计时过程具有报时功能,当时间到达整点前10秒进行蜂鸣报时。 第二章 Verilog HDL 的根底语言知识硬件描述语言(HDL)概述硬件描述语( Hardware

15、 Description Language ) 是硬件设计人员和电子设计自动化( EDA ) 工具之间的界面。其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。即利用计算机的巨大能力对用Verilog HDL 或 VHDL 建模的复杂数字逻辑进行仿真,然后再自动综合以生成符合要求且在电路结构可以实现的数字逻辑网表 ( Netlist ) ,根据网表和某种工艺的器件自动生成具体电路,然后生成该工艺条件下这种具体电路的延时模型。仿真验证无误后,用于制造 ASIC 芯片或写入 EPLD 和 FPGA 器件中。在 EDA 技术领域中把用 HDL 语言建立的数字模型称为软核 ( Soft Co

16、re ), 把用 HDL建模和综合后生成的网表称为固核 ( Hard Core ), 对这些模块的重复利用缩短了开发时间提高了产品开发率,提高了设计效率。随着 PC 平台上的 EDA 工具的开展, PC 平台上的 Verilog HDL 和 VHDL 仿真综合性能已相当优越,这就为大规模普及这种新技术铺平了道路。目前国内只有少数重点设计单位和高校有一些工作站平台上的 EDA 工具,而且大多数只是做一些线路图和幅员级的仿真与设计,只有个别单位展开了利用 Verilog HDL 和 VHDL 模型 ( 包括可综合和不可综合的 ) 进行复杂的数字逻辑系统的设计。随着电子系统向集成化、大规模、高速度的

17、方向开展, HDL 语言将成为电子系统硬件设计人员必须掌握的语言。为何使用硬件描述语言传统的用原理图设计电路的方法已逐渐消失,取而代之,HDL 语言正被人们广泛接受,出现这种情况有以下几点原因:电路设计将继续保持向大规模和高复杂度开展的趋势。 90 年代,设计的规模将到达百万门的数量级。作为科学技术大幅度提高的产物,芯片的集成度和设计的复杂度都大大增加,芯片的集成密度已到达一百万个晶体管以上,为使如此复杂的芯片变得易于人脑的理解,用一种高级语言来表达其功能性而隐藏具体实现的细节是很必要的。这也就是在大系统程序编写中高级程序设计语言代替汇编语言的原因。工程人员将不得不使用HDL 进行设计,而把具

18、体实现留给逻辑综合工具去完成。电子领域的竞争越来越剧烈。刚刚涉入电子市场的成员要面对巨大的压力;提高逻辑设计的效率,降低设计本钱,更重要的是缩短设计周期。多方位的仿真可以在设计完成之前检测到其错误,这样能够减少设计重复的次数。因此,有效的 HDL 语言和主计算机仿真系统在将设计错误的数目减少到最低限方面起到不可估量的作用,并使第一次投片便能成功地实现芯片的功能成为可能。探测各种设计方案将变成一件很容易,很便利的事情,因为只需要对描述语言进行修改,这比更改电路原理图原型要容易实现得多。硬件描述语言的开展历史早期的集成电路设计实际上就是掩模设计;电路的规模是非常小的,电路的复杂度也很低,工作方式那

19、么主要依靠手工作业和个体劳动。 40 年后的今天,超大规模集成电路 ( VLSI ) 的电路规模都在百万门量极;由于集成电路大规模、高密度、高速度的需求,使电子设计愈来愈复杂,为了完成10万门以上的设计,需要制定一套新的方法。就是采用硬件描述语言设计数字电路。 HDL ( Hardware Desciption Language ) 于 1992 年由 Iverson提出,随后许多高等学校、科研单位、大型计算机厂商都相继推出了各自的HDL, 但最终成为IEEE技术标准的仅有两个,即VHDL和Verilog HDL 。Verilog HDL 语言提供非常简洁,可读性很强的句法,使用Verilog

20、 语言已经成功地设计了许多大规模的硬件。Verilog HDL 是在1983年,由GDA ( Gate Way Design Automation ) 公司的Phil Moorby首创的。Phil Moorby后来成为Verilog-XL的主要设计者和Cadence公司 ( Cadence Design System ) 的第一个合伙人。在1984-1985年Moorby设计出第一个关于Verilog-XL的仿真器,1986年他对Verilog HDL的开展又作出另一个巨大奉献,提出了用于快速门级仿真的XL算法。随着verilog_XL算法的成功,Verilog HDL语言得到迅速开展。198

21、9年,Cadence公司收购了GDA公司,Verilog HDL语言成为Cadence公司的私有财产。1990年,Cadence公司公开了Verilog HDL语言,成立了OVI ( Open Verilog Intermational )组织来负责Verilog HDL的开展。IEEE于1995年制定了Verilog HDL的IEEE标准,即Verilog HDL 1364-1995。1987年IEEE接受VHDL ( VHSIC Hadeware Description Language ) 为标准HDL,即IEEE1076-87标准,1993年进一步修订,定为ANSI/IEEE1076-

22、93标准。现在很多EDA供给商都把VHDL作为其EDA软件输入/输出的标准。例如,Cadence、 Synopsys、 Viewlogic、 Mentor Graphic等厂商都提供了对VHDL的支持。HDL语言的主要特征 HDL语言既包含一些高层程序设计语言的结构形式,同时也兼顾描述硬件线路连接的具体构件通过使用结构级或行为级描述,可以在不同的抽象层次描述设计。 HDL 语言采用自顶向下的数字电路设计方法,主要包括三个领域五个抽象层次,如表1所示:HDL语言是并发的,即具有在同一时刻执行多任务的能力。一般来讲编程语言是非并行的,但在实际硬件中许多操作都是在同一时刻发生的,所以HDL语言具有并

23、发的特征。HDL语言有时序的概念。一般来讲,编程语言是没有时序概念的,但在硬件电路中从输入到输出总是有延迟存在的,为描述这些特征HDL语言需要建立时序的概念。因此,使用HDL除了可以描述硬件电路的功能外,表 2-1 :HDL 抽象层次描述表2.5 Verilog HDL 与 VHDL 的比拟 由于Verilog HDL早在1983年就已推出,至今已有十三年的历史,因而Verilog拥有广泛的设计群体,成熟的资源比VHDL丰富。而Verilog HDL与VHDL相比最大的优点是:它是一种非常容易掌握的硬件描述语言,而掌握VHDL设计技术就比拟困难。 目前版本的Verilog HDL和VHDL在行

24、为级抽象建模的覆盖范围方面也有所不同。一般认为Verilog HDL在系统抽象方面比VHDL强一些。Verilog HDL较为适合算法级( Alogrithem )、存放器传输级 ( RTL )、逻辑级 ( Logic ) 、门级 ( Gate )、设计而VHDL更为适合特大型的系统级 ( System ) 设计。 Verilog HDL设计流程及设计方法简介2.6.1 设计流程见图 图 2-1 Verilog 设计流程注:1、 总体方案是芯片级的。2 、软件仿真用来检测程序上的逻辑错误。3 、硬件仿真要根据需要搭成硬件电路,检查逻辑和时序上的错误。使用FPGA ( 现场可编程门阵列 )速度比

25、正常慢10倍以上,而且只能检查逻辑错误,不能检查时序错误。2.6.2 设计方法.1自下而上的设计方法自下而上的设计是一种传统的设计方法,对设计进行逐次划分的过程是从存在的根本单元出发的,设计树最末枝上的单元,要么是已经制造出的单元,要么是其他工程已开发好的单元。或者是可外购得到的单元,这种设计方法与只用硬件在模拟实验板上建立一个系统的步骤有密切联系。优点:.设计人员对于用这种方法进行设计比拟熟悉。.实现各个子块电路所需的时间短。缺点:.一般来讲对系统的整体功能把握缺乏。.实现整个系统的功能所需的时间长,因为必须先将各个小模块完成。使用这种方法对设计人员之间相互进行协作有比拟高的要求。.2自上而

26、下( Top-Down )的设计方法自上而下的设计是从系统级开始,把系统划分为根本单元,然后再把每个根本单元划分为下一层次的根本单元,一直这样做下去,直到可以直接用EDA元件库中的元件来实现为止。优点:.在设计周期伊始就做好了系统分析。.由于设计的主要仿真和调试过程是在高层次完成的,所以能够早期发现结构设计上总体方案设计编程软件仿真综合硬件仿真网表的错误,防止设计工作的浪费,同时也减少了逻辑仿真的工作量。自顶向下的设计方法方便了从系统划分和管理整个工程,使得几十万门甚至几百万门规模的复杂数字电路的设计成为可能。并可减少设计人员,防止不必要的重复设计,提高了设计的一次成功率。缺点:.得到的最小单

27、元不标准。.制造本钱高。.3综合设计方法复杂数字逻辑电路和系统的设计过程通常是以上两种设计方法的结合。设计时需要考虑多个目标的综合平衡。在高层系统用自上而下的设计方法来实现,而在低层系统使用自下而上的方法从库元件或数据库中调用已有的单元设计。这种方法兼有两种设计方法的优点,而且可以使用矢量测试库进行测试。硬件描述语言的新开展 当前 EDA 工具所需解决的问题是如何大幅度提高设计能力,为此出现了一系列对 DHL语言的扩展。OO-VHDL ( Object-Orieted VHDL ), 即面向对象的 VHDL 。主要是引入了新的语言对象EntityObject此外,OO-VHDL中的 Entit

28、y 和 Architecture 具备了继承机制,不同的EntityObject之间可以用消息来通信。因而 OO-VHDL 通过引入EntityObject作为抽象、封装和模块性的根本单元解决了VHDL在抽象性的缺乏和在封装性上能力不强等问题,也通过其继承机制解决了实际设计中的一些问题。且由于OO-VHDL模型的代码比VHDL模型短30%-50%,开发时间缩短,提高了设计效率。杜克大学开展的DE-VHDL ( Duke Extended VHDL ) 通过增加3条语句,使设计者可以在 VHDL 描述中调用不可综合的子系统 ( 包括连接该子系统和激活相应功能 )。杜克大学用 DE-VHDL 进行

29、一些多芯片系统的设计,极大地提高了设计能力。1998年将通过得Verilog DHL新标准,将把 Verilog HDL-A 并入Verilog HDL设计中,使其不仅支持数字逻辑电路的描述,还支持模拟电路的描述,因而在混合信号电路设计中,将会得到广泛的应用,在亚微米和深亚微米ASIC及高密度FPGA中,Verilog HDL的开展前景很大。第三章 电路的仿真软件的使用Quartus II软件简介Quartus II软件允许在设计流程的不同阶段使用您熟悉的EDA工具。可以与Quartus II图形用户界面或者 Quartus II命令行可执行文件一起使用这些工具。如下图。 图3-1显示了EDA

30、工具设计流程表3-1是 Quartus II软件支持的EDA工具,并指出哪个EDA工具支持 NativeLink.。NativeLink技术在 Quartus II软件和其它 EDA工具之间实现信息的无缝传送,您可以在 Quartus II软件中自动运行 EDA工具。表3-1 Quartus II软件支持EDA工具在Assignments菜单中,单击 Settings,指定您希望在 Settings对话框的EDA Tool Settings页面中使用哪一EDA工具(图)。图3-2 Settings对话框的EDA工具设置页面 EDA Tool Settings下的几个页面为每种类型的 EDA工具

31、提供其他选项。以下步骤说明其它 EDA工具与 Quartus II软件配合使用时的根本设计流程。1. 创立新工程并指定目标器件或器件系列。2. 指定与 Quartus II软件一同使用的 EDA设计输入、综合、仿真、时序分析、板级验证、形式验证以及物理综合工具,为这些工具指定其他选项。3. 使用标准文本编辑器建立 Verilog HDL或者 VHDL设计文件,也可以使用MegaWizard插件管理器建立宏功能模块的自定义变量。4. 使用Quartus II支持的EDA综合工具之一综合您的设计,并生成EDIF网表文件(. edf)或Verilog Quartus映射文件(. vqm)。5. (可

32、选)使用Quartus II支持的仿真工具之一对您的设计进行功能仿真。6. 在Quartus II软件中对设计进行编译。运行EDA网表写入器,生成输出文件,供其他 EDA工具使用。7. (可选)使用Quartus II支持的EDA时序分析或者仿真工具之一对设计进行时序分析和仿真。8. (可选)使用Quartus II支持的EDA形式验证工具之一进行形式验证,确保Quartus布线后网表与综合网表一致。9. (可选 )使用 Quartus II支持的 EDA板级验证工具之一进行板级验证。10. (可选 )使用 Quartus II支持的 EDA物理综合工具之一进行物理综合。11. 使用编程器和

33、Altera硬件对器件进行编程。 第四章 多功能数字钟的设计和原理4.1 数字钟的组成和工作原理 数字钟的组成数字钟是一个将“ 时,“分,“秒显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和一些显示星期、报时、停电查看时间等附加功能。因此,一个根本的数字钟电路主要由译码显示器、“时,“分,“秒,“星期计数器、校时电路、报时电路和振荡器组成。干电路系统由秒信号发生器、“时、分、秒、星期计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将.标准秒

34、信号送入“秒计数器,“秒计数器采用60进制计数器,每累计60秒发出一个“分脉冲信号,该信号将作为“分计数器的时钟脉冲。数字钟的组成电路一般包括以下几个局部:振荡器、分频器、译码显示电路、时分秒计数器、校时电路、报时电路。对于各个局部而言,数字钟计时的标准信号应该是频率相当稳定的1HZ秒脉冲,所以要设置标准时间源。 数字钟计时周期是24小时,因此必须设置24小时计数器,他应由模为60的秒计数器和分计数器及模为24的时计数器组成,秒、分、时由七段数码管显示。为使数字钟走时与标准时间一致,校时电路是必不可少的。设计中采用开关控制校时直接用秒脉冲先后对“时“分“秒计数器进行校时操作。能进行整点报时。在

35、从59分50秒开始,每隔2秒钟发出一次低音“嘟的信号,连续五次,最后一次要求最高音“嘀的信号,此信号结束即到达正点。工作原理图为多功能数字钟端口功能图。其具有的功能有:显示时一分一秒、整点报时、小时和分钟可调等根本功能。下面介绍一下各主要引脚的功能: Clk SpkRst SelS1 S2 Display 图 4-1 多功能数字钟端口功能图Clk:10KHZ的系统基准时钟输入。作为七段码管扫描频率。将其10000分频可得到1 HZ的数字钟工作频率。将其8分频和4分频分别分时送入扬声器,使其产生嘀(125KHZ)、嗒(25KHZ)的报时声。Rst:系统复位信号,低电平有效。复位后显示OO一000

36、0。S1:调节小时信号,低电平有效。每按下一次,小时增加一个小时。S2:调节分钟信号,低电平有效。每按下一次,分钟增加一个分钟。Spk:输出到扬声器。产生嘀、嗒的报时声。Sel:七段码管扫描驱动。因为是八个七段码管所以Sel为三位总线。扫描频率为10KHZ,由于人眼的视觉效果,呈现在眼前的便是整体的时一分一秒显示。Display:七段码管显示输出。 设计步骤和方法.1数字钟的功能要求.1.根本功能1准确计时,以数字形式显示时,分,秒的时间。2小时的计时要求为“24翻1”,分和秒要求为60进位。3校正时间,能够对“分和“小时进行调整。.2扩展功能1定时闹钟时间可通过按钮任意修改2仿播送电台整点报

37、时四低一高3数字跑表具体启动/暂停,清零4日历已完成主体代码主体电路设计与程序系统采用是Altera公司FPGA器件Flex10KEPF10K10LC84-4FLEX(灵活逻辑单元矩阵)系列是Altera应用非常广泛的产品,这些器件具有比拟高的集成度及丰富的存放器资源,采用了快速,可预测延时的连续式布线结构,是一种将CPLD和FPGA的优点结合于一体的器件;硬件描述语言HDL采用的是Verilog HDL.1 60进制计数模块秒和分共用模块Modulecount_60(clk_count_60,clear,load,load_data,out,update,count_60_carry);in

38、put clk_count_60,clear,load,update;/update为计数器加1input7:0 load_data;output7:0 out;output count_60_carry;reg7:0 out;wire count_60_carry;assign count_60_carry=(out=8h59)&(clk_count_60=1)?1:0)&(!update)?1:0;/定义进位信号,在校时模式下通过update键校分时控制不向小时进位,/在计时模式下那么能正常进位always (negedge clk_count_60 or negedge clear) /

39、异步模式,下降沿触发beginif(!clear) out=0;/低电平清零 else beginif(!load) out=load_data; /低电平置数else if(out=8h59) out=0;else out=out + 1;endendEndmodule波形如图4_2图4-2 60进制计数模块仿真波形图.2 24进制计数模块小时计数module count_24(clk_count_24,clear,load,load_data,out,count_24_carry);input clk_count_24,clear,load;input7:0 load_data;outpu

40、t7:0 out;output count_24_carry;reg7:0 out;wire count_24_carry;assign count_24_carry=(out=8h23)&(clk_count_24=1)?1:0); /进位信号always (negedge clk_count_24 or negedge clear) /异步模式,下降沿触发 begin if(!clear) out=0; /低电平清零 else begin if(!load) out=load_data; /低电平置数 else if(out7:4=4h2)&(out3:0=4h3) out=0; else

41、 if(out3:0=4h9) begin out3:0=0; out7:4=out7:4+1; end else if(out3:09) out3:0=out3:0+1; end endendmodule波形如图4-3 图4-3 24进制计数模块仿真波形图.3 100进制计数模块数字跑表毫秒计数module count_100(clk_count_100,clear,load,load_data,pause,out,count_100_carry);input clk_count_100,clear,load;input pause;input7:0 load_data;output7:0

42、out;output count_100_carry;reg7:0 out;wire count_100_carry;assign count_100_carry=(out=8h99)&(clk_count_100=1)?1:0); /进位信号always (negedge clk_count_100 or negedge clear) /异步模式,下降沿触发 begin if(!clear) out=0; /低电平清零 else begin if(!pause) /启动和暂停 begin if(!load) out=load_data; /低电平置数 else if(out7:4=4h9)&

43、(out3:0=4h9) out=0; else if(out3:0=4h9) begin out3:0=0; out7:4=out7:4+1; end else out3:0=out3:0+1; end end endendmodule波形如图4-4 图 4-4 100进制计数模块仿真波形图.4 60进制计数模块数字跑表秒和分计数module count_60(clk_count_60,clear,load,load_data,out,count_60_carry);input clk_count_60,clear,load;input7:0 load_data;output7:0 out;

44、output count_60_carry;reg7:0 out;wire count_60_carry;assign count_60_carry=(out=8h59)&(clk_count_60=1)?1:0; /定义的进位信号always (negedge clk_count_60 or negedge clear);/异步模式,下降沿触发 begin if(!clear) out=0; /低电平清零 else begin if(!load) out=load_data; /低电平置数 else if(out7:4=4h5)&(out3:0=4h9) out=0; else if(out

45、3:0=4h9) begin out3:0=0; out7:4=out7:4+1; end else if(out3:09) out3:0=out3:0+1; end endendmodule波形如图4-5 图 4-5 60进制计数模块数字跑表秒分仿真波形图.5 BCD码转换成4_7译码模块module decode4_7(decodeout,indec);output6:0 decodeout;input3:0 indec;reg6:0 decodeout;always (indec)begin case(indec) 4b0000:decodeout=7b1111110; 4b0001:d

46、ecodeout=7b0110000; 4b0010:decodeout=7b1101101; 4b0011:decodeout=7b1111001; 4b0100:decodeout=7b0110011; 4b0101:decodeout=7b1011011; 4b0110:decodeout=7b1011111; 4b0111:decodeout=7b1110000;4b1000:decodeout=7b1111111; 4b1001:decodeout=7b1111011; default: decodeout=7bx; endcaseendendmodule波形如图4-6 图 4-6

47、BCD码转换成4_7译码模块仿真波形图.6主体程序(顶层文件):/* 信号定义:clk_1kHz: 系统时钟输入,通过分频程序得到 clk_1Hz,clk_100Hz,clk_500Hz;mode: 功能控制信号; 为0:计时功能;为1:闹钟功能;为2:手动校时功能为3:数字跑表功能;turn: 接按键,在手动校时功能时,选择是调整小时,还是分钟;update: 接按键,手动调整时,每按一次,计数器加1;hour,minute,second:此三信号分别输出并显示时、分、秒信号,皆采用BCD 码计数,分别驱动6 个数码管显示时间;alarm: 输出到扬声器的信号,用于产生闹铃音和报时音;闹铃音

48、为持续30 秒的“嘀嘀嘀音,假设按住“update键,那么可屏蔽该音;整点报时音为“嘀嘀嘀嘀嘟四低一高;clear: 接按键,在数字跑表模式清零pause:接按键,在数字跑表模式暂停和启动*/module count (clk_1kHz,hour,minute,second,mode,update,turn,alarm,clear,pause);input clk_1kHz,mode,update,turn,clear,pause;output alarm;/output 6:0 hour_h,hour_l,minute_h,minute_l,second_h,second_l;/reg 6:

49、0 hour_h,hour_l,minute_h,minute_l,second_h,second_l;/以上定义的变量是把秒,分,时输出的BCD码译成4_7段的变量,由于实验板上自带4_7的译码,所以没有暂不用4_7译码output 7:0 hour,minute,second;reg alarm_int,alarm_clock;reg clk_1Hz,clk_100Hz,clk_500Hz;reg 7:0 hour,minute,second;reg 1:0 select_hm;reg 2:0 m;reg 7:0 hou_n,min_n,sec_n,hou_a,min_a;reg 7:0

50、msc,sc,mc;reg ms_carry,s_carry,m_carry;reg 8:0 j;reg 2:0 k;reg sec_carry_n,min_carry_n,hou_carry_n,min_carry_a,hou_carry_a;reg m_update_a,h_update_a,m_update_n,h_update_n;wire m_clk_n,h_clk_n,m_clk_a,h_clk_a;always (posedge clk_1kHz) /分频程序 begin if(j=499) /通过计数器实现分频 begin j = 0; clk_1Hz = clk_1Hz; /

51、通过1kHZ分成1HZ end else j = j+1; clk_500Hz=j0; /得到500HZalways (posedge clk_1kHz) /分频程序 begin if(k=4) begin k = 0; clk_100Hz = clk_100Hz;/得到100HZ,作为数字跑表的输入脉冲 end else k = k+1; endalways (posedge mode)/mode 信号控制系统在四种功能间转换 begin if(m=3) m=0;/控制功能的数量 else m=m+1; endalways (posedge turn) select_hm=select_hm

52、; /选择是调整小时还是分钟always begin case(m) 2:begin /计时模式和校时模式 if(select_hm) m_update_n=update;/把update按键的值保存在m_update_n分钟中 else h_update_n=update; /通过turn按钮后那么保存在h_update_n小时中 end 1:begin /定时模式 if(select_hm) m_update_a=update; /update按键操作的值保存在m_update_a分钟中 else h_update_a=update;/update按键操作的值保存在h_update_a小时

53、中 end default:m_update_a,h_update_a,m_update_n,h_update_n=0; endcase endassign m_clk_n=(sec_carry_n&(!update)|m_update_n; /在计时和校时模式下分钟模块的触发条件assign m_clk_a=m_update_a; /在定时模式下分钟模块的触发条件assign h_clk_n=h_update_n|(min_carry_n&(!update); /在计时和校时模式下小时模块的触发条件assign h_clk_a=h_update_a|(min_carry_a&(!update

54、); /在定时模式下小时模块的触发条件always /显示控制 case(m) 3b000: /计时状态下的时、分、秒显示 begin hour=hou_n; minute=min_n; second=sec_n; end 3b001: /定时状态下的时、分、秒显示 begin hour=hou_a; minute=min_a; second=8hzz; end 3b010: /校时状态下的时、分、秒显示 begin hour=hou_n; minute=min_n; second=8hzz; end 3b011: /数字跑表状态下的分、秒、百分秒显示 begin hour=mc; minut

55、e=sc; second=msc; end endcasealways /闹铃功能 假设按住“update键不放,可屏蔽闹铃响 if(min_n=min_a)&(hou_n=hou_a)&(min_a|hou_a)&(!update)&(sec_n8h30) /控制闹铃的时间长短 alarm_clock=1; else alarm_clock=0; assign alarm=(alarm_clock)?clk_1kHz:0)|alarm_int; /产生闹铃音或整点报时音always /产生整点报时信号alarm_int begin if(min_n=8h59)&(sec_n=8h55)|(m

56、in_n=8h59)&(sec_n=8h56)|(min_n=8h59)&(sec_n=8h57)|(min_n=8h59)&(sec_n=8h58) alarm_int=clk_1Hz&clk_500Hz; /在55,56,57,58钟时产生低音else if (min_n=8h59)&(sec_n=8h59) alarm_int=clk_1Hz&clk_1kHz; /在59秒时产生一高音 else alarm_int=0; end count_60 sec_N(clk_1Hz,1,1,0,sec_n,update,sec_carry_n); /实现计时和校时模式下秒的计数和进位 count

57、_60 min_N(m_clk_n,1,1,0,min_n,update,min_carry_n); /实现计时和校时模式下分的计数和进位 count_60 min_A(m_clk_a,1,1,0,min_a,update,min_carry_a); /实现定时模式下分的计数和进位 count_24 hou_N(h_clk_n,1,1,0,hou_n,hou_carry_n); /实现计时和校时模式下小时的计数和进位 count_24 hou_A(h_clk_a,1,1,0,hou_a,hou_carry_a); /实现定时模式下小时的计数和进位 count_100 m_sc(clk_100H

58、z,clear,1,0,pause,msc,ms_carry); /实现数字跑表模式下毫秒的计数和进位 c60 s_c(ms_carry,clear,1,0,sc,s_carry); /实现数字跑表模式下秒的计数和进位 c60 m_c(s_carry,clear,1,0,mc,m_carry); /实现数字跑表模式下分的计数和进位 /* decode4_7 de_sec_h(second_h,second7:4); /调用decode4_7译码模块 decode4_7 de_sec_l(second_l,second3:0); /分别译码秒,分,时的高4位和低4位 decode4_7 de_m

59、in_h(minute_h,minute7:4); decode4_7 de_min_l(minute_l,minute3:0); decode4_7 de_hour_h(hour_h,hour7:4); decode4_7 de_hour_l(hour_l,hour3:0);*/Endmodule主体程仿真波形如图4-7 ,4-81分频程序的仿真波形图4-7 分频程序仿真波形图2时、分、秒的仿真波形图4-8 时、分、秒的仿真波形图第五章 总 结通过这次毕业设计,了解了数字系统的根本设计流程。掌握了EDA软件的应用如QuatusII5.0设计输入,编译,仿真到下载的全过程,等根本用法。通过课程

60、设计的练习,掌握了用硬件描述语言Verilog HDL来设计数字电路,为将来学习设计数字模块和数字系统,系统芯片SOCSystem On Chip打下了根底。此次设计将程序设计分了6个模块,分别是60进制计数模块秒和分共用摸块、24进制计数模块小时计数、100进制计数模块数字跑表毫秒计数、60进制计数模块数字跑表秒和分计数、BCD码转换成4_7译码模块、主题程序顶层文件,以及通过对各个模块的仿真得到的波形图。通过分模块设计,不仅简洁,而且整个设计过程显得流畅层次清楚,便于找储错误和程序的修改,应该逐渐有意识的养成这种好的设计习惯,对以后的学习实践过程有很大的帮助。只有通过不断的学习和练习才能不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论