基于VHDL的数字时钟设计和时序仿真_第1页
基于VHDL的数字时钟设计和时序仿真_第2页
基于VHDL的数字时钟设计和时序仿真_第3页
基于VHDL的数字时钟设计和时序仿真_第4页
基于VHDL的数字时钟设计和时序仿真_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、基于VHDL的数字时钟设计和时序仿真毕业设计基于VHDL的数字时钟设计和时序仿真学生姓名:学 院:专 业:指导教师:年 月第2页共45页基于VHDL的数字时钟设计和时序仿真目 录1引言 12设计概述 23开发工具简介 43.1 VHDL语言简介 43.1.1 VHDL发展史 43.1.2 VHDL设计特点 43.1.3 VHDL设计结构 53.1.4 VHDL设计步骤 63.2 Quartus II 软件简介 63.2.1 Quartus II软件介绍 63.2.2 Quartus II软件设计流程 64数字时钟的设计要求和原理 84.1 设计要求 84.2设计原理 85数字时钟模块化设计 1

2、05.1分频模块 115.2计时模块 135.2.1 秒计时模块 135.2.2 分计时模块 155.2.3 时计时模块 175.3报警模块 185.4 数据选择模块 205.5译码显示模块 226数字时钟模块化仿真 246.1计时模块仿真图 246.1.1 秒模块仿真图 246.1.2 分模块仿真图 246.1.3 时模块仿真图 25第4页共45页基于VHDL的数字时钟设计和时序仿真6.2报警模块仿真图 256.3数据选择模块仿真图 266.4 译码模块仿真图 266.5数字时钟整体仿真图 277 FPGA开发板实验 287.1芯片和器件选择 287.2外部电路接线 287.2硬件实物图 2

3、88结论 30附录 31参考文献 42致谢 43第11页共45页1引言随着科学技术的迅猛发展,在计算机技术的推动下电子技术获得了飞速的发 展。电子产品几乎渗透到了工业、生活的各个领域,其中集成电路的设计正朝着速 度快、性能高、容量大、体积小和微功耗的方向发展。基于这种情况,可编程逻辑 器件的出现和发展大大改变了传统的系统设计方法。可编程逻辑器件和相应的设计技术主要体现在三个方面:一是可编程逻辑器件的芯片技术; 二是适用于可逻辑编 程器件的硬件编程技术,三是可编程逻辑器件设计的EDA开发工具,它主要用来进 行可编程逻辑器件应用的具体实现。在本设计中采用了集成度较高的 FPGA可编 程逻辑器件,选

4、用了 VHDL硬件描述语言和Quartus II开发软件进行设计。VHDL 硬件描述语言在电子设计自动化(EDA)中扮演着重要的角色,由于采用了具有多层 次描述系统硬件功能的“自顶向下”(Top -Dow n)的全新设计方法,使设计师们摆脱了大量的辅助设计工作,而把精力集中于创造性的方案与概念构思上,用新的思路来发掘硬件设备的潜力,从而极大地提高了设计效率 ,缩短了产品的研制周期o Quartus II软件是集成了编辑器、仿真工具、检查/分析工具和优化/综合工具的这些 所有开发工具的一种集成的开发环境,通过该开发环境能够很方便的检验设计的仿 真结果以及建立起与可编程逻辑器件的管脚之间对应的关系

5、oEDA技术是以计算机为工具,根据硬件描述语言HDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线。仿真以及对于 特定目标芯片的适配编译和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的 描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能 就是将软件描述与给定的硬件结构用一定的方式联系起来。综合过程就是将 电路的高级语言描述转换低级的。可与目标器件 FPGA/C

6、PLD相映射的网表文件。适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中, 产生最终的下载文件,如JED文件。适配所选定的目标器件 (FPGA/CPLD芯片)必须属于在综合器中已指定的目标器件系列。2设计概述数字时钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相 比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,数字时钟可 植入自动控制、测试等系统内部,作为系统的时钟源,可为系统提供定时信号或中 断控制的时间基准,具有广泛的用途。由于数字集成电路的发展使得数字时钟的精 度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先

7、的单一报时功能4。加入了一些诸如自动报时、定时闹钟等功能。 这些都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用,有着非常现 实的意义。数字时钟的设计方法有很多种,包括基于单片机的硬件设计、基于各种描述语 言的软件设计,本设计采用 VHDL语言来设计数字时钟有着多方面的优越性,通 过把整个设计分为多个模块依次来实现,减少了众多重复性步骤,合理化了设计过 程,使得设计更加省时、快捷,提高了设计效率。目前,电子系统的EDA技术正从着眼与数字逻辑向模拟电路和数模混合电路 的方向发展,21世纪是EDA技术飞速发展的时期,可以预见 EDA技术将会对今 后电子设计的发展产生重大的影响。随着电子技术

8、的发展,集成电路经历了从 小规模、中规模到大规模和超大规模集成的过程,应用系统向小型化、快速 化、大容量、重量轻的方向发展5;数字系统的设计也已从芯片组合化设计走向单片系的设计。随着微电子和计算机领域的原理创新、技术创新、应用创 新层出不穷,许多特定功能的专用集成电路应用日益广泛,用户迫切希望根 据自身设计要求自行构造逻辑功能的数字电路,复杂可编程逻辑器件FPGA顺应了这一新的需要。它能将大量逻辑功能集成于一个芯片中,其规模可达 几十万或上百门以上,从而电子设计自动化EDA技术应运而生,它是电子产品及系统开发领域中一场革命性变革,EDA技术极大地推动了科学技术的发展。EDA技术的发展使硬件电路

9、设计软件化,降低了硬件电路设计的难度, 使设计周期和产品的开发时间缩短,设计更新变成了程序的修改,适应了千 变万化的市场潮流。它的设计输入可以使用硬件描述语言(HDL),采用“自顶向下”的设计方法,为设计者提供了一个高效、便捷的设计环境,同时也为充分发挥设计人员的创造性提供了条件。EDA技术主要应用于数字电路的设计,目前它在中国的应用多数是用在FPGA的设计中。EDA技术是现代电子信息工程领域的一门新技术,它是在先进的计算机工作平台上开发出来的一套电子系统设计的软硬件工具,并提供了先进的电 子系统设计方法 o 20世纪90年代,国际上电子和计算机技术较先进的国家, 一直在积极探索新的电子电路设

10、计方法,并在设计方法、工具等方面进行了 彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件的应 用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。 这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得 硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数 字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展9o 目前,电子系统的 EDA技术正从着眼与数字逻辑向模拟电路和数模混合电路的 方向发展,21世纪是EDA技术飞速发展的时期, EDA技术将会对今后电子 设计的发展产生重大的影响10 o3开发工具简介3.1 VHDL语言简介3

11、.1.1 VHDL发展史VHDL语言诞生于1982年,翻译成中文就是超高速集成电路硬件描述语言。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发 周期的一种使用范围较小的设计语言。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了 VHDL的标准版本,IEEE-1076之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后 VHDL在电子设计领域得到了广泛的接受,并逐 步取代了原有的非标准的硬件描述语言11 o 1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,

12、公布了新版本的VHDL,主要是应用在数字电路的设计中。现在,VHDL和Verilog HDL作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为在新的世纪中,VHDL与Verilog语言将承担起大部分的数字系统设计任务12。目前,它在中国的应用多数是用 FPGA/CPLD的设计中。VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多 具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系

13、统)分成外部(或称可是 部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完 成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其 他的设计就可以直接调用这个实体13。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。3.1.2 VHDL设计特点应用VHDL语言进行系统设计,有以下几方面的特点:1)功能强大:VHDL具有功能强大的语言结构。它可以用明确的代码描述复杂的控制逻辑设计。并且具有多层次的设计描述功能,支持设计库和可重复使用的元件生成。VHDL是一种设计、仿真和综合的标准硬件描述语言。2) 可移植性:VHDL语言是一个标准语言,其设计描述可以为不

14、同的EDA工具支持。它可以从一个仿真工具移植到另一个仿真工具,从一个综合 工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台14。此外,通过更换库再重新综合很容易移植为ASIC设计。3)独立性:VHDL的硬件描述与具体的工艺技术和硬件结构无关。设计 者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行 独立的设计。程序设计的硬件目标器件有广阔的选择范围,可以是各系列的 CPLD、FPGA及各种门阵列器件。4)可操作性:由于 VHDL具有类属描述语句和子程序调用等功能,对于 已完成的设计,在不改变源程序的条件下,只需改变端口类属参量或函数,就能轻易地改变设计的规模和结构。

15、5)灵活性:VHDL最初是作为一种仿真标准格式出现的,有着丰富的仿 真语句和库函数。使其在任何大系统的设计中,随时可对设计进行仿真模拟。 所以,即使在远离门级的高层次,设计者就能够对整个工程设计的结构和功 能的可行性进行查验,并做出决策。3.1.3 VHDL设计结构VHDL描述数字电路系统设计的行为、功能、输入和输出。它在语法上与现代编程语言相似,但包含了许多与硬件有特殊关系的结构。VHDL将一个设计称为一个实体 Entity (元件电路或者系统),并且将它分成外部的可见部 分(实体名连接)和内部的隐藏部分(实体算法实现)。当定义了一个设计 的实体之后,其他实体可以利用该实体,也可以开发一个实

16、体库。所以,内 部和外部的概念对系统设计的VHDL是十分重要的。外部的实体名或连接由实体声明来描述。而内部的实体算法或实现则由结构体来描述15。结构体可以包含相连的多个进程或者组建等其他并行结构,需要说明的是它们在硬件 中都是并行运行的。3.1.4 VHDL设计步骤采用VHDL的系统设计,一般有以下6个步骤:1)按照要求的功能模块划分;2)VHDL的设计描述(设计输入);3)代码仿真模拟(前仿真);4)计综合、优化和布局布线;5)布局布线后的仿真模拟(后仿真);6)设计的实现(下载到目标器件)。3.2 Quartus II软件简介3.2.1 Quartus II 软件介绍Quartus II是

17、Alera公司推出的一款功能强大,兼容性最好的 EDA工具软件。该软件界面友好、使用便捷、功能强大,是一个完全集成化的可编程逻 辑设计环境,具有开放性、与结构无关、多平台完全集成化丰富的设计库、 模块化工具、支持多种硬件描述语言及有多种高级编程语言接口等特点16 0Quartus II支持原理图输入与Verilog HDL 和VHDL输入混合设计,它除了承接原来的Max+Plus II软件的全部设计功能和器件对象外,还增加了许多新功能和新的FPGA器件系列。它可对设计进行功能仿真,对数字电路的设计 实现同步模拟分析和时序仿真。这种同步模拟分析、时序仿真在数字电路的 教学中可以起到很好的辅助作用

18、。Quartus II是Altera公司推出的 CPLD/FPGA 开发工具,Quartus II提供了 完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性, 包括:可利用原理图、结构框图、 VerilogHDL、AHDL和VHDL完成电路描 述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;功能强 大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使 用组合编译方式可一次完成整体设计流程;自动定位编译错误;高

19、效的期间 编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和 Verilog基于VHDL的数字时钟设计和时序仿真 网表文件;能生成第三方 EDA软件使用的 VHDL网表文件和 Verilog网表文 件。322 Quartus II软件设计流程1)设计输入:设计文件的输入方法有原理图输入、文本输入、内存编辑以及由第三方 EDA工具产生的网表输入、格式输入,生成方法不同,生成的 文件格式也有所不同。在图形设计文件中,Quartus II软件为了实现不同的逻辑功能提供了大量的基本单元符号和宏功能模块,在图形编辑器中可以直接 调用;为了适应自顶向下的设计,设计者可以使用和Verilog

20、HDL以及Tcl脚本输入文本型设计17。2)项目编译:项目编译主要完成设计项目的检查和逻辑综合,将项目最终设计结果生成器件的下载文件,并为模拟和编程产生输出文件。3)仿真验证和时序分析:在把经过编译的输入设计编程或配置到器件之前,可以通过 Quartus II软件的仿真器对文件进行全面测试,保证设计在各种可能的条件下都有正确的响应。根据所需的信息类型,可以进行功能仿真和 时序仿真。Quartus II时序分析器允许分析设计中所有逻辑的性能,得出时序 分析结果,如建立时间、保持时间、引脚到引脚延迟、最大时钟频率、延迟 时间及其它时序特征,并协助引导适配器满足设计中的时序要求。4)器件编程:成功编

21、译了设计工程之后,编译器的Assembler模块自动将适配过程的器件、逻辑单元和引脚分配信息转换为器件的编程图像,并以.sof形式保存,Quartus II软件的编程器(programmer)使用该文件就可对器件进行 编程配置。第12页共45页基于VHDL的数字时钟设计和时序仿真4数字时钟设计要求和原理4.1设计要求在Quartus II软件开发环境下,使用VHDL描述语言、结合FPGA开发板编译 和仿真数字时钟;要求时钟能进行基本的计时功能,按照:“时:分:秒”来显示时间;并且能进行时间设置,具有整点报时功能,可对所有显示的内容进行调节设 定。4.2设计原理根据设计要求,采用自顶向下的方法,

22、层次化设计概念,将此任务分成若干模 块,设计时首先用VHDL语言编写各个功能模块,在Quartus II开发环境下分别进 行编译、仿真,然后再用顶层文件将各功能模块连接起来。规定某一模块的功能和 各模块之间的接口.然后将各模块组合起来构成系统框图。根据设计要求可以把整 体设计分为:分频模块、计时模块、数据扫描模块、报警模块和数据选择模块,然 后再根据总体方案对各模块进行分别设计和仿真下载18 0根据总体方案对各模块分别进行设计、仿真和下载,数字时钟的总体框图如图5.1所示,图4.1数字时钟基本框图数器组成,分别对秒、分、小时进行计数。整个计数模块从00点00分00秒开始计时,当计数到23点59

23、分59秒的时候,一天结束,计数器清零,新的一天重新开始计 数。秒计数器的计数时钟信号为1Hz的标准信号,可以由系统板上提供的 50MHz 信号通过分频得到。秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号。要设计一个同时显示时、分、秒6个数字的数字时钟,则需要6个七段数码显 示管。若同时点亮这6个七段数码显示显示管,则电路中会产生一个比较大的电流, 很容易造成电路烧坏,我们通过扫描电路来解决这一问题, 通过产生一个扫描信号 来控制6个七段显示器,依次点亮6个七段数码显示管,也就是每次只点亮一个七 段显示器。只要扫描信号的频率超过人的眼睛视觉暂留

24、频率 24Hz以上,就可以达到 尽管每次点亮单个七段数码显示管, 却能具有6个同时显示的视觉效果,而且显示 也不致闪烁抖动。其中6位扫描信号一方面控制七段显示器依次点亮,一方面控制6选1选择器输出相应显示数字。时间数据选择模块的作用是将时钟产生的秒、分 钟、小时信号集合起来,然后驱动六位七段数码管的片选驱动信号输出。第26页共45页5数字时钟模块化设计需要设计的数字时钟由上述7个模块组成,设计时,首先用VHDL语言编写各个 底层功能模块撚后在Quartus II开发环境下分别进行编译、仿真,然后再用顶层文 件将各功能模块连接起来,再进行进一步编译、仿真、下载。以下介绍系统中各模 块的具体功能和

25、设计方法。5.1分频模块本设计使用的FPGA开发板中使用的芯片是Cyclone EP1C6Q240C8,使用的是 50MHz的时钟脉冲输入,根据电路的具体设计需要,对其进行分频设计。如图5.2所示,其为系统的分频模块,其中模块clk1管脚输出为1hz的时钟脉冲, 得出用于计数模块和报警模块正常工作的时钟信号,在clk1k管脚输出为一个1khz的时钟脉冲,作用与动态扫描模块的正常工作。输入管脚:clk为50Mhz脉冲输入;输出管脚:clk1为1hz脉冲输出; clk1k为1khz脉冲输出.源代码如下:library ieee;use ieee.std_logic_1164.all;en tity

26、 fp isport(clk:in std_logic; q1:out std_logic q1k:out std_logic);end fp;architecture fp_arc of fp issig nal x:std_logic;sig nal y:std_logic;begi nprocess(clk)variable cnt:i nteger range 0 to 24999999;beg inif clkevent and clk=1thenif cn t24999999 thencn t:=c nt+1;elsecn t:=0;x=not x;end if;end if;q1

27、=x;end process;process(clk)variable cn t: in teger range 0 to 24999;beg inif clkevent and clk=1thenif cn t24999 thencn t:=c nt+1;elsecn t:=0;yv=not y;end if;end if;q1k=y;end process;end fp_arc;5.2计时模块5.2.1秒计时模块个六十进制如图5.3所示,计数电路的第一个模块为秒计数模块,其实质是计数器,其中输入管脚:clk为1hz的时钟脉冲;reset为秒模块清零复位键;setmin为调分钟按键输出管脚:

28、enmin为分模块的进位信号;dout6.0为秒模块输出的计数信号 end en tity sec ond;图5.3源代码如下:library ieee;use ieee.std_logic_1164.all;en tity sec ond isport(clk:in std_logic;reset:in std_logic;setmi n:in std_logic;en mi n:out std_logic;daout:out std_logic_vector(6 dow nto 0);use ieee.std_logic_ un sig ned.all;architecture fun o

29、f sec ond issignal count:stdogic_vector(6 downto 0);signal enmin_1,enmin_2:stdogic;beg indaout=co unt;enmin _2=(setm in and clk);enminv=(e nmin_1 or en min_2);process(clk,reset,setmi n)begi nif(reset=O)then cou nt=OOOOOOO;elsif(clkevent and clk=1)thenif(coun t(3 dow nto O)=1OO1)the nif(cou nt16#60#)

30、the nif(cou nt=1O11OO1)the nen min_1=1;cou nt=OOOOOOO;elsecoun t=co un t+7;end if;elsecou nt=OOOOOOO;end if;elsif(cou nt16#60#)the ncoun t=co un t+1;en min_1=0after 100ns;elsecou nt=0000000;end if;end if;end process;end fun;522分计时模块如图5.4所示,计数模块的第二个模块为分计时模块,其实质是一个六十进制计数器,其中:输入管脚:elk为秒模块输出的进位信号;clkl为1

31、hz的时钟控制脉冲;reset管脚的作用为分模块的清零、复位;sethour为调小时按键。输出管脚:enhour输出为时模块的进位信号;dout6.0为分钟模块输出的计数信号源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity min ute isport(clk:in std_logic;clk1:in std_logic;reset:in stdo gic;sethour:in std_logic;en hour:out std_logic;daout:out st

32、do gic_vector(6 dow nto 0);end en tity minu te;architecture fun of min ute issignal count:stdogic_vector(6 downto 0);sig nal en hour_1,e nhour_2:stdo gic;beg indaout=co unt;en hour_2=(sethour and clk1);en hour=(e nhour_1 or en hour_2);process(clk,reset,sethour)begi nif(reset=0)the ncou nt=0000000;el

33、sif(clkevent and clk=1)thenif(count(3 downto 0)=1001)thenif(cou nt16#60#)the nif(cou nt=1011001)the nen hour_1=1;cou nt=0000000;elsecoun t=co un t+7;end if;elsecou nt=0000000;end if;elsif(cou nt16#60#)the ncoun t=co un t+1;en hour_1=0after 100 ns;elsecou nt=0000000;end if;end if;end process;end fun;

34、523时计时模块如图5.5所示,此模块的第三个模块为小时计数模块,其实质是一个二十四进制计数器,其中:输入管脚:clk为分模块输出的进位信号;Reset为小时模块的清零、复位管脚.输出模块:dout5.0为小时模块输出的计数信号.:hQiirelkdwutmn囂set1nsts图5.5源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity hour isport( clk,reset: in std_logic;daout: out stdo gic_vector(5 d

35、ow nto 0);end entity hour; architecture fun of hour issignal count:std_logic_vector(5 downto 0); beg in daout=co unt;process(clk,reset)begi nif(reset=O)the ncou nt=000000;elsif(clkevent and clk=1)thenif(count(3 downto 0)=1001)thenif(cou nt16#23#)the ncoun t=co un t+7;elsecou nt=000000;end if;elsif(c

36、ou nt16#23#)the ncoun t=co un t+1;elsecou nt=000000;end if;end if;end process;end fun;5.3报警模块如图5.6所示,报警模块的作用是在时钟整点的时候输出一个报时信号,信号作用用开发板上,产生外部响声,起到报时的作用,同时可以选择在开发板的LED 上显示出整点报时的LED花样显示,其中:输出管脚:clk为1hz的脉冲信号;dain6.0是分钟的输入信号;输出管脚:speak为整点报时的声音输出;lamp2.0为整点报时的LED输出;:lk:吕匚mm或旳咔:hrra: 4:图5.6mst源代码如下:library

37、 ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity alert isport( clk:in std_logic;dain:in stdogic_vector(6 downto 0);speak:out std_logic;lamp:out std_logic_vector(2 dow nto 0);end alert;architecture fun of alert issignal count1: std_logic_vector(1 downto 0); sig nal count:

38、std_logic_vector(1 dow nto 0); begi nspeaker:process(clk)begi nspeak=10)the ncou nt1=00;elsecoun t1=co un t1+1;end if; end if;end if;end process speaker;lamper:process(clk)beg inif(risi ng_edge(clk)the nif(cou nt=10)the nif(cou nt=OO)the nlamp=001;elsif(cou nt=01)the nlamp=010;elsif(cou nt=10)the nl

39、amp=100;end if;coun t=co un t+1;elsecou nt=00;end if;end if;end process lamper;end fun;5.4时间数据选择模块如图5.7所示,该模块的作用是将时钟产生的秒、分钟、小时信号集合起来, 然后驱动六位八段共阴数码管的片选驱动信号输出。输入管脚:clk1为1khz的时钟脉冲;Reset为数据选择模块的清零、复位信号;Sec6.0为秒模块计数的输入信号;Min6.0为分钟模块计数的输入信号;Hour5.0为小时模块计数的输入信号;输出管脚:dout3.0为选择信号的输出;Dp为八段数码管小数点的输出管脚Sel2.0为位

40、选后的输出信号.:set ireiJ;恒metdpHwp. DrrrhOUf6.0|-El源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;use ieee.std_logic_arith.all;en tity seltime isport( clk1,reset:in std_logic;sec,mi n:in stdogic_vector(6 downto 0);hour:in stdo gic_vector(5 downto 0);daout:out std_logic_v

41、ector(3 downto 0);dp:out std_logic;sel:out std_logic_vector(2 dow nto 0);end seltime;architecture fun of seltime issignal count:std_logic_vector(2 downto 0); beg insel=co unt;process(clk1,reset)beg inif(reset=0)thencou nt=101)the ncoun t=000;elsecoun tdaout=sec(3 dow nto 0);dpdaout (3)=0;daout(2 dow

42、 nto 0)=sec(6 dow nto 4); dpdaout=mi n(3 dow nto 0);dpdaout (3)=0;daout(2 dow nto 0)v=min(6 dow nto 4); dpdaout=hour(3 dow nto 0);dpdaout(3 dow nto 2)=00;daout(1 dow nto 0)=hour(5 dow nto 4); dp=0;end case;end process;end fun;5.5译码显示模块如图5.8所示,此模块为数字时钟的译码显示输出模块,其中:输入管脚:num3.0为数据选择模块的输出信号;输出管脚:led6.0为

43、7段数码管的显示输出.基于VHDL的数字时钟设计和时序仿真=归勺:1 r - W 0ted8LQ r irrstl图5.8源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity deled isport (num: instd_logic_vector(3 downto 0);led: out std_logic_vector(6 dow nto 0);end deled;architecture fun of deled isbegi nled=1111110when

44、num=0000else0110000when num=0001else1101101when num=0010else1111001when num=0011else0110011when num=0100else 1011011when num=0101else1011111when num=0110else1110000when num=0111else 1111111when num=1000else1111011when num=1001else1110111when num=1010else0011111when num=1011else 1001110when num=1100e

45、lse1001111when num=1110else1000111when num=1111;end fun;6数字时钟模块化仿真仿真是使用VHDL语言进行设计的重要组成部分,也是对设计的电路进行功能 和性能测试的有效手段。EDA工具提供了强大且与电路实时行为相吻合的精确硬件 系统测试工具。由于本设计采用了分模块化设计的方法, 所以仿真的时候需要先进行各底层模 块的独立仿真,最后进行整个电子时钟的时序仿真, 将所有仿真图综合起来验证系 统功能的完整性。6.1计时模块仿真图由于计时模块分为三个部分:时、分、秒;所以三个模块需要进行独立仿真, 其中:6.1.1秒模块仿真如图7.1所示,从图中可以

46、看出,输入为1hz的时钟信号,reset为低电平有效 的复位信号,计数从00到59,计数到59时向分计时模块进位,然后重新开始计 数。实现60秒计数制,setmin为高电平有效的调分信号。6.1.2分模块仿真如图6.2所示,在图中可以看出和秒模块一致的是计数从00到59,当计数到59时向时模块进位,然后重新开始计时,实现60分钟计数制。并且给报警模块一个报时信号,提示整点报时。reset为低电平有效的清零信号,sethour为高电平有效的调时信号6.1.3小时模块仿真如图6.3所示,在图中可以看出reset为低电平有效的清零信号,elk为分模块 的进位信号,计数值从00到23,当计数到23的时

47、候,计数器归零,重新开始计 数,实现24小时计数制。O I3Vdnt *40.0 n:2t5116I7犁 220 33H 59H se:H 38 iId =elh刃_. r A D*. r A 1- A 0i-L_r_r_r_rnrnrnME59JI【幻 上 工占】, * 山 丫 旳 x 厂图6.56.4译码模块仿真图如图6.6所示,译码模块的作用就是将输入的时间信号转化成显示信号经过数码管输出。Yalu ai4X0 mtpo曰1idH沟一 1.K 1-X 1.K 1斗,1It 1os.1H J,H 1-厂r40jO ns旳$图6.66.5数字时钟整体仿真图数字时钟的整体仿真如图6.7所示,图

48、中elk为50hz的时钟输出信号,reset为低电平有效的清零信号,setmin为高电平有效的调分信号,sethour为高电平有效号,的调时信号,dp为“.”信号,led6.O为7段译码器的输出信号,lamp为三盏LED灯输出,speak为报时信号输出。第32页共45页基于VHDL的数字时钟设计和时序仿真7 FPGA开发板实验7.1 FPGA芯片和器件选择主芯片:Cyclone EP1C6Q240C8;器件:4个八段扫描数码显示管;三个按键开关(系统清零按键、调时按键、调 分按键);一个蜂鸣器;3个LED灯。7.2外部电路接线7.2.1输入接口1、代表清零,调时,调分信号 RESET、SETH

49、OUR、SETMIN的管脚分别连 接按键开关。2、代表输入脉冲信号CLK50M同50MHz时钟源相连。7.2.2输出接口1、代表扫描显示的驱动信号管脚 SEL2,SEL1, SEL0的管脚同四位扫描驱动 地址的低3位相连,最高位地址接“ 0”(也可以悬空);2、 代表7段字码驱动信号dout6.0的管脚分别同扫描数码管的段输入mo* 11 畫omrtD Ht g /.zwwwi. Fr rrT P-Qftp cv*LJ LJ LJ LJa,b,c,d,e,f,g相连,dp与7段数码显示管的段码插口相连。3、代表扬声器驱动信号的管脚 SPEAK同扬声器驱动接口 SPEAKER相连。4、代表花样LED灯显示的信号管脚LAMP0.2同3个LED灯相连。 7.2.3硬件实物图根据外部接线,需要结合FPGA开发板验证数字时钟的功能。如图 7.1所示, FreeDev2_2开发板上只有四位数码管,所以每次只能显示时钟信号中的:时、分、 秒4位时间信号,因为时钟主要以显示时、分为主。所以接时、分两位信号到四位 数码管,秒信号暂且省略。经外部实物验证,本课题所设

温馨提示

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

评论

0/150

提交评论