版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、上海海事大学本科生毕业设计 (论文)封面删除你懂的26摘 要随着微电子技术、计算机技术、半导体技术的发展,很多传统的数字门电路的设计已经被可编程逻辑器件替代。而对于传统的模拟控制技术,也被数字控制系统所取代。数字系统在各个领域显示出了无穷的魅力与优势,如今已经被广泛应用于实际工程中。本文利用Verilog HDL 语言自顶向下的设计方法设计多功能数字钟, 实现时、分、秒的计时和校时,以及整点报时和闹钟的功能。突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点, 并通过ModelSim SE 6.5 完成综合、仿真。通过Verilog HDL语言完成数字钟的层次化设计。关键词:数字电
2、子时钟,有限状态机,功能仿真AbstractAs the microelectronics, computer technology, semiconductor technology, many traditional design of digital gate programmable logic device has been replaced. As for the traditional analog control, digital control systems have also been replaced. Digital systems in various fields
3、 has shown infinite charm and advantages, and now has been widely used in practical projects. In this paper, Verilog HDL, the design of top-down multi-functional digital clock designed to achieve the hours, minutes, seconds, time and school, as well as the whole point timekeeping and alarm functions
4、. Highlighted as a hardware description language, good readability, portability and ease of understanding, etc., and through the ModelSim SE 6.5 complete the comprehensive, simulation. Completed by Verilog HDL, the level of the digital clock design.朗读显示对应的拉丁字符的拼音 字典Key words: Digital electronic
5、 clock, finite state machine, functional simulation显示对应的拉丁字符的拼音 字典.目 录第1章 绪论.11.1时钟的发展简史.11.2设计目的.11.3Verilog HDL硬件描述语言.21.4Modelsim仿真工具.5第2章 数字电路设计方法.72.1数字系统设计简介.72.2有限状态机.9第3章 数字钟的层次化设计.133.1功能要求.133.2数字钟系统的工作原理.133.3 模块的设计.133.4程序设计.14第4章 功能仿真.194.1 仿真前准备.194.2 功能仿真.20第5章 总结.23参考文献.26第1章 绪论
6、1.1时钟的发展简史设计目的公元1300年以前,人类主要是利用天文现象和流动物质的连续运动来计时。例如,日晷是利用日影的方位计时;漏壶和沙漏是利用水流和沙流的流量计时。东汉张衡制造漏水转浑天仪,用齿轮系统把浑象和计时漏壶联结起来,漏壶滴水推动浑象均匀地旋转,一天刚好转一周,这是最早出现的机械钟。北宋元祜三年(1088)苏颂和韩公廉等创制水运仪象台,已运用了擒纵机构。1350年,意大利的丹蒂制造出第一台结构简单的机械打点塔钟,日差为1530分钟,指示机构只有时针;15001510年,德国的亨莱思首先用钢发条代替重锤,创造了用冕状轮擒纵机构的小型机械钟;1582年前后,意大利的伽利略发明了重力摆;
7、1657年,荷兰的惠更斯把重力摆引入机械钟,创立了摆钟。1660年英国的胡克发明游丝,并用后退式擒纵机构代替了冕状轮擒纵机构;1673年,惠更斯又将摆轮游丝组成的调速器应用在可携带的钟表上;1675年,英国的克莱门特用叉瓦装置制成最简单的锚式擒纵机构,这种机构一直沿用在简便摆锤式挂钟中。1695年,英国的汤姆平发明工字轮擒纵机构;1715年,英国的格雷厄姆又发明了静止式擒纵机构,弥补了后退式擒纵机构的不足,为发展精密机械钟表打下了基础;1765年,英国的马奇发明自由锚式擒纵机构,即现代叉瓦式擒纵机构的前身;17281759年,英国的哈里森制造出高精度的标准航海钟;17751780年,英国的阿诺
8、德创造出精密表用擒纵机构。1819世纪,钟表制造业已逐步实现工业化生产,并达到相当高的水平。20世纪,随着电子工业的迅速发展,电池驱动钟、交流电钟、电机械表、指针式石英电子钟表、数字式石英电子钟表相继问世,钟表的日差已小于0.5秒,钟表进入了微电子技术与精密机械相结合的石英化新时期。1.2设计目的1. 掌握各类计数器及将他们相连的方法2. 掌握多个数码管动态显示的原理与方法3. 掌握用FPGA技术的层次化设计方法4. 进一步掌握用Verilog硬件描述语言的设计思想5. 了解相关数字系统的设计1.3 Verilog HDL硬件描述语言1.3.1Verilog HDL的发展过程与编程特点Veri
9、log HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种件描述语言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得
10、Verilog HDL迅速得到推广应用。Verilog HDL充分保留了C语言简洁、高效的编程风格,其中有许多语句和C语言中的语句十分相似,如if语句、case语句等。1.3.2Verilog HDL的基本结构1)模块的基本结构模块是Verilog DHL语言的基本单元。一个模块可以大道代表一个完整的系统,也可以小到仅代表最基本的逻辑单元。模块内部具体行为的描述或实现方式的改变,并不会影响该模块与外部之间的连接关系。一个Verilog模块可被任意多个其他模块所调用,但由于Verilog HDL所描述的是具体的硬件电路,一个模块代表具有特定功能的一个电路块,每当它被某个其他模块调用一次,则在该模
11、块内部,被调用的模块将原原本本的复制一次。一个完整的Verilog HDL模块由以下五部分组成。(1)模块定义行。 这一行以module开头,接着给出所定义模块的模块名,模块名是模块唯一的标识符;之后的括号内给出的是端口名列表,端口名列表是由模块的各个输入、输出和双向端口组成的一张端口列表,这些端口用来与其他模块进行连接;最后以分号结束。当无端口名列表时,括号可省去。(2)端口类型说明接在模块定义行后面的是对端口类型的说明,凡是出现在端口名列表中的端口,都必须显示说明其端口类型。(3)数据类型说明 Verilog HDL支持的数据类型有连线类和寄存器类两个大类,每个大类有细分为多种具体的数据类
12、型。数据类型定义部分用来指定模块内用到的数据对象为寄存器型或连线型,除了1位宽的wire类可缺省外,其他将在后面的描述中出现的变量都应给出相应的数据类型说明。(4)描述部分 本部分具体展开对模块功能的描述。(5)结束行结束行是用关键词endmodule标志模块定义的结束。 2)模块的描述在模块的功能描述中,可用下述方式描述一个设计:数据流方式;行为方式;结构方式;上述描述方式的混合。下面分别介绍模块的这几种描述方式。(1)数据流描述方式数据流型描述主要用来描述组合功能,具体由“assign”连续赋值语句来实现。(2)行为描述方式行为描述时一种高级语言使用到的方法,Verilog中的行为描述方式
13、具有很强的通用性。行为描述是通过行为语句来实现的,行为功能可使用下述过程语句结构描述。Initial语句:此语句只执行一次。Always语句:此语句循环执行。(3)结构描述方式结构描述方式是通过实例进行描述的方法。它将Verilog中预定义的基本元件实例嵌入到语言中,监控实例的输入,一但其中任何一个发生变化,便重新运算并输出。(4)混合型描述方式在模块中,用户可以混合使用以上几种描述方式,也就是说,模块中可以包含门的实例、模块实例语句、连续赋值语句、always语句和initial语句以及它们的混合语句,并且它们之间可以相互包含。1.3.3Verilog HDL的层次设计实现过程用Verilo
14、g HDL进行硬件设计的过程实质上是把构成硬件系统的各功能模块进行Verilog描述,也可以使结构描述,前者侧重刻画模块所具有的行为特征,后者侧重反映模块内部的具体构造。通常一个硬件系统是由多个不同的功能模块所组成的,因而总会存在这样一个模块,他用结构描述的方法,将构成硬件系统的所有功能模块连接起来,这个模块就是系统的顶层模块。相对于顶层模块,其他的模块就是低一层次的模块。在对低一层次的模块进行描述时,如果有必要,可以同样用结构描述的方法,把模块的内部结构进一步具体的刻画出来,相对于顶层模块而言,用于构造低一层次模块的结构单元就属于更低一个层次。因而随着设计过程的展开,一个硬件系统的构造逐渐由
15、顶层走向底层,各个功能模块的内部结构逐渐得到深化和细化,整个设计过程因而被称之为一个自顶向下的分级设计过程。在这个自顶向下的设计过程的任何阶段,都可以利用仿真工具对处于设计过程中的系统描述进行性能评估与正确性检测。在自顶向下的设计过程中,对于上层模块来说,只需要 知道某个模块的名称与端口类型,就可把它作为自己的一个下层模块进行调用。至于下层模块的具体实现方式,或者从一种实现方式转换到另一种实现方式,都不会对上层 模块的描述产生任何影响。这是自顶向下设计方法一个突出的优点。在设计过程中,通过仿真测试,如果发现性能不够理想,或者发现任何错误,只需对存在问题的低层的描述或实现方式进行修改或调整,而不
16、必对上层结构进行任何改变。所谓的顶层和底层都是相对的。在实际设计过程中,总是把当前正在实现的模块作为一个局部的顶层模块,在完成描述后,先单独对他进行仿真测试,在验证其正确性后在加入需要调用它的模块中,而成为整个系统设计中某一个层次的功能模块,一个大的电子系统设计就是这样从顶层到底层,边设计,边仿真,并依据仿真结果,反复调整或优化的过程。1.4 Modelsim仿真工具ModelSim是业界最优秀的HDL语言仿真器。它提供最友好的调试环境,是唯一的单内核支持VHDL和Verilog混合仿真的仿真器。是作FPGA/ASIC设计的RTL级和门级电路仿真的首选,它采用直接优化的编译技术、Tcl/Tk技
17、术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段。全面支持VHDL和Verilog语言的IEEE 标准,支持C/C+功能调用和调试。ModelSim专业版,具有快速的仿真性能和最先进的调试能力,全面支持UNIX(包括64位)、Linux和Windows平台。主要特点:RTL和门级优化,本地编译结构,编译仿真速度快;单内核VHDL和Verilog混合仿真;源代码模版和助手,项目管理;集成了性能分析、波形比较、代码覆盖等功能;数据流ChaseX;Signal Spy;C和Tcl/Tk接口,C调试。是业界唯一单一
18、内核支持VHDL、 Verilog HDL和SystemC混合仿真的仿真器同时也支持业界最广泛的标准如Verilog 2001、SystemVerilog等,内部集成了用于C/C+,PLI/FLI和SystemC的集成C调试器。支持众多的ASIC和FPGA厂家库,可以用于FPGA和ASIC设计的RTL级和门级电路仿真。下面图1.1为modelsim的主界面。图1.1modelsim主界面ModelSim最大的特点是其强大的调试功能:先进的数据流窗口,可以迅速追踪到产生不定或者错误状态的原因;性能分析工具帮助分析性能瓶颈,加速仿真;代码覆盖率检查确保测试的完备;多种模式的波形比较功能;先进的Si
19、gnal Spy功能,可以方便地访问VHDL 或者VHDL和Verilog混合设计中的底层信号;支持加密IP;可以实现与Matlab的Simulink的联合仿真。ModelSim分几种不同的版本:SE、PE、LE和OEM,其中SE是最高级的版本而集成在 Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以Xilinx公司提供的OEM版本ModelSim XE为例,对于代码少于40000行的设计,ModelSim SE 比ModelSim XE要快10倍;对
20、于代码超过40000行的设计,ModelSim SE要比ModelSim XE快近40倍。以下列表介绍了OEM版本(以Xilinx公司提供的ModelSim XE版本为例)与ModelSim SE版本之间的差异。ModelSim SE支持PC、UNIX和LINUX混合平台;提供全面完善以及高性能的验证功能;全面支持业界广泛的标准;Mentor Graphics公司提供业界最好的技术支持与服务。第2章 数字电路设计方法2.1数字系统设计简介2.1.1数字系统从概念上讲,凡是利用数字技术处理和传输信息的系统都可以称为数字系统。通常把门电路、触发器等称为逻辑器件。将由逻辑器件构成,能执行某单一功能的
21、电路,如计数器、译码器、加法器等称为逻辑功能部件,把有逻辑功能部件组成的能实现复杂功能的数字电路称为数字系统。复杂的数字系统可以分割称为若干个子系统,例如,计算机就是一个内部结构相当复杂的数字系统。近几年来,IC技术的发展日新月异,而最具有代表性的IC芯片主要包括以下几类:微控制芯片(MCU);可编程逻辑器件(PLD);数字信号处理器(DSP);大规模存储芯片(RAM&ROM)。这几类器件在最近20年均取得了长足的发展,无论是芯片的规模还是性能都有了巨大的提高,构成了现代数字系统的基石。2.1.2数字系统设计方法数字系统一般由控制电路、多个受控电路、输入/输出电路、时基电路等几部分构成
22、,如图2.1所示。 图2.1数字系统设计方法构成图一般来说,电子系统的设计有两种思路,一种是自下而上的设计思路,一种自上而下的设计思路。(1)自下而上的设计自下而上的设计,也可称为自底向上的设计,过程从最底层设计开始。设计系统硬件时,首先选择具体的元器件,用这些元器件通过逻辑电路设计,完成系统中各独立功能模块的设计,再把这些功能模块连接起来,总装成完整的硬件系统。(2)自上而下的设计自上而下的设计,也可称为自顶向下的设计。它是目前常用的数字系统设计方法,也是基于芯片的系统设计的主要方法。它在功能划分、任务分配及设计管理上有一定的长处。2.1.3数字系统设计流程 数字系统的设计可分为四个层次,即
23、系统级设计、电路级设计、芯片级设计和电路板级设计。相应的,从提出设计要求到完成系统成品,数字系统设计可分为以下几个步骤:系统设计、电路设计、芯片设计、PCB设计、结构设计及电路调试和系统调试,如图2.2所示。图2.2数字系统设计流程图2.1.4数字系统设计准则进行数字系统设计时,通常需要考虑多方面的条件和要求。如设计的功能和性能要求,元器件的资源分配和设计工具的可实现性,系统的开发费用和成本等。虽然具体设计的条件和要求千差万别,实现方法也个各相同,但数字系统设计还是具备一些共同的方法和准则。1) 分割准则自顶向下设计方法或其他层次化设计方法需要对系统功能进行分割,然后用逻辑语言进行描述。分割过
24、程中,若分割过粗,则不易用逻辑语言表达;若分割过细,则会带来不必要的充分和繁琐。因此,分割合适与否对系统设计是否方便有着至关重要的影响。2) 系统的可观测性一个系统除了引脚上的信号外,系统内部的状态也是需要测试的内容。因此,在系统设计中,应该同时考虑功能检查和性能的测试,即系统观测性的问题。3) 系统的稳定性设计时应注意采取措施避免竞争和增加系统稳定性。4) 最优化设计设计中常见的最优化目标有:(1)器件资源利用率最高;(2)系统工作速度最快,即延时最小;(3)布线最容易。2.2有限状态机2.2.1有限状态机简介有限状态机(FSM)又称为有限状态自动机或简称状态机,是表示有限个状态以及这些状态
25、之间的转移和动作的数学模型。一般来说,除了输入部分和输出部分外,状态机还含有一组具有“记忆”功能的寄存器,这些寄存器的功能是记忆有限状态机的内部状态,他们常被称为状态寄存器。其中,寄存器逻辑的功能是存储有限状态机的内部状态;而组合和逻辑又可分为次态逻辑和输出逻辑两部分,次态逻辑的功能是确定有限状态机的下一个状态,输出逻辑的功能是确定有限状态机的输出。在实际应用中,根据有限状态机的输出信号是否与输入信号有关,将其分为Moore(莫尔)型有限状态机和Mealy(米里)型有限状态机两种类型。Moore型状态机输出信号仅与当前状态有关,如图2.3。即可以把Moore型有限状态的输出看成是当前状态的函数
26、。Mealy型状态机输出信号不仅与当前状态有关,而且还与输入信号有关,如图2.4即可以把Mealy型状态机的输出看成是当前状态和输入信号的函数。 图2.3Moore函数图输出逻辑输出当前状态激励输入状态寄存器下一个逻辑状态时钟信号 图2.4Mealy函数图需要注意的是Mealy型状态机的输出是当前状态和输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。而Moore型状态机仅为当前状态的函数,这类状态机在输入发生变化后,还必须等待时钟的到来,时钟使状态发生变化才导致输出的变化,所以比Mealy要多等待一个时钟周期。2.2.2有限状态机的编码方案在状态机的编码方案中,有两种重要的
27、编码方法:二进制编码和一位热码(OneHot)编码。在二进制编码的状态机中,状态位(B)与状态(S)的数目之间的关系为B=log2S,如两位状态位就有00,01,10,11四个不同状态,它们在不同的控制信号下可以进行状态转换,但如果各触发器又没有准确地同时改变其输出值,那么在状态01变到10时则会出现暂时的11或00状态输出,这类险象可能使整个系统造成不可预测的结果。这时,采用格雷码二进制编码是特别有益,在该编码方案中,每次仅一个状态位的值发生变化。一位热码编码就是用n个触发器来实现n个状态的编码方式,状态机中的每一个状态都由其中一个触发器的状态来表示。如4个状态的状态机需4个触发器,同一时间
28、仅一个状态位处于逻辑1电平,四个状态分别为:0001、0010、0100、1000。在实际应用中,根据状态机的复杂程度、所使用的器件系列和从非法状态退出所需的条件来选择最适合的编码方案,使之能确保高效的性能和资源的利用。对复杂的状态机,二进制编码需用的触发器的数目比一位热码编码的少。如100个状态的状态机按二进制编码仅用7个触发器就可以实现,而一位热码编码则要求100个触发器。另一方面,虽然一位热码编码要求用较多的触发器,但逻辑上通常相对简单些。在二进制编码的状态机中,控制从一个状态转换到另一个状态的逻辑与所有7个状态位以及状态机的输入均有关。这类逻辑通常要求到状态位输入的函数是多输入变量的。
29、然而,在一热恋位编码的状态机中,到状态位的输入常常是其它状态位的简单函数。站在器件结构的角度,不同结构支持其确定的编码类型。MAX+plus II编译程序对所采用的器件系列自动地选择最合适的编码方法(除非在设计文件中规定了具体的编码方案)。例如,FLEX 7000器件系列是寄存器增强型(Register-intensive),以这类器件为对象的状态机最好选用一位热码编码方案来实现。由于一位热码编码的状态机降低了送到每一个状态位的逻辑电路的复杂程度,因而可提高用FLEX 7000器件实现的状态机的性能。MAX 5000和MAX 7000器件系列最适合二进制状态机编码方案。这两类器件都能够利用共享
30、和并联的扩展乘积项有效地实现复杂的逻辑函数。因此,在这两类器件小,可以容纳复杂的组合逻辑函数而不会浪费资源或损失性能。2.2.3有限状态机的一般设计步骤用Verilog HDL进行有限状态机的设计时,主要是用always和case语句来描述模块的功能,一般来说,它们可以采用以下几个步骤来进行:(1) 通过逻辑抽象,得出状态转换图或状态表首先,通过分析给定的逻辑问题,确定输入变量、输出变量以及电路的状态数,通常是把设计给定的条件作为输入变量,把得到的结果作为输出变量;然后,定义输入、输出逻辑状态的含义,并将电路状态顺序编号;最后,按照要求列出电路的状态转换表或画出状态转换图就可以了。(2) 状态
31、化简初次确定的状态,通常会出现重复的状态,即它们在相同的输入下转换到同一状态去,并得到一样的输出。这样的状态可以合并为一个。电路的状态数越少,存储电路也就越简单。状态简化的目的就是要将重复的状态尽可能的合并,以得到最简单的状态装换图。(3) 状态分配状态分配又称状态编码。通常有很多编码方法,编码方案选择得当,设计的电路可以很简单;反之,选的不好,则设计的电路就会复杂很多。实际设计时,需综合考虑电路复杂度与电路性能之间的折中。在触发器资源丰富的FPGA或ASIC设计中,采用独热编码,既可以使电路性能得到保证,又可充分利用触发器数量多的优势。(4) 根据画好的状态转换图或状态表,用Verilog
32、HDL编写程序。用Verilog HDL来描述有限状态机,通过使用always块语句和case(if)等条件语句及赋值语句即可方便实现,而不必去考虑逻辑化简等问题,那些问题可以通过计算机自动完成。第3章 数字钟的层次化的设计3.1功能要求设计一个具有时、分、秒计时功能的电子钟电路。按照层次化的设计方法将数字钟的功能划分为三个功能块:计时电路,显示电路,和扩展电路。要求在准确计时的基础上具有校时、校分的功能,定时闹钟的功能和整点报时的功能。3.2数字钟系统的工作原理向秒计数器提供秒脉冲信号,秒计数器记满60后向分计数器进位,分计数器记满60后向小时计数器进位,小时计数器按照24进制规律计数。计数
33、器的输出经译码器送显示器,即显示时间。计时出现误差可以用校时电路进行校时、校分。在计时主体电路正确运行的况下,进行功能扩展,实现仿电台报时和闹钟功能。3.3模块的设计 数字钟可以划分为三个功能块:1.计时电路;2.显示电路;3.扩展电路。这些模块又可分割为更小的模块。计时电路包括校时电路和计数器两个部分。计数器的功能是完成小时、分钟、秒钟的计时,因此又可继续分割为二十四进制和六十进制计数器;校时电路的作用是对小时和分钟的误差进行调整,可设置两个按键,分别予以控制。显示电路的作用是将计时电路产生的几十只在数码管上进行显示,通过七段译码后,驱动LED数码管,然后在计时电路正确的情况下实现两个扩展功
34、能。 设计图如图3.1 数字钟功能扩展闹钟伪电台报时计时电路显示电路校时电路计数器二十四进制小时计数器六十进制秒计数器六十进制分计数器图3.1模块设计3.4 程序设计3.4.1.计时电路设计(1)六十进制计数器。module cnt60(clk,qs,co);input clk;output7:0 qs=0;output co=0;reg7:0 qs; reg co;always (posedge clk)beginif(qs7:4!=4'b0101)beginif (qs3:0=4'b1001) begin qs7:4<=qs7:4+4'b0001;qs3:0&
35、lt;=4'b0000;co<=1'b0;endelse begin qs7:4<=qs7:4;qs3:0<= qs3:0+4'b0001; co<=1'b0;endendelseif(qs3:0=4'b1001) begin qs7:4<=4'b0000;qs3:0<=4'b0000;co<=1'b1; endelse begin qs7:4<=qs7:4;qs3:0<=qs3:0+4'b0001;co<=1'b0;endend endmodule (2
36、)二十四进制计数器module cnt24(qh,clk);input clk;output7:0 qh=0;reg7:0 qh;always (posedge clk)beginif(qh7:4!=2)beginif (qh3:0=4'b1001) begin qh7:4<=qh7:4+4'b0001;qh3:0<=4'b0000; endelse begin qh7:4<=qh7:4;qh3:0<=qh3:0+4'b0001; endend else if (qh3:0=4'b0011)begin qh7:4<=4
37、9;b0000;qh3:0<=4'b0000;end else begin qh7:4<=qh7:4;qh3:0<=qh3:0+4'b0001;end endendmodule2)校时电路设计module adjust(clk,co1,co2,set1,set2,clk1,clk2);input clk,set1,set2,co1,co2;output clk1,clk2;assign clk1=set1? clk:co1;assign clk2=set2? clk:(!set1&&co2);endmodule3.4.2.扩展电路设计modul
38、e alarm(clk,qm,qh,qs,sound);input clk;input7:0qs,qm,qh;output sound;wire bell,noise;reg cp;always (posedge clk) begincp<=cp;endassign noise=(qh=8'h7)&&(qm=8'h30)&&clk;assign bell=(qs=8'h51|qs=8'h53|qs=8'h55|qs=8'h57)&&(qm=8'h59)&&cp)|(qs
39、=8'h59)&&(qm=8'h59)&&clk);assign sound=noise|bell;endmodule3.4.3.数字钟顶层电路设计module top(clk1,clk2,set1,set2,qs,qm,qh,sound);input clk1,clk2,set1,set2;output7:0 qm,qh,qs;output sound;wire7:0 qs,qm,qh;cnt60 s(clk1,qs,co1); cnt60 m(cp1,qm,co2);cnt24 h(qh,cp2);adjust u1(clk1,co1,co2
40、,set1,set2,cp1,cp2);alarm u2(clk2,qm,qh,qs,sound);endmodule模块说明:计时电路设计包括计数器电路设计和校时电路设计两个部分。计数器电路包含二十四进制和六十进制两种类型计数器,分别用于时和秒(分)的计数。计数器间采用串行连接方式,由六十进制计数器在计数到最大值后产生高电平,作为向前级(分或时)的进位信号。(1)六十进制计数器。六十进制计数器完成分和秒的计时,其计数规律为:00-01-02-58-59-00-01-clk:1Hz脉冲信号或秒计数器的进位信号qs:计数器输出co:进位脉冲信号模块最要的部分是clk的定义,首先假定计数器的高位,
41、也就是十位数(高4位)不等于5,定义个位数的累加和进位,当低位3:0值等于9时,低位值清零,高位7:4值+1,当值小于9时,低位3:0值+1。else语句定义十位数等于5的情况,当个位值为9的时候,个位,十位全部清零,并且co进位+1。(2)二十四进制计数器小时计数器为二十四进制计数器,其计数规律为:00-01-02-09-10-11-12-18-19-20-21-22-23先定义小时模块的十位(高位),当十位不等于2的时候,个位等于9以后,十位值+1,个位清零;个位置小于9时,十位不变,个位置+1。当十位等于2的时候,个位置等于9,全部清零重置;个位小于9,则个位值+1.(3)校时模块电路进
42、行校时和正常计时的区别在于,若是分钟的正常计时,则分钟计数器选用秒计数器的进位信号作为其时钟信号,而进行分校时,则分钟计数器选用1Hz脉冲信号作为其时钟信号。小时计数器的时钟信号选择原理类似。在校时模块中,clk1和clk2都采用高电平有效来实现校分和校时,clk1表示分钟,clk表示小时。set1对应的是clk1,set2对应clk2。(4)扩展电路sound信号为输出,clk为1kHz的方波信号,引入分秒时3个计数器,分别为qm,qs,qh,bell为闹钟信号输出,noise为仿电台报时信号输出,在59分51秒的时候开始进行报时,每两秒一次信号。(4)顶层模块共有4个输入clk1、clk2
43、、set1、set2,7个输出outsl、outsh、outml、outmh、outhl、outhh,分别代表译码显示模块的秒分时的低位和高位显示。通过将qs、qm、qh相连接,显示出完整的时间。第4章 功能仿真4.1仿真前准备(1)打开Modelsim SE新建工程:点击FileðNewðProject出现图4.1所示对话框,输入工程名,点击OK。 图4.1(2)给工程添加文件:如图4.2,如若没有现成文件,则点击Creat New File添加新文件。出现如图4.3对话框,写好文件名点击OK。图4.2 图4.3(3)把预先写好的程序复制的建好文件中,点击编译ComlileðComlile All。如若没有问题,就可以正式开始仿真啦。4.2功能仿真Testbench如下timescale 100us/100usmodule top_test;reg clk1,clk2,set1,set2;wire sound;wire7:0 qs,qm,qh;initial begin clk1=0; clk2=0;endinitialbeginset1=0;#150000 set1=1;#50000 set1=0;endinitialbeginset2=0;#300000 set2=1;#50000 set2=0;endalway
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高考物理总复习专题十电磁感应第3讲电磁感应定律的综合应用练习含答案
- 劳务分包合同价款确定技巧
- 2023年华侨生联考英语作文真题
- 广东省肇庆市高中英语 Unit 4 Astronomy the science of the starsReading教案 新人教版必修3
- 九年级化学上册 第1单元 步入化学殿堂 到实验室去 化学实验基本技能训练(一)教案(2)(新版)鲁教版
- 2024年一年级品生下册《班级小公约》教案 未来版
- 2024年九年级化学上册 5.1 质量守恒定律教案(pdf)(新版)新人教版
- 2024-2025学年高中物理 第一章 动量守恒定律 3 动量守恒定律教案 新人教版选择性必修第一册
- 2024年四年级英语下册 Unit 8 What Can You Do Lesson 2教案 陕旅版(三起)
- 山东济南槐荫区2024-2025学年七年级数学第一学期期中考试试题(含答案)
- 2024年海南省高考历史试卷(含答案解析)
- 北师大版数学一上 3.1《一共有多少》教学设计
- 24秋国家开放大学《当代中国政治制度》形考任务1-4参考答案
- 医院检验科实验室生物安全程序文件SOP
- 岗位竞聘课件(完美版)
- 法律顾问服务满意度考核评分表.doc
- 35kV配电系统调试试验方案
- 快递业“最后一公里”配送模式分析——以顺丰快递为例
- 临床用药管理制度
- 多层工业厂房施工组织设计#现浇框架结构
- 消防控制室值班记录(制式表格).doc
评论
0/150
提交评论