


已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于FPGA的数字秒表的设计第1章 绪 论电子设计的必由之路是数字化已成为共识。在数字化的道路上,我国电子设计技术的发展经历了,并将继续经历许多重大的变革与飞跃、从应用SSI通用数字电路芯片构成电路系统,到广泛地应用MCU(微控制器或单片机),在电子系统设计上发生厂具有里程碑意义的飞跃,这一飞跃不但克服了纯SSI数字电路系统许多不可逾越的困难,同时也为电子设计技术的应用开拓了更广阔的前景。它使得电子系统的智能化水平在广度和深度上产生了质的飞跃。MCU的广便应用并没有抛弃SSI的应用,而是为它们在电于系统中找到了更合理的地位。随着社会经济发展的延伸、各类新型电子产品的开发为我们提出了许多全新的课题和更高的要求。FPGA/CPLD(现场可编程逻辑器件复杂可编程逻辑器件)在EDA基础上的广泛应用从某种意义上说,新的电子系统运转的物理机制又将回到原来的纯数字电路结构,但这是种更高层次的循环,应是一次否定之否定的运动,它在更高层次上容纳了过去数字技术的优秀部分,对MCU系统将是种扬弃,但在电子设计的技术操作和系统构成的整体上却发生质的飞跃。如果说MCU在逻辑的实现上是无限的话,那么高速发展的FPGA/CPLD不但包括了MCU这一特点,并兼有串、并工作方式和高速、高可靠性以及宽口径适用等诸多方面的特点、不仅如此,随着EDA技术的发展和FPGACPLD在深亚微米领域的进军、它们与MCU、MPU、DSP、AD、DA、RAM和ROM等独立器件问的物理与功能界限正日趋模糊。特别是软硬IP核产业的迅猛发展,嵌入式通用与标准CPLD和FPGA器件的出现,片上系统已近在咫尺。以大规模集成电路为物质基础的EDA技术终于打破了软硬件之间最后的屏障,使软硬件工程师们有了共同的语言1。1.1 课题背景当前电子系统的设计正朝着速度快,容量大,体积小,质量轻,用电省的方向发展。推动该潮流迅速发展的决定性因素就是使用了现代化的EDA设计工具。EDA是电子设计自动化(Electronic Design Automation)的缩写,是90年代初,从CAD(计算机辅助没计)、CAM(算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术就是以计算机为工具,在EDA软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件自动地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑行局布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。设计者的工作仅限于利用软件的方式,即利用硬件描述语言来完成对系统硬件功能的描述,在EDA工具的帮助下就可以得到最后的设计结果。尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效2。EDA技术中最为瞩目的功能,即最具现代电子设计技术特征的功能就是日益强大的逻辑设计仿真测试技术。EDA仿真测试技术只需通过计算机就能对所设计的电子系统从各种不同层次的系统性能特点完成一系列准确的测试与仿真操作,在完成实际系统的安装后还能对系统上的目标器件进行所谓边界扫锚测试。这一切都极大地提高了大规模系统电子设计的自动化程度。另一方面,高速发展的CPLD/FPGA器件又为EDA技术的不断进步奠定可坚实的物质基础。CPLD/FPGA器件更广泛的应用及厂商间的竞争,使得普通的设计人员获得廉价的器件和EDA软件成为可能。现代的EDA工具软件已突破了早期仅能进行PCB版图设计,或类似某些仅限于电路功能模拟的、纯软件范围的局限,以最终实现可靠的硬件系统为目标,配备了系统设计自动化的全部工具。如配置了各种常用的硬件描叙平台VHDL、Verilog HDL、ABEL HDL等;配置了多种能兼用和混合使用的逻辑描述输入工具,如硬件描述语言文本输入法(其中包括布尔方程描述方式、原理图描述方式、状态图描述方式等)以及原理图输入法、波形输入法等;同时还配置了高性能的逻辑综合、优化和仿真模拟工具3。1.2 硬件描述语言硬件描述语言(Hardware Description Language )是硬件设计人员和电子设计自动化(EDA)工具之间的界面。其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。即利用计算机的巨大能力对用Verilog HDL或VHDL 建模的复杂数字逻辑进行仿真,然后再自动综合以生成符合要求且在电路结构上可以实现的数字逻辑网表(Netlist),根据网表和某种工艺的器件自动生成具体电路,然后生成该工艺条件下这种具体电路的延时模型。仿真验证无误后,用于制造ASIC芯片或写入CPLD和FPGA器件中。随着PC平台上的EDA工具的发展,PC平台上的Verilog HDL和VHDL仿真综合性能已相当优越,这就为大规模普及这种新技术铺平了道路。目前国内只有少数重点设计单位和高校有一些工作站平台上的EDA工具,而且大多数只是做一些线路图和版图级的仿真与设计,只有个别单位展开了利用Verilog HDL和VHDL模型(包括可综合和不可综合)的进行复杂的数字逻辑系统的设计。随着电子系统向集成化、大规模、高速度的方向发展,HDL语言将成为电子系统硬件设计人员必须掌握的语言3。1.2.1 VHDL语言VHDL(Very High Speed Integrated Circuit Hard ware Description Language,超高速集成电路硬件描述语言)诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(The Institute of Electrical and Electronics)的一种工业标准硬件描叙语言。VHDL主要用于描述数字系统的结构、行为、功能和接口,非常适合用于可编程逻辑芯片的应用设计。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。VHDL的程序特点是将一项工程设计,或称为设计实体(可以是个元件、电路模块或一个系统)分成外部(或称可示部分,即端口)和内部(或称为不可视部分,即结构体)两部分,外部负责对设计实体和端口引脚命名和说明,内部负责对模块功能和算法进行描述。在对一个设计实体定义了外部界面后,一旦其内部结构、功能开发完成,即可生成共享功能模块,这就意味着,在顶层综合或其他设计中可以直接调用这个实体模块。VHDL具有较强的行为描述能力,可避开具体的器件结构,从逻辑功能和行为上进行描述和设计3。1.2.2 Verilog HDL 语言Verilog HDL是在1983年,由GDA(Gate Way Design Automatio)公司的Phil Moorby首创的。Phil Moorby后来成为Verilog的主要设计者和(adence Design System)的第一个合伙人。在1984-1985年Moorby设计出第一个关于Verilog的仿真器,1986年他对Verilog HDL的发展又作出另一个巨大贡献,提出了用于快速门级仿真的算法。随着Verilog算法的成功,Verilog HDL语言得到迅速发展。1989年adence公司收购了公司,Verilog HDL语言成为Cadence公司的私有财产,1990年,Cadence公司公开了Verilog HDL语言,成立了OVI(Open Verilog Internatiinal)组织来负责Verilog HDL的发展。IEEE于1995年制定了Verilog HDL的IEEE标准,即Verilog HDL 1364-1995。1987年,IEEE接受VHDL(VHSIC Hadeware Description Language)为标准HDL,即IEEE 1076-87标准,1993年进一步修订,定为ANSI/IEEE1076-93标准。现在很多EDA供应商把Verilog HDL作为其EDA软件输入/输出的标准。例如,Cadence、Synopsys、Viewlogic、Mentor Graphic等厂商都提供了VHDL的支持4。1.2.3 Verilog HDL与VHDL的比较Verilog HDL和VHDL作为描述硬件电路设计的语言,其共同的特点在于:能形式化地抽象表示电路的行为和结构;支持逻辑设计中层次与范围的描述;可借用高级语言的精巧结构来简化电路行为的描述;具有电路仿真与验证机制以保证设计的正确性;支持电路描述由高层到低层的综合转换;硬件描述与实现工艺无关;便于文档管理;易于理解和设计重用。目前版本的Verilog HDL与VHDL在行为级抽象建模的覆盖范围方面也有所不同。一般认为Verilog HDL在系统抽象方面比VHDL强一些。Verilog HDL较为适合算法级(Alogrithem)、寄存器传输级(RTL)、逻辑级(Logic)、门级(Gate)、设计。而VHDL更为适合特大型的系统级(System)设计。1.2.4 VHDL设计中电路简化问题的探讨 随着集成电路技术的发展,用传统的方法进行芯片或系统设计已不能满足要求,迫切需要提高设计效率。在这样的技术背景下,能大大降低设计难度的VHDL设计方法正越来越广泛地被采用。但是 VHDL设计是行为级的设计所带来的问题是设计者的设计思考与电路结构相脱节。设计者主要是根据VHDL的语法规则对系统目标的逻辑行为进行描述,然后通过综合工具进行电路结构的综合、编译、优化,通过仿真工具进行逻辑功能仿真和系统时延的仿真。用VHDL进行集成电路的设计,牵涉到对VHDL语言的使用方法和对设计的理解程度。本文讨论了以下几个简化和优化电路设计的3个值得注意的方面:(1)在用VHDL进行设计中要注意避免不必要的寄存器描述。(2)在编写程序前要先对整个设计进行较深入的了解,科学的划分设计,多设想几种方案再进行比较,用多个较少位数的单元取代较多位数的单元。(3)在延时要求不高的情况下,可提取逻辑电路公因子,把它分解成含有中间变量的多级电路8。 1.2.5 VHDL和MAX+PLUSII在数字电路设计中的应用以VHDL为工具的EDA设计方法与传统的人工设计方法相比,有以下几个优点:1、缩短了开发周期;2、提高了效率;3、产品的质量得到了提高。用VHDL进行数字系统开发与设计,其设计的抽象层次有6个,分别是系统级、芯片级、寄存器级、门级、电路级和版图/硅片级,可以在不同的抽象层次级别上设计系统。使用MAX+PLUSII作为开发环境时应该根据软件支持的芯片资源情况选择合适的设计层次。在VHDL设计中,常常采用多进程描述的方法来进行程序设计,通过使用进程可以把整体的功能局部化,分块设计,多个进程通过进程间通信机制互相配合,达到设计要求。当进程比较多的时候,它们之间的配合问题就比较复杂,因此在设计之前应该合理规划安排9。1.2.6用EDA方法设计数字系统的灵活性用EDA方法设计数字系统,就是以硬件描述语言为系统逻辑描述的主要手段完成计数器设计文件,再运用EDA开发软件,对设计文件自动地完成逻辑编译、化间、分割、综合及优化逻辑仿真。直到对特定目标芯片的适配编译、逻辑映射和编程下载。在本文中是以EDA技术中的ISP软件为开发平台,来说明EDA方法设计数字系统的灵活性。1、设计输入方式的灵活性,使用EDA方法设计数字系统可以按照设计要求和硬件描述语言的语法规则编写输入文件,而把其余的大部分工作留给计算机完成,真正体现了EDA方法的优点。尤其是设计复杂的数字系统或者需要改动系统功能时,设计效率可成倍提高,EDA方法的优越性就会更加突出;2、功能仿真的灵活性,用EDA方法设计数字系统是同一个测试向量可以对任何一种设计输入方式产生的源文件进行仿真,而不许要单独编写测试文件;3、功能扩展的灵活性,在数字系统设计输入过程中,用EDA方法实现了硬件设计软件化,所以改动源文件的内容即可改变系统功能,使其扩展为复杂度更高的数字系统10。1.3 设计指标设计一个基于FPGA的数字秒表的具体化技术指标如下。1有启/停开关,用于开始/结束计时操作2 表计时长度为59.分59.99秒,超过计时长度,有溢出则报警,计时长度可手动设置。3 置复位开关,在任何情况下只要按下复位开关,秒表都要无条件进行复位清0操作。4 用FPGA器件实现,用VHDL语言编程,并进行下载,仿真。1.4 本文工作详细分析课题任务,对数字系统设计的历史和现状进行分析,并对数字秒表的VHDL设计原理进行了深入的研究,并将其综合。本文设计了一个基于FPGA的数字秒表,设计选用ALTERA公司的FPGA芯片FLEX10K系列的EPF10K10LC84-4,在开发软件MAX+PLUS2进行输入、编译、综合、仿真并下载到在系统可编程实验板中测试实现。信号源是由实验板上的时钟信号经分频而得到的0.0 1 秒信号。而我采用了 EDA 技术 ,整个设计仅分两步:首先,在MAXPLUS开发工具中 ,先用 VHDL语言分别编写出以上几个模块的文本文件 (称为底层文件) ,并将它们分别转换成相应的器件 ,然后分别进行时序仿真 ,每个器件的时序仿真结果与设计要求一致;然后,再将这几个模块共相关芯片按电路设计图连接起来,形成顶层文件后进行整个系统的综合 ,并将整个数字秒表作为一个器件进行时序仿真。仿真完成后,将程序下载到大规模可编程逻辑器件EPM7128SLC84-15中,确定引脚的功能,即可实现数字秒表的芯片化。第2章 EDA设计方法及其应用传统的电路设计方法都是自底向上进行设计的,也就是首先确定可用的元器件,然后根据这些器件进行逻辑设计,完成个模块后进行连接,最后形成系统。而基于EDA技术的设计方法则是自顶向下进行设计的,也就是首先采用可完全独立于目标器件芯片物理结构的硬件描述语言,在系统的基本功能或行为级上对设计的产品进行描述和定义,结合多层次的仿真技术,在确保设计的可行性于正确的前提下,完成功能确认。然后利用EDA工具的逻辑综合功能,进行逻辑映射及布局布线,在利用产生的仿真文件进行包括功能和时序的验证,以确保实际系统的性能5。2.1 分析方法在基于EDA技术的系统设计最重要的环节在系统的基本功能或行为级上对设计的产品进行描述和定义时,我们是采用自顶向下分析,自底向上设计。所谓“自顶向下分析”就是指将数字系统的整体分解为各个系统和模块,若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模块,层层分解,直至整个系统中各个子系统关系合理、并便于逻辑电路级的设计和实现为止。图2.1是一个自顶向下设计的结构分解图。所谓“自底向上设计”,就是在自顶向下分析建立各种设计模型的基础上,先进行低层模块的设计,完成低层模块设计后再进行高一层次的设计,依次类推,直到完成顶层的设计为止。采用该方法进行分析和设计时,高层设计进行功能和接口描述,说明模块的功能和接口,模块功能的更详细的描述在下一层次说明,最底层的设计才涉及具体的寄存器和逻辑门电路等方式的描述6。采用自顶向下的设计方法有如下优点: 自顶向下设计方法是一种模块化设计方法。对设计的描述从上到下逐步由粗略到详细,符合常规的逻辑思维习惯。 由于高层设计同器件无关,可以完全独立于目标器件的结构,在设计的最初阶段,设计人员可以不受芯片结构的约束,集中精力对产品进行最适应市场需求的设计,从而避免了传统设计方法的再设计风险,缩短了产品的上市周期。 由于系统采用硬件描述语言进行设计,可以完全对立于目标器件的结构,因此设计易于在各种集成电路工艺或可编程器件之间移植。 适合多个设计同时进行设计。现在随着技术的不断进步,许多设计由一个设计者已无法完成,必须经过多个设计者分工协作完成一项设计的情况越来越多,在这种情况下,应用自顶向下设计方法便于由多个设计者同时进行设计,对设计任务进行合理分配,用系统工程的方法对设计进行管理。针对具体的设计,实施自顶向下设计方法的形式会有所不同,但均需要遵循以下两条原则:逐步分解功能,分层次进行设计。在个设计层次上,考虑相应的 仿真验证问题。结构分解完整树设计部分树设计行为建模行为建模图2.1 自顶向下的结构分解图2.2 表示方法2.2.1文本表示方法在EDA的设计中,最一般化、普遍性的设计表示方式就是文本表示方式,也就是利用硬件描述语言(HDL)用软件编程方式来表达自己的设计。根据文本表示方式所使用的抽象层次,我们又可将文本表示方式分为:行为描述,结构描述,数据流(寄存器传输级)描述。行为描述就是设计一个部件是通过定义它的输入/输出响应来描述,也就是说对一个部件的设计,只描述了所希望电路的功能/行为,而没有直接指明或涉及实现这些行为的硬件结构。结构描述就是设计一个部件是通过一些基本部件的互连来描述,也就是说对一个不见的设计,是通过描述该设计部件的硬件结构/硬件组成来表示的。数据流描述就是一个部件通过一些寄存器部件的互连并在寄存器之间插入组合逻辑来描述,这类积存器或者显示地通过元件具体装配,或者通过推论作隐含的描述7。2.2.2 图形表示方式在EDA的设计中,有时也用图形表示方式来表示自己的设计。图形表示方式常用的有原理图、状态图、波形图等。图形表示方式的优点是直观、方便,但是其存在以下缺点:设计的可读性差;设计的复用性差;设计的移植性差;入档、交流、交付不方便。2.2.3 文本、图形混用方式在EDA的设计中,根据自己设计所使用的性能及如何使设计简单易行,有时也经常采用文本、图形混用的形式。2.3 实现方法 2.3.1硬件描述语言编程实现法硬件描述语言编程实现法,就是用VHDL、Verilog HDL等硬件描述语言来表达自己的设计思想,并使用EDA工具提供的文本编辑器以文本的方式进行设计输入的一种实现方法。它是EDA的设计中最一般化、最具普遍性的实现方法,根据设计系统的实际情况,实际可从行为级、寄存器级、门电路级等不同层次进行描述,非常灵活,并且设计的移植性非常好。所有EDA工具都支持文本方式的编程和编译。2.3.2 原理图设计实现法原理图设计实现法,就是利用原理图表示自己的设计思想,并使用EDA工具提供的图形编辑器以原理图的方式进行设计输入的一种实现方法。原理图输入法的实现方式,简单、直观、方便,并且可利用许多现成的单元器件或根据需要设计的元器件。2.3.3 参数可设置兆功能块实现法参数可设置兆功能块实现法,就是设计者可以根据实际电路的设计需要,选择LPM(Library of Parameterized Modules,参数可设置模块库,简称LPM)库中的适当模块,并为其设定适当的参数以满足自己设计的需要的一中实现方法。作为EDIF标准的一部分,LPM形式得到了EDA工具的良好支持,LPM中功能模块的内容丰富。在EDA的设计中,以图形或硬件描述语言模块形式调用兆功能块进行设计,使得基于EDA技术的电子设计能够有效地利用其他优秀电子工程技术人员的硬件设计成果,使得设计效率和可靠性有了很大的提高。2.3.4软的或硬的IP实现法软的或硬的IP核实现法,就是在大型系统的设计中,对于某些功能模块的设计,通过调用已经购买的有关公司或电子工程技术人员的软的或硬的IP(知识产权)核来实现自己设计的实现方法。使用该方法,可以快速而高效地实现大型系统的设计或系统集成2。第3章 设计思想与方案论证实现数字秒表的方法有多种,可以用单片机作为控制芯片,采用AT89C52单片机,数字显示采用共阳七段LED显示器,P0口输出段码数据,P2.0-P2.5口作为列扫描输出,P1.0、P1.1 、P1.3口接三个开关按钮,用以实现调时及秒表时钟功能切换设置。也可以用FPGA作为控制芯片,采用EDA技术用VHDL语言实现硬件电路。当然每一种方案都有其各自的优点。本章详细列举、说明了三种不同实现数字秒表的方案,对三种方案的优缺点进行了对比,选出了最佳方案。3.1 设计思想1. 方案1:基于单片机控制的数字秒表 1.秒表计时器采用六位LED数码管显示分、秒,0.1S,0.01S。使用按键开关可实现计时调整、秒表功能。2.系统硬件电路的设计秒表/时钟计时器的硬件电路设计采用AT89C52单片机,数字显示采用共阳七段LED显示器,P0口输出段码数据,P2.0-P2.5口作为列扫描输出,P1.0、P1.1 、P1.3口接三个开关按钮,用以实现调时及秒表功能切换设置。为了给共阳极LED数码管提供驱动电压,采用三极管8550作电源驱动输出。采用12MHZ晶振,有利于提高系统计时的精确性。3. 系统程序的设计其中包括以下六方面:(1)主程序设计:采用定时器T0完成中断,其余状态循环调用显示子程序,当功能开关按下时,转入相应的功能程序。(2)显示子程序的设计:数码管的数据存放在内存单元70H-75H中.其中70H71H存放秒数据,72H73H存放分数据,74H75H存放时数据,每一地址单元内均为十进制BCD码。由于采用动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。显示时,先取出70H-75H某一地址中的数据,然后查得对应的显示用段码,并从P0口输出,P2口将对应的数码管选通供电,就能显示该地址单元的数据值。(3)定时器T0中断程序设计:定时器T0用于时间计时。定时溢出中断周期分别设计为50ms和10ms。中断进入后,先判断是时钟计时还是秒计时,时钟计时中断20次(即1s)时,对秒计数单元进行加1操作,秒表计时时每10ms进行加1操作。时钟技术单元地址分别在70H71H(秒)、76H77H(分)和78H79H(时),最大计时值为23时59分59秒,秒表计数单元地址也在70H71H(0.01毫秒)、76H77H(秒)和78H79H(分),最大计时值为99分59.99秒。7AH单元内存放(0AH).在计数单元中采用十进制BCD码计数,满60(秒表时100)进位(4) T1中断服务程序:T1中断服务程序用于指示调整单元数字亮闪。在时间调整状态下,每过0.3秒,将对应单元的显示数据换成(0AH),即熄灭一次,这样在调整单元的显示数据会间隔闪亮。(5) 调时功能程序的设计:按下P1.0口按键,若按下时间小于1s,则进入省电状态(数码管不亮,但时钟不停);否则进入调分状态,等待操作,计时器停止工作。当再次按下该按钮时,若按下时间短于0.5s,则时间加1分;若按下时间长于0.5s,则进入小时调整状态。在小时调整状态下,当按下时间长于0.5s时,退出调整状态,时钟继续走动。P1.1口按键在调时状态下可实现减1操作。(6)秒表/时钟功能程序:在计时状态下,若按P1.1口按键,则进行时钟秒表功能的切换,转换后计时从零开始。当按下P1.3口按键时,可实现清0、计时启动、暂停功能。2. 方案2:基于FPGA的数字秒表的设计方案如下其设计思路为:通过分频器将晶振所提供的信号分频成0.01S脉冲作为计时信号,经计数器累加计数,形成六十进制的计数器和一百进制的计数器。经译码器译码后,分位输出给六个七段LED数码管显示为。设计采用六位LED数码管显示分、秒,0.1s,0.01s计时方式。使用按键开关可实现开始/结束计时操作,及复位清零操作和计时长度模式选择。一设计要求(秒表的功能描述)(1)要求设置复位开关。当按下复位开关时,秒表清零并做好计时准备。在任何情况下只要按下复位开关,秒表都要无条件地进行复位操作,即使是在计时过程中也要无条件地进行清零操作。(2)要求设置启/停开关。当按下启/停开关后,将启动秒表并开始计时,当再按一下启/停开关时,将终止秒表的计时操作。(3)要求计时精确度大于0.01秒。要求设计的计时器能够显示分(2位)、秒(2位)、0.1秒(1位),0.01秒的时间。(4)要求秒表的最长计时时间为秒表计时长度为59.分59.99秒,超过计时长度,有溢出则报警,计时长度可手动设置。二秒表的面板包括:(1) 显示屏:由6个7段数码管组成,用于显示当前时间(2) QT(启/停键):用于开始/结束计时操作.(3) CLR(复位键):用于秒表计时系统的复位操作(4) MODE (模式选择键):用于计时长度模式选择(5) 蜂鸣器:溢出报警,则发出蜂鸣声.3.2 论证分析课题的角度来说可以选用单片机和FPGA芯片作为系统的MCU,从优势上讲利用单片机作为控制系统的核心元器件,其最大的优势是电路简单,价格便宜,实验所需仪器少。而FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。可在有现成的条件下,FPGA还是有其具大的优势比如它的高速性,让我们更清楚地认识到硬件的性能及硬件描述语言对硬件的驱动。FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。所以本方案选用以FPGA作为核心器件来设计。第4章 系统设计整个系统设计是采用自顶向下分析,自底向上设计。将数字秒表系统的整体分解为各个模块电路。本章详细介绍了数字秒表系统的各个模块的设计,并对各个模块的每一个部分进行了分析,在后半部分还对系统模型进行了访真与程序调试。各模块之间的每一个坏节都是深思熟虑而成,各自完成相应的功能并组成一个统一的整体。4.1系统的总体设计 4.1.1顶层电路设计数字秒表的顶层电路图及时序分析采用硬件描述语言设计一个复杂电路系统,运用自顶向下的设计思想,将系统按功能逐层分割的层次化设计方法。在顶层设计中,要对内部各功能块的连接关系和对外的接口关系进行描述,而功能块实际的逻辑功能和具体的实现形式则由下一层模块来描述。 图4.1 顶层电路图根据数字秒表的系统原理框图(4.2),设计系统的顶层电路图如图4.1所示。根据图所示的数字秒表系统顶层电路图, 按照自顶向下的设计思路, 编写各个模块的源程序, 最后再对各个模块进行组合, 编写顶层描述的源程序。FPGACLK输入七段数码管蜂鸣器主控电路七段数码管译码电路报警控制按 键按键消抖处理计 时 电 路分频电路 图4.2 数字秒表系统原理框图 4.1.2数字秒表的设计原理1本设计可分为五个主要模块:(1) 键输入模块电路(含消抖电路)(2) 时钟分频电路模块(3) 调整控制电路(主控电路模块)(4) 计时电路模块(5) 显示控制电路模块(包括溢出报警控制)2系统的总体设计:各个输入/输出端口的作用如下: CLK为外部时钟信号,CLR为复位信号。 QT为启/停开关,用于开始/结束计时操作 MODE为模式选择键,用1个电平信号A进行模式选择 Q是数据扫描显示的公共七段数码显示驱动端,。它经过外接的译码器译码后接数码管的公共端COM。 SOUND用于控制蜂鸣器发声。当SOUND=“1”时,扬声器发出蜂鸣声,表示计时超出计时长度(溢出报警)4.1.3 键输入模块电路(含消抖电路)秒表面板上有3个按键:CLR键,QT键及MODE键。因为设计采用的是机械式的按键,由于存在机械触动的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会马上断开。因而在闭合及断开按键的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为5-10ms 。后沿抖动闭合抖动前沿抖动键按下图4.3按键时的抖动按键的闭合稳定时间的长短由操作人员的按键动作决定,一般为零点几秒至数秒。按键抖动会引起被误读多次。为确保FPGA对键的闭合仅作一次处理,必须去除按键抖动。 通常在按键较少时可用硬件方法消除抖动,一般采用RS触发器作为常用的消抖电路,如果按键较多时,常用软件消除抖动。在EDA的设计应用中,软件消抖的方法即可使用RS触发器进行消抖,也可通过检测按键按下的时间进行消抖。消抖模块的VHDL源程序设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL; 图4.4.1消抖电路模块USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FDOU IS PORT(CLK,DIN:IN STD_LOGIC; DOUT:OUT STD_LOGIC);END ENTITY FDOU;ARCHITECTURE ARC OF FDOU IS SIGNAL CP:STD_LOGIC; SIGNAL JSQ:INTEGER RANGE 0 TO 3; BEGIN PROCESS(CLK) BEGIN IF (CLK EVENT AND CLK= 1 ) THEN IF DIN=1 THEN IF JSQ=3 THEN JSQ=JSQ; ELSE JSQ=JSQ+1; END IF; IF JSQ=1 THEN CP=1; ELSE CP=0; END IF; ELSE JSQ=0; END IF; END IF; DOUT=CP; END PROCESS; END ARC ;源程序说明1 工作原理本模块描述的防抖动电路属于计数器型防抖动电路。其工作原理是,设置一个模值为4的控制计数器,在人工按键KEY=1时,执行加1计数;KEY=1时,计数器进入状态0。计数器只在状态2有输出。计数器进入状态3,处于保持状态。总之,按键一次,计数器只有一个单脉冲输出。2 防抖动原理按键KEY是产生抖动的根源,按照设计,只有按键持续时间大于3个时钟周期,计数器输出才可能产生有效的正跳变,输出一个单脉冲。由于机械开关抖动产生的毛刺宽度小于3个时钟周期,因而毛刺作用不可能使计数器有输出,防抖动目的得以实现。4.1.4时钟分频电路模块在基于EDA技术的数字电路系统设计中,分频电路应用十分广泛。常常使用分频电路来得到数字系统中各种不同频率的控制信号。所谓分频电路,就是将一个给定的频率较高的数字输入信号经过适当处理后,产生一个或数个频率较低的数字输出信号。分频电路本质上是加法计数器的变种,其计数值有分频常数N=fin/fout决定,其输出不是一般计数器的计数结果,而是根据分频常数对输出信号的高,低电平控制。本设计需要一个计时范围为0.01s59分59.99秒的秒表,首先需要获得一个比较精确的计时基准信号,这里时周期为1/100 s的计时脉冲,所以采用一个标准时钟信号源1KHZ经分频后获得一个精确的100HZ的脉冲。 VHDL源程序:1KHZ 100HZ分频器的源程序clk_div10.vhd LIBRARY IEEE; 图4.4.2 10分频模块USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clk_div10 IS PORT(clk :IN STD_LOGIC; clk_out :OUT STD_LOGIC);END clk_div10;ARCHITECTURE rtl OF clk_div10 IS SIGNAL clk_temp :STD_LOGIC;BEGIN PROCESS(clk) VARIABLE counter: INTEGER RANGE 0 TO 15;BEGIN IF (clkEVENT AND clk=1) THEN IF (counter = 9) THEN Counter := 0; Clk_out = 1; ELSE Counter :=counter +1 ; Clk_out = 0; END IF; END IF; END PROCESS;END rtl;4.1.5调整控制电路(主控电路模块)为了实现数字秒表的各种相应功能,主控电路对各种输入控制信号进行处理。作出相应的调整,发出一系列的控制输出信号。如对数字秒表实现复位操作,启、停控制,以及计时长度设置模式选择。主控电路的功能1 实现系统复位: 设置一个CLR信号,当CLR信号0时,整个系统复位:当CLR1时,系统进行计时或模式选择。2 启/停控制:用于开始/结束计时操作。数字秒表的启/停是通过控制送给计数器的时钟来实现的。当按下QT键后,输出端Q的状态发生反转。Q为“1”时。时钟可通过与门,秒表处于计时状态。当Q为“0”时,时钟被屏蔽,计数器得不到时钟脉冲,停止计数。3 模式选择功能:通过MODE键进行秒表计时长度设置的选择。当MODE“0”时为模式0,秒表系统的计时长度为59分59.99秒。当MODE“1”时,为模式1,秒表系统的计时长度为59.99秒。主控电路各端口作用:输入端:(1) CLK为外部时钟信号,CLR为复位信号输入端。(2) QT为启/停信号输入端。(3) MODE为计时长度模式选择信号输入端。输出端:(1)Q:为启/停控制输出信号。(2)MINEN:分钟计时器的异步并行置数使能信号。(3)SECEN:秒计时器的异步并行置数使能信号。(4)TSECEN:0.01秒计数器的异步并行置数使能信号LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY KZQ IS 图4.4.3 主控模块示意图 PORT(CLK,CLR,A,B:IN STD_LOGIC; Q,MIN_EN,SEC_EN,TSEC_EN:OUT STD_LOGIC);END KZQ;ARCHITECTURE KZQ_ARC OF KZQ ISBEGINPROCESS(CLK,CLR)VARIABLE TMP:STD_LOGIC;BEGIN IF CLR=0 THEN TMP:=0; ELSIF CLKEVENT AND CLK=1 THEN IF A=1 THEN TMP:=NOT TMP; END IF; END IF; Q=TMP;END PROCESS;PROCESS(CLK,CLR)BEGIN IF CLR=0 THEN MIN_EN=0; SEC_EN=0; TSEC_EN=0; ELSIF CLKEVENT AND CLK=1 THEN IF B=1 THEN MIN_EN=0; SEC_EN=1; TSEC_EN=1; ELSE MIN_EN=1; SEC_EN=1; TSEC_EN=1; END IF; END IF;END PROCESS;END KZQ_ARC;4.1.6计时电路模块在数字秒表系统中要用到各种计数器。计数器是在数字系统中使用最多的时序电路,它不仅能用于对时钟脉冲计数,还可以用与分频,定时,产生节拍脉冲和脉冲序列以及进行数字运算等。计数器的原理是将几个触发器按照一定的顺序连接起来,然后根据触发器的状态按照一定的规律随时钟的变化来记忆时钟的个数。掌握了计数器的这个原理后,就很容易采用VHDL语言来对计数器进行描述了。常用的计数方法有:同步计数器、可逆计数器、异步计数器。(1)同步计数器就是指在输入时钟信号脉冲的控制下,构成计数器的各个触发器的状态同时发生变化的一类计数器。(2)可逆计数器就是指在输入时钟信号脉冲的控制下,即可以进行递增计数也可以进行递减计数的一类特殊计数器。对于具体的可逆计数器来说,需要定义一个用来控制计数器方向的控制端口updown:当控制端口updown的值为逻辑1时,可逆计数器进行加1操作,即递增计数;而当控制端口updown的值为0时,可逆计数器进行减1操作,即递减计数。(3)异步计数器就是指构成计数器的低位计数触发器的输出作为相邻计数触发器的时钟,这样逐级串行连接起来的一类计数器。也就是说,每一个触发器的翻转时刻并不是由时钟信号来同步的,而是由它的下一位触发器的输出决定,这种时钟信号的连接方法称为行波时钟。因此,设计人员有时将由行波时钟驱动的异步计数器称为行波计数器。异步计数器与同步计数器的不同之处在于时钟信号的提供方式不同,而其他方面则是完全相同的。由于异步计数器采用行波时钟进行计数,因此会是使异步计数器延迟增加,从而影响了该计数器的使用范围8。在本次设计中,采用异步计数器的方法,用硬件描述语言描述一个异步计数器,将低/高位计数器的输出作为高/低位计数器的时钟信号,在本设计中要用到两个60进制计数器,和一个100进制计数器(1) cnt60计数模块:是一个多用计时模块,既可作计秒电路又可作计分电路调用。用于秒钟计时的CNT60_1的VHDL源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; 图4.4.4 60进制计数器(计秒)USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT60_1 IS PORT(CLK,CLR,EN:IN STD_LOGIC; SEC1,SEC0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CO:OUT STD_LOGIC);END CNT60_1;ARCHITECTURE CNT60_1_ARC OF CNT60_1 ISBEGIN PROCESS(CLK,CLR) VARIABLE CNT0,CNT1:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF CLR=0 THEN CNT0:=0000; CNT1:=0000; ELSIF CLKEVENT AND CLK=1 THEN IF EN=1 THEN IF CNT1=0101 and cnt0= 1000THEN CNT0:=1001; CO=1; elsif cnt01001 then CNT0:=CNT0+1; else cnt0:=0000; IF CNT10101 THEN cnt1:=cnt1+1; else cnt1:=0000; CO=0; END IF; END IF; END IF; END IF; SEC1=CNT1; SEC0=CNT0; END PROCESS;END CNT60_1_ARC用于分钟计时的CNT60_2的VHDL源程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT60_2 IS PORT(CLK,CLR,EN:IN STD_LOGIC; MIN1,MIN0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); 图4.4.5 60进制计数器(计分) CO:OUT STD_LOGIC);END CNT60_2;ARCHITECTURE CNT60_2_ARC OF CNT60_2 ISBEGIN PROCESS(CLK,CLR) VARIABLE CNT0,CNT1:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 资料员之资料员基础知识考前冲刺试卷及参考答案详解(B卷)
- 2025广播电视播音员主持人过关检测试卷含答案详解【夺分金卷】
- 2025年四平职业大学单招《英语》复习提分资料及完整答案详解【各地真题】
- 2023年度护士资格证题库试题及答案详解(有一套)
- 作为职业选择的“全职儿女”:类型、成因与治理
- 计算机三级题库试题附参考答案详解(典型题)
- 2025年唐山市公务员行测【考点梳理】附答案详解
- 养老院消防应急预案范文(32篇)
- 2025年建筑施工安全管理信息化在施工现场安全风险防范中的应用报告
- 2025年母婴产品市场消费升级与品牌竞争:渠道变革与营销创新研究报告
- 2025年医疗工作人员定向招聘考试笔试试题(含答案)
- 第二单元混合运算单元测试卷(含答案) 2025-2026学年人教版三年级数学上册
- 2025年中央一号文件客观题及参考答案
- 出境人员行前安全培训课件
- 2025年河北沧州市中心医院、沧州博施康养集团公开招聘辅助岗工作人员113名考试参考试题及答案解析
- 俄乌局势进展
- 2025甘肃兰州兴蓉环境发展有限责任公司招聘内控管理岗等岗位5人笔试模拟试题及答案解析
- 苏教版三年级上册数学全册教学设计(配2025年秋新版教材)
- 用电安全与消防知识培训课件
- 2025年法考真题及答案
- 基孔肯雅热防护知识科普课件
评论
0/150
提交评论