基于verilog HDL 数字计时器设计_第1页
基于verilog HDL 数字计时器设计_第2页
基于verilog HDL 数字计时器设计_第3页
基于verilog HDL 数字计时器设计_第4页
基于verilog HDL 数字计时器设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、EDA设计基础实验课程论文EDA设计基础实验课程论文题 目 基于verilog HDL 的数字计时器的设计 学 院 通信与电子工程学院 专业班级 电子081班 学生姓名 大彬哥 指导教师 大力会 2013 年 6月 12 日VI摘 要当前电子系统的设计正朝着速度快,容量大,体积小,质量轻,用电省的方向发展。推动该潮流迅速发展的决定性因素就是使用了现代化的 EDA 设计工具。本论文先确定了系统的逻辑功能,建立算法流程,选择电路结构,然后确定并设计电路所需的数据处理以及控制模块,在 Quartus II 上以verilog HDL为系统逻辑描述方法完成了数字计时器所需的按键输入消抖模块,控制模块,

2、分频模块,计数模块,存储器模块,显示译码模块的设计与顶层设计和引脚分配,并讨论了 FPGA 设计中的常见的毛刺及其消除方法以及系统资源优化,利用计算机的强大运算能力在 Quartus II 上对用 VHDL 建模的复杂数字逻辑进行编译,自动综合地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑行局布线、逻辑仿真,生成符合要求且在电路结构上可以实现的数字逻辑网表(Netlist),根据网表和某种工艺的器件自动生成具体电路,然后生成该工艺条件下这种具体电路的延时模型,并下载到 FPGA板上实际验证,通过本设计对数字系统自动化的基本概念、基本原理、特性及实现方法都有了较好的了解和理解,同时锻炼

3、了计算机应用能力和 verilog HDL 语言的编程能力和 Quartus II 以及 MaxplusII 的使用能力,本设计圆满完成了用 verilog HDL 语言设计 1/10秒数字计时器并仿真和实际下载到 ALTERA 公司的 Cyclone II 系列的 EP2C8Q208C 中实现。关键词:电子设计自动化,现场可编程门阵列/复杂可编程逻辑器件,硬件描述语言,数字系统设计。AbstractThe current design of electronic systems is developing to fast speed, large capacity, small size,

4、light weight, Low power consumption. What decisively promote the rapid development of this trend is the use of modern EDA design tools. In this thesis, we firstly determine the system's logic functions, build the algorithm of system, and select the circuit, then Identify and design the data proc

5、essing and control module circuit requires. Complete the key input debounce module, controlmodule, frequency modules, counter modules, memory modules, display decoding module digital timer requires with verilog HDL in Quartus II, and finish the design of top-level entity and Pin assignment. Discuss

6、the reason of glitch and the elimination of glitch in FPGA.Automatically complete compile logic, logic simplification, logic partitioning, logic synthesis and logic optimization, logic board wiring, logic simulation, generate the digital logic netlist which meets the requirements and can be implemen

7、ted on the circuit, automatically generate a specific circuit according to the netlist and the device. and then build this specific delay model circuit under these conditions,then download to the FPGA board and actually verify the design. Through this design, we have better knowledge and understandi

8、ng for EDA's basic concepts, basic principles, characteristics and methods, also improve the ability of using computer and Quartus II and Maxplus II and Verilog HDL programming ability. The design of digital timer based on Verilog HDL is completed successfully and has been simulated and download

9、ed to ALTERA's EP2C8Q208C and works Successfully.Key Words:EDA, FPGA/CPLD, verilog HDL, Digital System Design.I目录摘 要I第一章 引 言11.1 EDA 现状11.2 硬件描述语言21.3 设计指标4第 2 章 EDA设计方法及其应用52.1 分析方法52.2 描述方法72.3 实现方法8第 3 章 设计思想与方案论证93.1 设计思想93.2 论证分析9第 4 章 系统设计114.1 顶层电路设计114.2 数字秒表的设计原理114.3 键输入消抖模块124.4 时钟分频电

10、路模块134.5 控制电路模块134.6 计时电路模块144.7 模式选择模块154.8 存储器模块164.9 动态扫描译码显示模块16第5章 程序设计18第 6 章 仿真下载实现21参考文献22第一章 引 言随着人们生活水平的日益提高,社会体系的日益完善,人们对于各种应用器材的要求也越来越高.秒表作为日常生活中,特别是体育运动中应用的特别广泛,所以精确且方便使用的秒表就被越来越多的人所选择.本秒表计时器用于体育竞赛及各种要求有较精确时的各领域,以往常利用中小规模集成电路实现,但一般体积大,使用携带不方便。利用 VHDL在 FPGA 或 CPLD 上实现 1/10 秒计时控制器,能充分发挥 V

11、HDL 与可编程器件灵活、高效,集成度高的特点,基于 VHDL 实现 1/10 秒计时控制器具有重要的实际意义此计时器是用一块专用的芯片,用 VHDL 语言描述的。它具有开关、时钟和显示功能,其体积小,携带方便。1.1 EDA 现状当前电子系统的设计正朝着速度快,容量大,体积小,质量轻,用电省的方向发展。推动该潮流迅速发展的决定性因素就是使用了现代化的 EDA 设计工具。EDA 是电子设计自动化(Electronic Design Automation)的缩写,是 90 年代初,从 CAD(计算机辅助没计)、CAM(算机辅助制造)、CAT(计算机辅助测试)和 CAE(计算机辅助工程)的概念发展

12、而来的。EDA 技术就是以计算机为工具,在 EDA 软件平台上,对以硬件描述语言 HDL 为统逻描述手段完成的设计文件自动地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑行局布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。设计者的工作仅限于利用软件的方式,即利用硬件描述语言来完成对系统硬件功能的描述,在 EDA 工具的帮助下就可以得到最后的设计结果。尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。EDA 技术中最为瞩目的功能,即最具现代电子设计技术特征的功能就是日益强大的逻辑设计仿真测试技术。EDA 仿真测试技术只需通过计算机就能对所设

13、计的电子系统从各种不同层次的系统性能特点完成一系列准确的测试与仿真操作,在完成实际系统的安装后还能对系统上的目标器件进行所谓边界扫锚测试。这一切都极大地提高了大规模系统电子设计的自动化程度。另一方面,高速发展的 CPLD/FPGA 器件又为 EDA 技术的不断进步奠定可坚实的物质基础。CPLD/FPGA 器件更广泛的应用及厂商间的竞争,使得普通的设计人员获得廉价的器件和 EDA 软件成为可能。现代的 EDA 工具软件已突破了早期仅能进行 PCB 版图设计,或类似某些仅限于电路功能模拟的、纯软件范围的局限,以最终实现可靠的硬件系统为目标,配备了系统设计自动化的全部工具。如配置了各种常用的硬件描叙

14、平台 VHDL、Verilog HDL、ABEL HDL 等;配置了多种能兼用和混合使用的逻辑描述输入工具,如硬件描述语言文本输入法(其中包括布尔方程描述方式、原理图描述方式、状态图描述方式等)以及原理图输入法、波形输入法等;同时还配置了高性能的逻辑综合、优化和仿真模拟工具。1.2 硬件描述语言硬件描述语言(Hardware Description Language )是硬件设计人员和电子设计自动化(EDA)工具之间的界面。其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。即利用计算机的巨大能力对用verilog HDL 或 VHDL 建模的复杂数字逻辑进行仿真,然后再自动综合以生成

15、符合要求且在电路结构上可以实现的数字逻辑网表(Netlist),根据网表和某种工艺的器件自动生成具体电路, 然后生成该工艺条件下这种具体电路的延时模型。仿真验证无误后,用于制造 ASIC 芯片或写入 CPLD 和 FPGA 器件中。随着 PC 平台上的 EDA 工具的发展,PC 平台上的 Verilog HDL 和 VHDL 仿真综合性能已相当优越,这就为大规模普及这种新技术铺平了道路。目前国内只有少数重点设计单位和高校有一些工作站平台上的 EDA 工具,而且大多数只是做一些线路图和版图级的仿真与设计,只有个别单位展开了利用 Verilog HDL 和 VHDL 模型(包括可综合和不可综合)的

16、进行复杂的数字逻辑系统的设计。随着电子系统向集成化、大规模、高速度的方向发展,HDL 语言将成为电子系统硬件设计人员必须掌握的语言。1.2.1 Verilog HDL 语言Verilog HDL 是在 1983 年,由 GDA(Gate Way Design Automatio)公司的 Phil Moorby首创的。Phil Moorby 后来成为 VerilogXL 的主要设计者和(cadence Design System)的第一个合伙人。在 1984-1985 年 Moorby 设计出第一个关于 VerilogXL 的仿真器,1986年他对 Verilog HDL 的发展又作出另一个巨大

17、贡献,提出了用于快速门级仿真的 XL 算法。随着 VerilogXL 算法的成功,Verilog HDL 语言得到迅速发展。1989 年cadence 公司收购了 GDA 公司,Verilog HDL 语言成为 Cadence 公司的私有财产,1990 年,Cadence 公司公开了 Verilog HDL 语言,成立了 OVI(Open Verilog International)组织来负责 Verilog HDL 的发展。IEEE 于 1995 年制定了 Verilog HDL 的 IEEE 标准,即 Verilog HDL 1364-1995。1987 年,IEEE 接受 VHDL(VH

18、SIC Hadeware Description Language)为标准 HDL,即 IEEE1076-87 标准,1993 年进一步修订,定为 ANSI/IEEE1076-93 标准。现在很多 EDA 供应商把 Verilog HDL 作为其 EDA 软件输入/输出的标准。例如,Cadence、Synopsys、View logic、Mentor Graphic 等厂商都提供了 VHDL 的支持。1.2.2 VHDL 语言VHDL(Very High Speed Integrated Circuit Hard are Description Language,超高集成电路硬件描叙语言)诞生

19、于 1982 年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为 IEEE(The Institute of Electrical and Electronics)的一种工业标准硬件描叙语言。VHDL 主要用于描述数字系统的结构、行为、功能和接口,非常适合用于可编程逻辑芯片的应用设计。除了含有许多具有硬件特征的语句外,VHDL 的语言形式和描述风格与句法十分类似于一般的计算机高级语言。VHDL 的程序特点是将一项工程设计,或称为设计实体(可以是个元件、电路模块或一个系统)分成外部(或称可示部分,即端口)和内部(或称为不可视部分,即结构体)两部分,外部负责对设计实体和端口引脚命名和说明

20、,内部负责对模块功能和算法进行描述。在对一个设计实体定义了外部界面后,一旦其内部结构、功能开发完成,即可生成共享功能模块,这就意味着,在顶层综合或其他设计中可以直接调用这个实体模块。VHDL 具有较强的行为描述能力,可避开具体的器件结构,从逻辑功能和行为上进行描述和设计。1.2.3 Verilog HDL 与 VHDL 的比较Verilog HDL 和 VHDL 作为描述硬件电路设计的语言,其共同的特点在于:能形式化地抽象表示电路的行为和结构;支持逻辑设计中层次与范围的描述;可借用高级语言的精巧结构来简化电路行为的描述;具有电路仿真与验证机制以保证设计的正确性;支持电路描述由高层到低层的综合转

21、换;硬件描述与实现工艺无关;便于文档管理;易于理解和设计重用。目前版本的 Verilog HDL 与 VHDL 在行为级抽象建模的覆盖范围方面也有所不同。一般认为 Verilog HDL 在系统抽象方面比 VHDL 强一些。Verilog HDL 较为适合算法级(Alogrithem)、寄存器传输级(RTL)、逻辑级(Logic)、门级(Gate)、设计。而 VHDL更为适合特大型的系统级(System)设计。1.2.4 Verilog HDL 和 Quartus II 在设计数字电路中的应用以 Verilog HDL 为工具的 EDA 设计方法与传统的人工设计方法相比,有以下几个优点:1、缩

22、短了开发周期;2、提高了效率;3、产品的质量得到了提高。使用 Quartus II 作为开发环境时应该根据软件支持的芯片资源情况选择合适的设计层次。1.2.5 用 EDA 方法设计数字系统的灵活性用 EDA 方法设计数字系统,就是以硬件描述语言为系统逻辑描述的主要手段完成计数器设计文件,再运用 EDA 开发软件,对设计文件自动地完成逻辑编译、化间、分割、综合及优化逻辑仿真。直到对特定目标芯片的适配编译、逻辑映射和编程下载。在本文中是以 EDA 技术中的 ISP 软件为开发平台,来说明 EDA 方法设计数字系统的灵活性。1、设计输入方式的灵活性,使用 EDA 方法设计数字系统可以按照设计要求和硬

23、件描述语言的语法规则编写输入文件,而把其余的大部分工作留给计算机完成,真正体现了 EDA 方法的优点。尤其是设计复杂的数字系统或者需要改动系统功能时,设计效率可成倍提高,EDA 方法的优越性就会更加突出;2、功能仿真的灵活性,用 EDA 方法设计数字系统是同一个测试向量可以对任何一种设计输入方式产生的源文件进行仿真,而不许要单独编写测试文件;3、功能扩展的灵活性,在数字系统设计输入过程中,用 EDA 方法实现了硬件设计软件化,所以改动源文件的内容即可改变系统功能,使其扩展为复杂度更高的数字系统。1.3 设计指标(1)计时器能显示 1/10s 的时间,故提供给计时器内部定时的时钟脉冲频率应大于1

24、0Hz。(2)计时器计时长度为 99.9 秒,在一般计时应用中足够了,设计一个4位LED数码显示“秒表”,显示时间为99.900.0秒,每秒自动减一,精度为0.1。(3)设置复位和启/停开关,复位开关用来使计时器清 0,并作好清 0 准备。启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,数码管显示从99.9开始每秒自动减一,再按一下启/停开关计时暂停。复位开关可以在任何情况下使用,在计时过程中,只要按一下复位开关,计时进程就终止,并对计时器清零。第 2 章 EDA设计方法及其应用传统的电路设计方法都是自底向上进行设计的,也就是首先确定可用的元器件,然后根据这

25、些器件进行逻辑设计,完成个模块后进行连接,最后形成系统。而基于 EDA 技术的设计方法则是自顶向下进行设计的,也就是首先采用可完全独立于目标器件芯片物理结构的硬件描述语言,在系统的基本功能或行为级上对设计的产品进行描述和定义,结合多层次的仿真技术,在确保设计的可行性于正确的前提下,完成功能确认。然后利用 EDA 工具的逻辑综合功能,进行逻辑映射及布局布线,在利用产生的仿真文件进行包括功能和时序的验证,以确保实际系统的性能。2.1 分析方法在基于EDA技术的系统设计最重要的环节在系统的基本功能或行为级上对设计的产品进行描述和定义时,我们是采用自顶向下分析,自底向上设计。所谓“自顶向下分析”就是指

26、将数字系统的整体分解为各个系统和模块,若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模块,层层分解,直至整个系统中各个子系统关系合理、并便于逻辑电路级的设计和实现为止。图 2.1 是一个自顶向下设计的结构分解图。所谓“自底向上设计”,就是在自顶向下分析建立各种设计模型的基础上,先进行低层模块的设计,完成低层模块设计后再进行高一层次的设计,依次类推,直到完成顶层的设计为止。采用该方法进行分析和设计时,高层设计进行功能和接口描述,说明模块的功能和接口,模块功能的更详细的描述在下一层次说明,最底层的设计才涉及具体的寄存器和逻辑门电路等方式的描述。采用自顶向下的设计方法有如下优点:(1)自

27、顶向下设计方法是一种模块化设计方法。对设计的描述从上到下逐步由粗略到详细,符合常规的逻辑思维习惯。(2)由于高层设计同器件无关,可以完全独立于目标器件的结构,在设计的最初阶段,设计人员可以不受芯片结构的约束,集中精力对产品进行最适应市场需求的设计,从而避免了传统设计方法的再设计风险,缩短了产品的上市周期。(3)由于系统采用硬件描述语言进行设计,可以完全对立于目标器件的结构,因此设计易于在各种集成电路工艺或可编程器件之间移植。(4)适合多个设计同时进行设计。现在随着技术的不断进步,许多设计由一个设计者已无法完成,必须经过多个设计者分工协作完成一项设计的情况越来越多,在这种情况下,应用自顶向下设计

28、方法便于由多个设计者同时进行设计,对设计任务进行合理分配,用系统工程的方法对设计进行管理。针对具体的设计,实施自顶向下设计方法的形式会有所不同,但均需要遵循以下两条原则:逐步分解功能,分层次进行设计。在个设计层次上,考虑相应的仿真验证问题。结构分解行为建模完整数分支部分数分支行为建模图2.1 自顶而下结构分解图2.2 描述方法2.2.1 文本描述方法在 EDA 的设计中,最一般化、普遍性的设计表示方式就是文本描述方式,也就是利用硬件描述语言(HDL)用软件编程方式来表达自己的设计。根据文本表示方式所使用的抽象层次,我们又可将文本描述方式分为:行为描述,结构描述,数据流(寄存器传输级)描述。行为

29、描述就是设计一个部件是通过定义它的输入/输出响应来描述,也就是说对一个部件的设计,只描述了所希望电路的功能/行为,而没有直接指明或涉及实现这些行为的硬件结构。结构描述就是设计一个部件是通过一些基本部件的互连来描述,也就是说对一个不见的设计,是通过描述该设计部件的硬件结构/硬件组成来表示的。数据流描述就是一个部件通过一些寄存器部件的互连并在寄存器之间插入组合逻辑来描述,这类积存器或者显示地通过元件具体装配,或者通过推论作隐含的描述。2.2.2 图形描述方式在 EDA 的设计中,有时也用图形描述方式来表示自己的设计。图形描述方式常用的有原理图、状态图、波形图等。图形表示方式的优点是直观、方便,但是

30、其存在以下缺点:设计的可读性差;(2)设计的复用性差;(3)设计的移植性差;(4)入档、交流、交付不方便。2.2.3 文本、图形混用方式在 EDA 的设计中,根据自己设计所使用的性能及如何使设计简单易行,有时也经常采用文本、图形混用的形式。2.3 实现方法2.3.1 硬件描述语言编程实现法硬件描述语言编程实现法,就是用 VHDL、Verilog HDL 等硬件描述语言来表达自己的设计思想,并使用 EDA 工具提供的文本编辑器以文本的方式进行设计输入的一种实现方法。它是 EDA 的设计中最一般化、最具普遍性的实现方法,根据设计系统的实际情况,实际可从行为级、寄存器级、门电路级等不同层次进行描述,

31、非常灵活,并且设计的移植性非常好。所有 EDA 工具都支持文本方式的编程和编译。2.3.2 原理图设计实现法原理图设计实现法,就是利用原理图表示自己的设计思想,并使用 EDA 工具提供的图形编辑器以原理图的方式进行设计输入的一种实现方法。原理图输入法的实现方式,简单、直观、方便,并且可利用许多现成的单元器件或根据需要设计的元器件。2.3.3 参数可设置兆功能块实现法参数可设置兆功能块实现法,就是设计者可以根据实际电路的设计需要,选择 LPM(Library of Parameterized Moduels,参数可设置模块库,简称 LPM)库中的适当模块,并为其设定适当的参数以满足自己设计的需要

32、的一中实现方法。作为 EDIF 标准的一部分,LPM 形式得到了 EDA 工具的良好支持,LPM 中功能模块的内容丰富。在 EDA 的设计中,以图形或硬件描述语言模块形式调用兆功能块进行设计,使得基于 EDA 技术的电子设计能够有效地利用其他优秀电子工程技术人员的硬件设计成果,使得设计效率和可靠性有了很大的提高。第 3 章 设计思想与方案论证实现数字秒表的方法有多种,可以用单片机作为控制芯片,采用单片机,数字显示采用共阳七段 LED 显示器,P0 口输出段码数据,P2.0-P2.5 口作为列扫描输出,P1.0、P1.1、P1.3 口接三个开关按钮,用以实现调时及秒表时钟功能切换设置。也可以用

33、FPGA 作为控制芯片,采用 EDA 技术用 VHDL 语言实现硬件电路。当然每一种方案都有其各自的优点。本章说明了用 FPGA 作为控制芯片实现数字秒表的方案。3.1 设计思想基于 FPGA 的数字秒表的设计其设计思路为:采用Altera DE2上的50M时钟信号,经过分频器产生秒表计时周期为0.01s的时钟,再经过计数器,分别对秒表的百分位、十分位、秒、秒十位、分、分十位进行计数。On off为启动/暂停控制信号,当它为0时,启动计时,当它为1时,计时暂停。clr为复位信号,当该信号有效时,计数器和译码清零,此时数码管显示输出为00:00:00。在总体电路图中,根据设计要求,需要两个输入控

34、制信号on off和clr。由于开发板上除了拨动开关就是瞬时的按键开关,且按键开关平时都呈高电平,按一下为低电平。故在实际测试时采用了拨动开关SW0来控制秒表的启动/暂停,通过KEY0来控制秒表的清零。设计要求(秒表的功能描述):(1)要求设置复位开关。当按下复位开关时,秒表清零并做好计时准备。在任何情况下只要按下复位开关,秒表都要无条件地进行复位操作,即使是在计时过程中也要无条件地进行清零操作。(2)要求设置启/停开关。当按下启/停开关后,将启动秒表并开始计时,当再按一下启/停开关时,将终止秒表的计时操作。(3)要求计时精确度大于 0.1 秒。要求设计的计时器能够显示秒(2位)、0.1 秒(

35、1位),的时间。(4)要求秒表的最长计时时间为秒表计时长度为 99.9 秒.3.2 论证分析课题要求选定 FPGA/CPLD 芯片作为系统的 MCU,FPGA 是英文 Field Programmable Gate Array 的缩写,即现场可编程门阵列,它是在 PAL、GAL、EPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。可在有现成的条件下,FPGA 有其具大的优势比如它的高速性,让我们更清楚地认识到硬件的性能及硬件描述语言对硬件的驱动。FPGA 是 ASIC

36、电路中设计周期最短、开发费用最低、风险最小的器件之一。本设计需要 PC 计算机一台以及 FPGA 实验板一个,这些条件都具备。第 4 章 系统设计整个系统设计是采用自顶向下分析,自底向上设计。将数字秒表系统的整体分解为各个模块电路。本章详细介绍了数字秒表系统的各个模块的设计,并对各个模块的每一个部分进行了分析,在第五章对系统模型进行了访真与程序调试。各模块之间的每一个环节都是深思熟虑而成,各自完成相应的功能并组成一个统一的整体。4.1 顶层电路设计数字秒表设计整体运用自顶向下的设计思想,将系统按功能逐层分割的层次化设计方法。在顶层设计中,要对内部各功能块的连接关系和对外的接口关系进行描述,而功

37、能块实际的逻辑功能和具体的实现形式则由下一层模块来描述。根据数字秒表的系统原理框图图 4.1 设计系统的顶层电路。按照自顶向下的设计思路, 编写各个模块的源程序, 最后再对各个模块进行组合, 编写顶层描述的源程序。4.2 数字秒表的设计原理本设计可分为六个主要模块:(1)键输入消抖模块(2)时钟分频电路模块(3)控制电路模块(4)计时电路模块(5)存储器模块(6)动态扫描译码显示模块各个输入/输出端口的作用如下:(1)CLK 为外部时钟信号,CLR 为复位信号。(2)K2 为启/停开关,用于开始/结束计时操作。(3)K1 为复位键,用于复位以及从观看记录模式切换回计时模式用。(4)K3 是记录

38、数据键,K4 是读取数据以及进入观看记录模式的键。(5)DIGTAL7.0是数码管段选信号输出,SELDE3.0是数码管位选信号输出。4.3 键输入消抖模块秒表面板上有 4 个按键:K1(复位)键,K2(启停)键,K3(记录)键,K4(显示)键。因为设计采用的是机械式的按键,由于存在机械触动的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会马上断开。因而在闭合及断开按键的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为 5-10ms。按键的闭合稳定时间的长短由操作人员的按键动作决定,一般为零点几秒至数秒。按键抖动会引起被误读多次。为确保 FPGA 对键的闭合

39、仅作一次处理,必须去除按键抖动。通常在按键较少时可用硬件方法消除抖动,一般采用 RS 触发器作为常用的消抖电路,如果按键较多时,常用软件消除抖动。在 EDA 的设计应用中,软件消抖的方法即可使用 RS 触发器进行消抖,也可通过检测按键按下的时间进行消抖。工作原理本模块描述的防抖动电路属于计数器型防抖动电路。其工作原理是,输入一个 500HZ的时钟信号,设置一个模值为 4 的控制计数器,在人工按键 KEY=0时,执行加 1 计数,如连续 4 次检测到低电平则 JSQ=3,即当 JSQ=3 时输出低电平,4 次以上检测到低电平,JSQ 依然等于 3,也一直输出低电平,这就确保了当按键信号持续低电平

40、 6MS 以上按键信号才有效,抖动期间的低电平持续时间不足以输出低电平。如没有连续 4 次以上检测到低电平,则 JSQ 清零。如检测到高电平,JSQ 也清零,这就导致了在抖动期间不可能输出低电平,唯有在稳定期间才可能输出低电平,因此防抖动得以实现。因为消抖电路后接的是同步设计的控制模块,故需要将输出信号的长度变为两个周期的控制模块同步时钟的长度,因此在输出电路后,再接入一个 20MHZ 的 CLK2 信号,当输出从 1 变为 0 时,在时钟跳变沿,输出低电平 0,在下一个时钟跳变沿则变为 1,在当输出为 1 时,则一直输出 1,也就是不论输出为多长的低电平,经过此部分同步变化后,只会输出两个周

41、期 CLK2 的低电平输出,以供控制模块使用。4.4 时钟分频电路模块在基于 EDA 技术的数字电路系统设计中,分频电路应用十分广泛。常常使用分频电路来得到数字系统中各种不同频率的控制信号。所谓分频电路,就是将一个给定的频率较高的数字输入信号经过适当处理后,产生一个或数个频率较低的数字输出信号。分频电路本质上是加法计数器的变种,其计数值由 N=FIN(输入频率)/FOUT(输出频率)决定,其输出不是一般计数器的计数结果,而是根据分频常数对输出信号的高,低电平控制。本设计需要一个计时范围为 0.01s59.99 秒的秒表,首先需要获得一个比较精确的计时基准信号,这里时周期为 1/100 s 的计

42、时脉冲,采用一个时钟信号源 20MHZ 经 20 万倍分频后获得一个精确的 100HZ 的脉冲来作为计数器的时钟信号 CLK_OUT,数码管的扫描频率采用经 2000 倍分频后的 10000HZ 的脉冲 CLK_OUT2,按键消抖电路部分需要采用经 4 万倍分频后产生的 500HZ 的脉冲 CLK_OUT3 作为检测信号。4.5 控制电路模块为了实现数字秒表的各种相应功能,主控电路对各种输入控制信号进行处理。作出相应的调整,发出一系列的控制输出信号。如对数字秒表实现复位操作,启、停控制,以及记录读取控制,控制模块为同步电路设计,在时钟上升沿才变化,主控电路的功能:(1)实现系统复位:当 K1

43、键按下时,输出 CLR=0以及 Q=0信号,实现计时清零并停止功能,当系统处于观看记录模式式,按下 K1 则不清零,而是输出 RD=0切换回计时模式。启/停控制:用于开始/结束计时操作。数字秒表的启/停是通过控制送给计数器的使能端来实现的。当按下 K2 键后,输出端 Q 的状态发生反转。Q=1,秒表处于计时状态,当 Q=0 时,计数器暂停计时。(3)记录功能:通过在计时时按下记录键 K3 实现对数据的记录,每按一下记录一组数据,按下时输出写信号 WR=1以及地址信号至存储器在写时序内将此刻的时间数据记入存储器的相应地址中,释放后写信号 WR=0。(4)读取功能:通过按下读取功能键 K4 进入观

44、看记录模式,按下时输出读信号 RD=1以及地址信号至存储器,在读时序内从存储器的相应地址读出数据传到模式选择模块,RD=1时为观看记录模式,在此模式下按下复位键 K1 可使 RD=0,回到计时模式。主控电路各端口作用:输入端:(1)CLK 为外部时钟信号。(2)K2 为启/停信号输入端。(3)K1 为复位输入端。(4)K3 为记录写信号输入端。(5)K4 为读取信号输入端。输出端:(1)Q:为启/停控制输出信号。(2)CLR:清零复位输出信号。(3)WR:记录写控制输出信号。(4)RD:读取加模式切换控制输出信号。(5)Adrw1.0:写地址输出信号。(6)Adrr1.0:读地址输出信号。4.

45、6 计时电路模块计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单 元则由一系列具有存储信息功能的各类触发器构成,这些触发器有 RS 触发器、T 触发器、D 触发器及 JK 触发器等。计数器在数字系统中应用广泛,如在电子计算 机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。计数器有很多作用,在数字电子技术中应用的最多的时序逻辑电路。计数器不仅能用于对时

46、钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。但是并无法显示计算结果,一般都是要通过外接 LCD 或 LED 屏才能显示。计数器的种类:如果按照计数器中的触发器是否同时翻转分类,可将计数器分为同步计数器和异步计数器两种。常见的同步计数器有 74160 系列,74LS190 系列,常见的异步计数器有 74LS290 系列。(2)如果按照技术过程中数字增减分类,又可将计数器分为加法计数器、减法计数器和可逆计数器,随时钟信号不断增加的为加法计数器,不断减少的为减法计数器,可增可减的叫做可逆计数器。另外还有很多种分类不一一列举,但是最常用的是第一种分类,因为这种分类可以使

47、人一目了然,知道这个计数器到底是什么触发方式,以便于设计者进行电路的设计。计数器的原理是将几个触发器按照一定的顺序连接起来,然后根据触发器的状态按照一定的规律随时钟的变化来记忆时钟的个数。掌握了计数器的这个原理后,就很容易采用 VHDL 语言来对计数器进行描述了。在本次设计中,因为计数器电路非常容易产生毛刺,为了系统精度和稳定可靠性着想,采用了同步计数器设计以及格雷码计数器设计,来最大限度的消除毛刺,系统需要 3个模 10 格雷码计数器以及一个模 6 格雷码计数器,其中 0.01S 位计时器由 100HZ 脉冲作为输入时钟,1S 计时器的时钟由0.1S 的进位输出作为时钟信号,10S 计时器的

48、时钟由 1S 的进位输出作为时钟信号。毛刺是因为传输信号到达终点时间不一致,电路里的延时不一致所导致的信号跳变时间不一致而出现的一些误差,这些误差会影响系统稳定可靠性,对于对毛刺敏感的控制端可能会出现很严重的错误,毛刺的消除是有必要的。普通计数器因为每次几路信号同时多位跳变,必然会产生计数器型的毛刺,消除的该种毛刺的最好办法就是改用每次只跳变一位信号的格雷码来做计数,普通 4 位格雷码是到 15 回 0 的,但是我们需要到 9 回 0 的,所以要在原有格雷码的基础上做些修改,对应的 0 到 9 数字。在设计格雷码计数器的时候可以使用状态机,给每个码设定一个状态然后用时钟来控制它在状态间转换,这

49、样就完成了我们需要的功能, 但是若是状态比较多,如 n=6,这时就会有 64 个状态,显然再用状态机非常不方便,当然理论上是可以的。或者是设计一个二进制计数器,通过它来计数,然后利用编码转换就可以得到对应的格雷码计数器。我们采用算好哪一位下次时钟沿跳变时需要变化来实现格雷码计数器。计时电路模块输入端有使能端 EN,100HZ 时钟输入 CLK,清零输入 CLR,输出端有0.1S 位 1S 位 10S 位和 CO 进位端,在 10HZ 时钟输入给 0.1S 位并在控制模块输出 Q=1时开始计时,Q=0时暂停计时,控制端按下清零键则 Q=0,CLR=0,使计时器停止计时并全部清零。4.7 模式选择

50、模块本次设计计时器因为有记录功能,故需要切换计时模式和观看记录数据模式,该模块的作用为在 RD 信号为 1 时切换为从存储器里读取相应地址的数据 I015.0传输到动态扫描译码显示模块显示记录的数据,在 RD 信号为 0 时为普通计时状态,输入 I115.0传输到动态扫描译码显示模块显示计时。4.8 存储器模块本设计添加了记录数据功能,因此需要存储器来存储数据,ROM 和 RAM 属于通用大规模器件,一般不需要自行设计,但是在数字系统中,有时也需要设计一些小型的存储器件,用于特定的用途:例如临时存放数据,构成查表运算等。设计时需要注意器件的大小,一个 16x8 位的 RAM 大约占用 200

51、个门,而 256x16 的 RAM 则需要 6200 门以上,因此大规模 RAM 不适合于采用 PLD 设计,最好采用通用器件,本次设计只需要记录几组数据即可,只需设计 Nx16 的 RAM,N 为需要记录的数据组数。RAM的指标为存储容量和字长,其内部可以分为地址译码和存储单元两部分,外部端口为:读写端 WR/RD,时钟端 CLK,2 位地址端 ADRW/ADRR,16 位数据端 DI/DO,可存储 4 组 16 位数据,即 4 组时间数据,读写控制信号和地址信号由控制模块产生。4.9 动态扫描译码显示模块在数字电路系统中,人们常常需要将数字电路中表示数字、文字、符号的二进制代码翻译成人们习

52、惯的形式,并且使其直观地显示出来以便直接读数。为了能够直观地显示数字电路系统中的有关数据,人们常常使用七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元多一个小数点显示。七段数码管的的基本原理是将所要显示的数字翻译成构成该电路中可发光二极管的驱动信号,分别用 A、B、C、D、E、F、G 来表示不同位置的二极管,驱动信号会驱动不同位置的的发光二极管发光来显示出 0 到 9 的数字,因此要将二进制数据信号转换为可显示的数字的驱动信号需要特定的译码电路。数码管分共阳和共阴型,共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,在应用时应将公共极 COM 接到+

53、5V,当某一字段发光二极管的阴极为电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极 COM 的数码管,在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮,本次设计使用共阳数码管。数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个 I/O 端口进行驱动,或者使用如 BCD 码

54、二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用 I/O 端口多,如驱动 5 个数码管静态显示则需要 5×8=40 根 I/O端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。数码管动态显示接口是应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的 8 个显示笔划"a,b,c,d,e,f,g,d,p"的同名端连在一起,另外为每个数码管的公共极增加位选通控制电路,位选通由各自独立的 I/O 线控制,当系统输出显示码时,所有数码管都接收到相同的显示码,但究竟是那个数码管会显示出数字,取决于系统对位选端电路的控制

55、,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的选通端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为 12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的 I/O 端口,而且功功耗更低。在本次设计中将采用八段共阳型数码管动态显示电路的来设计,动态显示需要段选信号和位选信号,位选信号通过格雷码计数器生成,为了最终实际驱动数码管,还

56、需要将其转换成标准的位选信号 selout5.0,因为计时器精度要 0.1s,为了保持足够的扫描频率,设定输入时钟为 10000HZ。前级会送来各位的计时信号,并且是格雷码,要将它们译码转换为数码管发光的段选信号 digout7.0,当位选信号变化时,段选信号会随着位选信号变换成各位对应的信号,此间为了消除前级的送来信号的毛刺,加上了 D 触发器配合 CLK 的上升沿变化来消除输入信号的毛刺。译码器必然会产生很多毛刺,为了消除毛刺,在考量了各信号的相对延迟时间后,在输出端加上了 D 触发器与特定的延迟时钟 clk 的下降沿输入来消除毛刺,当延迟时钟跳变时,D 触发器输入端的毛刺已经过去,输出的则是稳定后的信号。最后将 selout5.0与 digout7.0分配到连接数码管的各个引脚就可动态显示相应数字了。第5章 程序设计module clock(clk,key,dig,seg);input clk;input 1:0 key;output7:0 dig;output7:0seg;reg7:0seg_r;reg7:0dig_r;reg3:0disp_dat;reg24:0cou

温馨提示

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

评论

0/150

提交评论