《基于FPGA的秒表设计与实现(共34页).doc》由会员分享,可在线阅读,更多相关《基于FPGA的秒表设计与实现(共34页).doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上合肥师范学院毕 业 设 计(论 文)专 业 电子信息工程 班 级 xxxxxxx学生姓名 xxx学 号 xxxxxxxx 课 题 基于FPGA的秒表设计与实现指导教师 xxxxxx仅作参考 适当摘抄摘 要该设计是基于FPGA在 Quartus II 9.0软件下应用VHDL语言编写程序,进行了计算机仿真,并给出了相应的仿真结果。本设计有效的克服了以往的秒表的缺点采用EDA技术采取自上而下的设计思路,将设计分为若干个模块并对各个模块进行设计。该电路能够实现很好的计时功能,计时精度高,最长计时时间可达一个小时。关键字: FPGA;VHDL;Quartus II ;EDA;
2、AbstractThis design is a digital watch which is used for athletic contests and is based on FPGA using VHDL language to write program in Quartus II9.0 software at the same time showing the corresponding simulation result. This design effectively overcomes the traditional digital watch weaknesses and
3、takes a top-down approach to design, which willl design divides into certain modules and carries on the design to each module . This circuit is able to carry out excellent timing function, has high timing precision, and the longest timing time could reach an hour.Key Words: FPGA; VHDL;Quartus II ;ED
4、A; 目 录第一章 绪论电子设计的前进之路是逐步趋于数字化已成为共识。在数字化的道路上,我国的电子设计技术的发展经历了许多重大的变革与飞跃。从开始应用SSI通用数字电路芯片构成电路系统,到MCU(微控制器或单片机)的广泛应用,使得电子系统设计上发生了里程碑意义上的飞跃,这一巨大进步不仅仅克服了数字电路系统中很多不可逾越的挫折与困难,同时从另一方面为电子技术的应用与发展开拓了更广阔的前景。MCU的广泛应用并没有抛弃SSI的应用,而是为它们在电于系统中找到了更合理的地位。FPGA/CPLD即现场可编程逻辑器件复杂可编程逻辑器件,在现代电子设计技术基础上的广泛应用,在某种程度上说,是将新的电子技术系
5、统运转的物理机制又变回到原有的纯数字电路结构,但它在更高层次上却容纳了以往数字技术的优秀部分,对MCU系统来说这将是种扬弃,但从电子设计技术操作和系统构成的整体上却发生巨大的变化。FPGA内包含了大量可通过编程连接的逻辑门,因此FPGA提供了具有可变字长的、灵活的、具有潜在并行处理能力的架构 何宾FPGA数字信号处理实现原理及方法 M .北京:清华大学出版社, 2010,3,5.。以大规模集成电路为物质基础的EDA技术终于打破软硬件之间最后的障碍,使得软硬件工程师们有了共同的语言 张亦华,延明,肖冰.数字逻辑设计实验技术与EDA工具M.北京:北京邮电大学出版社,2003。1.1课题背景现代电子
6、设计技术的核心是EDA(Electronic Design Automation,)当前电子系统的设计正朝着速度快,容量大,体积小,质量轻,用电省的方向发展。推动其迅速发展的决定性因素就是使用了现代化的EDA设计工具。EDA是在上世纪90年代初,从CAD(计算机辅助没计)、CAM(算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念逐步发展而来的。EDA技术是依靠强大的电子计算机,在EDA平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述手段完成的设计代码自动完成各个过程,如逻辑编译、化简、分割、综合优化、逻辑行局布线
7、、逻辑仿真,直到完成对于特定目标芯片的编译、逻辑映射、编程下载等一系列工作 江国强EDA技术与应用M .北京:电子工业出版社, 2013,13.。这使得设计者的工作有了很大程度的变化,仅限于利用软件方式用HDL语言来完成对系统硬件功能的描述,利用EDA技术仿真就可以得到最终设计结果。尽管其目标对象是硬件,但整个设计和修改过程就如同完成软件设计一般方便高效。日益发展的逻辑设计仿真测试技术是EDA中最为瞩目的技术,同时也是最具有现代电子设计特征的功能。EDA仿真测试技术仅需通过计算机就可以对设计的电子系统从各个不同层次的系统性能特点来完成一系列准确功能测试与仿真操作,在完成实际系统安装后,还可以对
8、系统上的目标器件进行边界扫锚测试。这个过程都体现出了现代电子设计技术自动化程度。另一方面, CPLD/FPGA器件的飞速发展为EDA技术的进步奠定坚实的基础。CPLD/FPGA器件更广泛的应用和部分厂商间的激烈竞争,使得普通设计人员能够获得廉价的器件和EDA软件。现代EDA工具软件早已突破了早期的仅能通过PCB版图设计,或者类似某些仅限于电路功能模拟的、纯软件范围的局限,以最终能够实现可靠的硬件系统为目标,配备系统设计自动化的全部工具。没有EDA技术的支持,想要完成超大规模集成电路的设计制造是不可想象的;反过来,生产制造技术的不断进步又必将对EDA技术提出新的要求 陈林. EDA技术在电子技术
9、基础实验教学中的应用J.信息技术,2003,6(3):58108。如配置了各种常用的硬件描叙平台VHDL、Verilog HDL、ABEL HDL等;配置了各种能兼用及混合使用的逻辑描述输入工具,如硬件描述语言文本输入法(状态图描述方式、原理图描述方式、布尔方程描述方式等)和波形输入法、原理图输入法等;而且配置了高性能的优化、逻辑综合和仿真模拟工具 卢毅,赖杰. VHDL 与数字电路设计 M .北京:科学出版社, 2001。1.2 硬件描述语言硬件描述语言HDL是硬件设计人员和电子设计自动化(EDA)工具之间的界面。其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。仿真验证无误后,用
10、于制造ASIC芯片或写入CPLD和FPGA器件中。随着EDA工具在PC上的发展, Verilog HDL和VHDL的仿真综合性能已相当突出,在某种程度上就为大规模普及这种新技术指明了前进方向。目前在国内只有很少部分设计单位和一些高校有一些EDA工具,而且很多也仅仅是做一些简单的线路图和版图级的仿真和设计,随着电子设计系统向着集成化、大规模、高速度的方向发展,HDL语言也将成为电子系统硬件设计人员必须掌握的一种语言。1.2.1 VHDL语言VHDL(Very High Speed Integrated Circuit Hardw are Description Language,超高集成电路硬件
11、描叙语言)诞生于1982年,是美国开发的一种快速设计电路的工具,目前已经成为IEEE(The Institute of Electrical and Electronics)的一种工业标准硬件描叙语言。VHDL主要用于描述数字系统的结构、行为、功能和接口,非常适合用于可编程逻辑芯片的应用设计。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。一个完整的VHDL程序包括实体(entity)、结构体(architecture)、配置(configuration)、包(package)和库(library)5个部分,见图1.1。实体主要用于描述外部设
12、备的接口信号;结构体用于描述系统的具体逻辑行为功能;包集合包含要使用的常数、子程序及公共数据类型等;配置用来从库中选择所需单元组成电子系统设计的不同版本;而库用来存放已经编译的结构体、实体、配置和包集合等 何宾EDA原理及VHDL实现 M北京:清华大学出版社2011,9,60.。VHDL程序结构特点是将一项工程设计,VHDL和原理图输入进行设计的大致比较:在设计中,如果使用原理图输入的方式在某种程度上是比较直观的。首先,你要清楚要设计的是什么,然后就直接从库中调用。当你对一个设计实体定义了外部界面后,一旦内部开发完成后,其他设计就可以调用这个已定义的实体。这种将设计实体分成内、外部分的概念是V
13、HDL系统设计的重要特点。应用VHDL语言进行工程设计时的优点是多方面的 谭会生,张昌凡.EDA技术及应用VHDL版M .西安:西安电子科技大学出版社,2011,3,113114.:库、程序包实体(entity)结构体(architecture)进程或其他并行结构配置(configuration)图1.1 VHDL程序的结构图(1) 与其他的硬件描述语言相比,VHDL 语言功能强大,设计方式多样。(2) VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;然而描述方式既可以是行为描述、寄存器传输描述或者结构描述,也可以采用三者混合描述方式。(3) VHDL 语言
14、程序易于共享和复用(4) 当采用VHDL完成某个确定的设计时,可利用EDA进行逻辑综合、优化,并把VHDL描述设计生成门级网表。(5) 运用VHDL语言进行设计具有相对独立性,设计者不必懂硬件的结构,也不必理会设计实现的目标器件是什么。1.2.2 VHDL设计中电路简化问题的探讨 朱明程VHDL设计中电路简化问题的探讨J电子技术应用2000,8,8890.随着集成电路技术的发展,用传统方法进行芯片或系统设计已不再能满足人们的要求,所以需要迫切提高设计方法。在这背景下,VHDL设计能大大降低设计难度的方法正越来越广泛地被使用。VHDL语言具有很强的建模及电路描述能力,可以很大简化设计任务,优化了
15、设计效率。用VHDL语言进行集成电路的设计,牵涉到对VHDL语言的使用方法和对设计的理解。这里简述了以下简化和优化电路设计时3个需要注意的方面:(1)在用VHDL语言进行设计时应当注意避免不必要的寄存器描述。(2)在编写程序之前,要首先对设计有较深入的分析了解,科学划分设计,设计多个方案再进行比较,选择优秀方案采用。(3)在延时要求不高的情况下,可提取逻辑电路公因子,把它分解成含有中间变量的多级电路。1.2.3用EDA方法设计数字系统的灵活性用EDA方法设计数字系统,就是以硬件描述语言为系统逻辑描述的主要手段完成设计文件,再运用EDA开发软件,对设计文件自动地完成逻辑编译、化间、分割、综合及优
16、化逻辑仿真。直到对特定目标芯片的适配编译、逻辑映射和编程下载。该设计方法的灵活性体现在以下几个方面:1、输入方式的灵活性,使用EDA方法进行设计可以按照设计要求和硬件描述语言的语法规则编写文件,从而把大部分工作都留给计算机,反应了EDA方法的优点。尤其是在设计复杂数字系统或者需要改动系统功能时,其设计效率可大大地提高;2、设计仿真的灵活性,用EDA方法设计数字系统是同一个测试向量可以对任意一种设计输入方式产生的源文件进行仿真,而不用重新编写测试文件;3、功能扩展具有灵活性,在设计输入过程时,用EDA方法可以实现硬件设计软件化,在改动源文件内容即可改变系统功能,从而使其扩展为复杂度更高的数字系统
17、。 第二章 Quartus II 软件2.1 QuartusII软件概述 Quartus II 9.0 是 Altera 提供的FPGA/CPLD开发集成坏境,Altera是世界上最大的可编程逻辑器件供应商之一 潘松,黄继业. EDA技术与VHDLM. 北京:清华大学出版社,2012:910。Quartus II 9.0 提供了完整的多平台设计坏境,能满足各种特定的设计需要,也是单片机可编程系统(SOPC)设计的综合坏境和SOPC开发的基本设计工具,并为 Altera DSP开发包进行系统模型设计提供集成综合坏境。它提供一种与结构无关的设计环境,让设计者方便的进行设计输入、快速处理和器件编程。
18、2.2 QuartusII设计过程 QuartusII输入的设计过程可分为创建新工程、文件输入、项目编译、项目校验和编程下载等步骤。2.2.1创建工程利用QuartusII软件创建工程向导(New Project Wizard)创建一个新工程。具体步骤如下:1)打开Quartus II9.0界面,在“File”菜单下选择“New Project Wizard”,点击“next”后弹出如图1.1对话框图1.1 New Project Wizard对话框第一页点选第一行右侧的“”选择工程目录为“d: nand2_lab1”,在第二行输入项目名称: nand2_lab1,第三行默认把项目名设为顶层文
19、件名,点击“next”,图1.2 New Project Wizard对话框第二页2)如图1.2,该窗口可为项目添加已经编辑好的程序文件,默认为空,点击“next”,3)该窗口可以选择FPGA硬件信息其它选项默认。点击“next” 4)添加第三方EDA工具软件参与综合、仿真、时序分析等工作,本实验默认不选,点击“next”5)该窗口为建立的项目信息,点击“Finish”项目建立完毕。建立工程后,可以使用Assignments菜单下的settings对话框对工程设置进行修改。2.2.2文本文件新建VHDL文本文件时,在QuartusII管理器界面中选择菜单FileNew.,或单击新建文件按钮,出
20、现New对话框,在弹出对话框中选择VHDL File。点击ok按钮,打开编辑器。QuartusII支持多种硬件描述语言,不同的硬件描述语言编写的文件扩展名不同,如AHDL文件扩展名为.tdf,Verilog HDL文件扩展名为.v,VHDL文件的扩展名为.vhd。(注:文件名必须与程序中实体名一致)添加或删除与当前项目有关的文件的具体操作:添加文件:如果希望将存放在别处的文件加入到当前的设计项目中,选择菜单AssignmentsSettings,打开如图1.3所示的Settings对话框。图1.3 将文件加入到当前的设计项目中2.2.3 设计项目编译保存文件后,选择“Project”菜单,选择
21、“Set as Top-Level Entity”项,把当前文件设置为顶层实体。(注:Quartus环境下所有操作(综合、编译、仿真等)都只对顶层实体进行,所以编辑任何程序前,必须先设置该选项,把当前要编译的文件设置为顶层实体后,才能对该文件进行编译等操作)打开“Processing”菜单,点击“Start Compilation”执行完全编译,编译成功后,编译器产生相应的输出文件。若有错误,编译器停止编译,并给出错误信息,双击错误信息条,一般可给出错误之处,根据“Messages”消息栏给出的错误提示要求修改源程序,保存后再次编译,等所有错误均改正后,系统会弹出编译结束窗口,显示零错误零警告
22、,单击“确定”按钮,出现编译状态显示窗口,编译报告给出所有编译结果。2.2.4设计项目波形仿真波形仿真是在波形编辑器中将设计的逻辑功能用波形图的形式显示,通过查看波形图,检查设计的逻辑功能是否符合设计要求。仿真的目的是进一步检验设计文件描述的逻辑功能能否实现预期的目标。波形仿真分析是验证逻辑功能正确性必不可少的环节。波形仿真的步骤包括新建波形文件、设置波形仿真器、插入仿真节点、编辑输入波形、运行仿真器、检查输出波形是否符合设计要求。2.2.5生成符号文件通过波形仿真可以确定程序功能是否正确后,就可以把该程序生成符号文件,以便在后面的程序中调用。具体操作是:打开“File”菜单,选择Creat/
23、Updata菜单项,右侧弹出子菜单再选择“Creat Symbol files for Current file”,把当前文件创建成符号文件。状态窗口有进度信息显示。生成的符号文件可以通过打开原理图窗口调入,进行验证2.2.6编程下载 器件编程就是编译和波形仿真正确后,QuartusII将生成的如.pof和.sof等编程数据文件通过下载电缆载到预先选择的FPGA芯片中。下载成功后,该FPGA芯片就会执行设计文件描述的功能。器件编程步骤:编程硬件连接、编程文件的产生、运行编程操作。器件编程操作成功后,查看FPGA功能与设计文件描述的功能是否一致。第三章 设计思想与设计方案3.1 系统设计路线在P
24、C机上以 Quartus II为设计平台,采用EDA技术用VHDL硬件描述语言实现秒表的整体设计。用层次设计概念,将设计任务分成数个子模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来形成顶层文件联试。3.2 系统设计方案根据秒表的电路特点,用层次设计概念,利用VHDL语言描述,将设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试仿真下载,完成设计。通过分频器将晶振所提供的信号分频成0.01S脉冲作为计时信号,经计数器累加计数,形成六十进制的计数器和一百进制的计数器4。经译码器译码后,分位输出给六个7段LED数码管显示。设计采用六位LED数码管显
25、示分、秒,0.1s,0.01s计时方式。使用按键开关可实现开始/结束计时操作,及复位清零操作和计时长度模式选择。本课题的设计要求:(1)要求设置复位开关。当按下复位开关时,秒表清零并做好计时准备。在任何情况下只要按下复位开关,秒表都要无条件地进行复位操作,即使是在计时过程中也要无条件地进行清零操作。(2)要求设置启/停开关。当按下启/停开关后,将启动秒表并开始计时,当再按一下启/停开关时,将终止秒表的计时操作。(3)要求计时精确度大于0.01秒。要求设计的计时器能够显示分(2位)、秒(2位)、0.1秒(1位),0.01秒的时间。(4)要求秒表的最长计时时间为秒表计时长度为59.分59.99秒,
26、超过计时长度,有溢出。3.3 系统设计流程本系统设计采用分层设计的设计方案,系统的整体组装设计原理图如下图所示CLK输入按 键分频电路按键消抖处理主控电路计时电路FPGA七段数码管译码电路七段数码管3.4 分析本课题的角度选用FPGA芯片作为系统的MCU(微控制器), FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。作为专用集成电路(ASIC)领域中一种半定制电路而出现,不仅解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。可在有现成的条件下,FPGA还是有其具
27、大的优势,比如高速性,让我们更清楚地认识到硬件的性能及硬件描述语言对硬件的驱动。之所以本方案选用以FPGA作为核心器件来设计,是因为FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。第四章 系统设计本课题运用自顶向下的设计思想,将数字秒表的顶层电路图及时序分析采用硬件描述语言设计一个复杂电路系统,系统按功能逐层分割的层次化设计方法。在顶层设计中,要对内部各功能块的连接关系和对外的接口关系进行描述,而功能块实际的逻辑功能和具体的实现形式则由下一层模块来描述。4.1 总体设计根据数字秒表的系统原理框图,按照自顶向下的设计思路, 各模块实现秒表不同的功能 谢自美. 电子线路综合
28、设计M. 武汉:华中科技大学出版社,2006:135168。 编写各个模块的源程序, 最后再对各个模块进行组合, 编写顶层描述的源程序。4.1.1数字秒表的设计原理1. 本设计大致分为5个主要模块:(1) 按键消抖电路(2) 时钟分频电路模块(3) 调整控制电路(主控电路模块)(4) 计时电路模块(5) 显示控制电路模块2系统的总体设计:各个输入/输出端口的作用如下:1) CLK为外部时钟信号,CLR为复位信号。2) QT为启/停开关,用于开始/结束计时操作3) MODE为模式选择键,用1个电平信号A进行模式选择4) Q是数据扫描显示的公共七段数码显示驱动端,。它经过外接的译码器译码后接数码管
29、的公共端COM。4.1.2按键消抖电路因为设计采用的是一般的机械式按键,一个按键在闭合和断开时会有一定的抖动时间,抖动时间长度一般为5-10ms。键按下时闭合前沿后沿 按键的闭合稳定时间的长短由操作人员的按键动作决定,一般为零点几秒至数秒。按键抖动会引起被误读多次。为确保FPGA对键的闭合仅作一次处理,必须去除按键抖动。消抖模块的VHDL设计:见附录一。4.1.3时钟分频电路模块本设计的秒表计时范围为0.01s59分59.99秒的秒表,首先需要获得一个比较精确的计时基准信号,这里是周期为10ms的计时脉冲,所以采用一个标准时钟信号源1KHZ经分频后获得一个100HZ的脉冲。分频电路的实质是加法
30、计数器的变种,计数值由分频常数N(N=fin/fout)决定,一般输出的不是计数器计数结果,是分频常数对输出的信号高低电平控制。分频模块的VHDL设计:见附录二。4.1.4主控电路模块主控电路的功能是对各种输入信号进行处理并作出适当相应的调整,从而发出的输出信号。如对数字秒表实现复位操作,启、停控制等。主控电路的功能:1. 复位CLR为复位信号,当CLR0时,系统复位;当CLR1时,系统进行计时或模式选择。2启/停控制QT键为控制启停的按键,当QT=1时,秒表处于计时状态;当QT=0时,秒表停止计时。3模式选择MODE键可以对秒表的计时长度进行选择,当MODE0时,为模式0,秒表的计时长度为5
31、9分59.99秒。当MODE1时,为模式1,计时长度为59.99秒。主控电路的VHDL设计:见附录三。4.1.5计时电路模块计时模块要用到各种计数器,计数器是在数字系统中使用最为频繁的时序电路,它不但能对时钟脉冲进行计数,还可用与定时、分频、产生脉冲序列、节拍脉冲以及进行数字运算等。它的原理是将几个触发器按照一定的顺序连接起来,然后根据触发器的状态按照一定的规律随时钟的变化来记忆时钟的个数。异步计数器与同步计数器的不同之处在于时钟信号的提供方式不同,而其他方面则是完全相同的。由于异步计数器采用行波时钟进行计数,因此会是使异步计数器延迟增加,从而影响了该计数器的使用范围 朱明程VHDL设计中电路
32、简化问题的探讨 J电子技术应用2000,8,8890.。计时模块执行计时功能,计时方法和计算机一样是对标准时钟脉冲计数 余孟尝.数字电子技术基础简明教程(第二版)M. 高等教育出版社,1999,5473.附录一LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FDOU IS PORT(CLK,DIN:IN STD_LOGIC; DOUT:OUT STD_LOGIC);END ENTITY FDOU;ARCHITECTURE AR
33、C 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 ;附录二LIBRARY IEEE;U
34、SE 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 (
35、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;附录三LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY KZQ IS PORT(CLK,CLR,A,B:IN STD_LOGIC; Q,MIN_EN,SEC_EN,TSEC_EN:OUT STD_LOGIC);END KZQ;ARCHITECTURE
36、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; SE
37、C_EN=1; TSEC_EN=1; ELSE MIN_EN=1; SEC_EN=1; TSEC_EN=1; END IF; END IF;END PROCESS;END KZQ_ARC;附录四LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;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;ARCHITEC
38、TURE 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 CNT1010
39、1 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;附录五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)
40、; 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); 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 th
41、en 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; MIN1=CNT1; MIN0=CNT0; END PROCESS;END CNT60_2_ARC;附录六LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT100 IS PORT(CLR,CLK,EN:IN STD_LOGIC; BAI1,BA
42、I0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CO:OUT STD_LOGIC);END CNT100;ARCHITECTURE CNT100_ARC OF CNT100 IS BEGIN 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 CNT0=1000 AND CNT1=1001THEN CNT0:=1
43、001; CO=1; ELSIF CNT01001 THEN CNT0:=CNT0+1; ELSE CNT0:=0000; IF CNT01001 THEN CNT1:=CNT1+1; ELSE CNT1:=0000; CO=0; END IF; END IF;END IF;END IF; BAI1=CNT1; BAI0=CNT0; END PROCESS;END CNT100_ARC;附录七LIBRARY IEEE; USE IEEE .STD_LOGIC_1164.ALL;ENTITY DISP IS PORT(D:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR