基于VHDL的数字时钟设计与时序仿真

上传人:沈*** 文档编号:94883717 上传时间:2022-05-23 格式:DOC 页数:37 大小:4.08MB
收藏 版权申诉 举报 下载
基于VHDL的数字时钟设计与时序仿真_第1页
第1页 / 共37页
基于VHDL的数字时钟设计与时序仿真_第2页
第2页 / 共37页
基于VHDL的数字时钟设计与时序仿真_第3页
第3页 / 共37页
资源描述:

《基于VHDL的数字时钟设计与时序仿真》由会员分享,可在线阅读,更多相关《基于VHDL的数字时钟设计与时序仿真(37页珍藏版)》请在装配图网上搜索。

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

2、2 分计时模块155.2.3 时计时模块175.3 报警模块185.4数据选择模块205.5译码显示模块226 数字时钟模块化仿真246.1计时模块仿真图246.1.1 秒模块仿真图246.1.2 分模块仿真图246.1.3 时模块仿真图256.2报警模块仿真图256.3 数据选择模块仿真图266.4译码模块仿真图266.5数字时钟整体仿真图277 FPGA开发板实验287.1 芯片和器件选择 287.2 外部电路接线 287.2 硬件实物图 288 结论30附录31参考文献42致谢431引言 随着科学技术的迅猛发展,在计算机技术的推动下电子技术获得了飞速的发展。电子产品几乎渗透到了工业、生活

3、的各个领域,其中集成电路的设计正朝着速度快、性能高、容量大、体积小和微功耗的方向发展。基于这种情况,可编程逻辑器件的出现和发展大大改变了传统的系统设计方法。可编程逻辑器件和相应的设计技术主要体现在三个方面:一是可编程逻辑器件的芯片技术;二是适用于可逻辑编程器件的硬件编程技术,三是可编程逻辑器件设计的EDA开发工具,它主要用来进行可编程逻辑器件应用的具体实现1。在本设计中采用了集成度较高的FPGA 可编程逻辑器件,选用了VHDL硬件描述语言和Quartus II开发软件进行设计。VHDL硬件描述语言在电子设计自动化中扮演着重要的角色,由于采用了具有多层次描述系统硬件功能的自顶向下的全新设计方法,

4、使设计师们摆脱了大量的辅助设计工作,而把精力集中于创造性的方案与概念构思上,用新的思路来发掘硬件设备的潜力,从而极大地提高了设计效率,缩短了产品的研制周期2。Quartus II软件是集成了编辑器、仿真工具、检查/分析工具和优化/综合工具的这些所有开发工具的一种集成的开发环境,通过该开发环境能够很方便的检验设计的仿真结果以及建立起与可编程逻辑器件的管脚之间对应的关系3。EDA技术是以计算机为工具,根据硬件描述语言HDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线。仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适

5、配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。综合过程就是将电路的高级语言描述转换低级的。可与目标器件FPGA/CPLD相映射的网表文件。适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如JED文件。适配所选定的目标器件必须属于在综合器中已指定的目标器件系列。2设计概述数字时钟是一种用数字电路技术实现时、分、秒计时的装

6、置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,数字时钟可植入自动控制、测试等系统内部,作为系统的时钟源,可为系统提供定时信号或中断控制的时间基准,具有广泛的用途。由于数字集成电路的发展使得数字时钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的单一报时功能4。加入了一些诸如自动报时、定时闹钟等功能。这些都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用,有着非常现实的意义。数字时钟的设计方法有很多种,包括基于单片机的硬件设计、基于各种描述语言的软件设计,本设计采用VHDL语言来设计数字时钟有着多方面的优越性,

7、通过把整个设计分为多个模块依次来实现,减少了众多重复性步骤,合理化了设计过程,使得设计更加省时、快捷,提高了设计效率。目前,电子系统的EDA技术正从着眼与数字逻辑向模拟电路和数模混合电路的方向发展,21世纪是EDA技术飞速发展的时期,可以预见EDA技术将会对今后电子设计的发展产生重大的影响。随着电子技术的发展,集成电路经历了从小规模、中规模到大规模和超大规模集成的过程,应用系统向小型化、快速化、大容量、重量轻的方向发展5;数字系统的设计也已从芯片组合化设计走向单片系的设计。随着微电子和计算机领域的原理创新、技术创新、应用创新层出不穷,许多特定功能的专用集成电路应用日益广泛,用户迫切希望根据自身

8、设计要求自行构造逻辑功能的数字电路,复杂可编程逻辑器件FPGA顺应了这一新的需要。它能将大量逻辑功能集成于一个芯片中,其规模可达几十万或上百门以上,从而电子设计自动化EDA技术应运而生,它是电子产品及系统开发领域中一场革命性变革,EDA技术极大地推动了科学技术的发展6。EDA技术的发展使硬件电路设计软件化,降低了硬件电路设计的难度,使设计周期和产品的开发时间缩短,设计更新变成了程序的修改,适应了千变万化的市场潮流。它的设计输入可以使用硬件描述语言,采用自顶向下的设计方法7,为设计者提供了一个高效、便捷的设计环境,同时也为充分发挥设计人员的创造性提供了条件。EDA技术主要应用于数字电路的设计,目

9、前它在中国的应用多数是用在FPGA的设计中。 EDA技术是现代电子信息工程领域的一门新技术,它是在先进的计算机工作平台上开发出来的一套电子系统设计的软硬件工具,并提供了先进的电子系统设计方法8。20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过

10、程和设计观念,促进了EDA技术的迅速发展9。目前,电子系统的EDA技术正从着眼与数字逻辑向模拟电路和数模混合电路的方向发展,21世纪是EDA技术飞速发展的时期,EDA技术将会对今后电子设计的发展产生重大的影响10。3 开发工具简介3.1 VHDL语言简介3.1.1 VHDL发展史 VHDL语言诞生于1982年,翻译成中文就是超高速集成电路硬件描述语言。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本,IEEE-1076之后,各EDA公司相继推出了

11、自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言11。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,主要是应用在数字电路的设计中。现在,VHDL和Verilog HDL作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为在新的世纪中,VHDL与Verilog语言将承担起大部分的数字系统设计任务12。 目前,它在中国的应用多数是用FPGA/CPLD的设计中。V

12、HDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体可以是一个元件,一个电路模块或一个系统分成外部或称可是部分,及端口和内部或称不可视部分,既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体13。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。3.1.2 VHDL设计特点应用VHDL语言进行系统设计,有以下几方面的特点: 1功能强大:VHDL具有功能强大的语

13、言结构。它可以用明确的代码描述复杂的控制逻辑设计。并且具有多层次的设计描述功能,支持设计库和可重复使用的元件生成。VHDL是一种设计、仿真和综合的标准硬件描述语言。 2可移植性:VHDL语言是一个标准语言,其设计描述可以为不同的EDA工具支持。它可以从一个仿真工具移植到另一个仿真工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台14。此外,通过更换库再重新综合很容易移植为ASIC设计。 3独立性:VHDL的硬件描述与具体的工艺技术和硬件结构无关。设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。程序设计的硬件目标器件有广阔的选择范围,可

14、以是各系列的CPLD、FPGA及各种门阵列器件。 4可操作性:由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需改变端口类属参量或函数,就能轻易地改变设计的规模和结构。 5灵活性:VHDL最初是作为一种仿真标准格式出现的,有着丰富的仿真语句和库函数。使其在任何大系统的设计中,随时可对设计进行仿真模拟。所以,即使在远离门级的高层次,设计者就能够对整个工程设计的结构和功能的可行性进行查验,并做出决策。VHDL设计结构VHDL描述数字电路系统设计的行为、功能、输入和输出。它在语法上与现代编程语言相似,但包含了许多与硬件有特殊关系的结构。VHDL将一个设计称

15、为一个实体Entity元件电路或者系统,并且将它分成外部的可见部分实体名连接和内部的隐藏部分实体算法实现。当定义了一个设计的实体之后,其他实体可以利用该实体,也可以开发一个实体库。所以,内部和外部的概念对系统设计的VHDL是十分重要的。外部的实体名或连接由实体声明来描述。而内部的实体算法或实现则由结构体来描述15。结构体可以包含相连的多个进程或者组建等其他并行结构,需要说明的是它们在硬件中都是并行运行的。VHDL设计步骤采用VHDL的系统设计,一般有以下6个步骤:1按照要求的功能模块划分;2VHDL的设计描述设计输入;3代码仿真模拟前仿真;4计综合、优化和布局布线;5布局布线后的仿真模拟后仿真

16、;6设计的实现下载到目标器件。3.2 Quartus II软件简介3.2.1 Quartus II软件介绍Quartus II 是Alera公司推出的一款功能强大,兼容性最好的EDA工具软件。该软件界面友好、使用便捷、功能强大,是一个完全集成化的可编程逻辑设计环境,具有开放性、与结构无关、多平台完全集成化丰富的设计库、模块化工具、支持多种硬件描述语言及有多种高级编程语言接口等特点16。Quartus II 支持原理图输入与 Verilog HDL 和VHDL输入混合设计,它除了承接原来的Max+Plus II 软件的全部设计功能和器件对象外,还增加了许多新功能和新的FPGA器件系列。它可对设计

17、进行功能仿真,对数字电路的设计实现同步模拟分析和时序仿真。这种同步模拟分析、时序仿真在数字电路的教学中可以起到很好的辅助作用。Quartus II是Altera公司推出的CPLD/FPGA开发工具,Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片电路平面布局连线编辑;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件

18、的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。3.2.2 Quartus II软件设计流程 1设计输入:设计文件的输入方法有原理图输入、文本输入、内存编辑以及由第三方EDA工具产生的网表输入、格式输入,生成方法不同,生成的文件格式也有所不同。在图形设计文件中,Quartus II软件为了实现不同的逻辑功能提供了大量的基本单元符号和宏功能模块,在图形编辑器中可以直接调用;为了

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

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

21、设计时首先用VHDL语言编写各个功能模块,在 QuartusII开发环境下分别进行编译、仿真,然后再用顶层文件将各功能模块连接起来。规定某一模块的功能和各模块之间的接口然后将各模块组合起来构成系统框图。根据设计要求可以把整体设计分为:分频模块、计时模块、数据扫描模块、报警模块和数据选择模块,然后再根据总体方案对各模块进行分别设计和仿真下载18。根据总体方案对各模块分别进行设计、仿真和下载,数字时钟的总体框图如图5.1所示,报警模块声音输出24进制计数器控 制 信 号6位数码显示管 时间 数据 动态 扫描 模块译 码 电 路 setmin60进制计数器 reset60进制计数器 sethour分

22、频模块 50MHz 图4.1 数字时钟基本框图系统的基本功能模块可划分为:分频模块、计数模块 、译码模块、数据扫描模块和报警模块。计数模块由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计数。整个计数模块从00点00分00秒开始计时,当计数到23点59分59秒的时候,一天结束,计数器清零,新的一天重新开始计数。秒计数器的计数时钟信号为1Hz 的标准信号,可以由系统板上提供的50MHz 信号通过分频得到。秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号。要设计一个同时显示时、分、秒6个数字的数字时钟,则需要6个七段数码显示管。

23、若同时点亮这6个七段数码显示显示管,则电路中会产生一个比较大的电流,很容易造成电路烧坏,我们通过扫描电路来解决这一问题,通过产生一个扫描信号来控制6个七段显示器,依次点亮6个七段数码显示管,也就是每次只点亮一个七段显示器。只要扫描信号的频率超过人的眼睛视觉暂留频率24Hz以上,就可以达到尽管每次点亮单个七段数码显示管,却能具有6个同时显示的视觉效果,而且显示也不致闪烁抖动。其中6位扫描信号一方面控制七段显示器依次点亮,一方面控制6选1选择器输出相应显示数字。时间数据选择模块的作用是将时钟产生的秒、分钟、小时信号集合起来,然后驱动六位七段数码管的片选驱动信号输出。5 数字时钟模块化设计 需要设计

24、的数字时钟由上述7个模块组成,设计时,首先用VHDL语言编写各个底层功能模块,然后在QuartusII开发环境下分别进行编译、仿真, 然后再用顶层文件将各功能模块连接起来,再进行进一步编译、仿真、下载。以下介绍系统中各模块的具体功能和设计方法。5.1 分频模块 本设计使用的FPGA开发板中使用的芯片是Cyclone EP1C6Q240C8,使用的是50MHz的时钟脉冲输入,根据电路的具体设计需要,对其进行分频设计。 如图5.2所示,其为系统的分频模块,其中模块clk1管脚输出为1hz的时钟脉冲,得出用于计数模块和报警模块正常工作的时钟信号,在clk1k管脚输出为一个1khz的时钟脉冲,作用与动

25、态扫描模块的正常工作。输入管脚:clk为50Mhz脉冲输入;输出管脚:clk1为1hz脉冲输出; clk1k为1khz脉冲输出.图5.2源代码如下:library ieee;use ieee.std_logic_1164.all;entity fp is port;end fp;architecture fp_arc of fp issignal x:std_logic;signal y:std_logic;begin process variable cnt:integer range 0 to 24999999; begin if clkevent and clk=1then if cnt

26、24999999 then cnt:=cnt+1; else cnt:=0; x=not x; end if; end if; q1=x; end process;process variable cnt:integer range 0 to 24999; begin if clkevent and clk=1then if cnt24999 then cnt:=cnt+1; else cnt:=0; y=not y; end if; end if; q1k=y; end process;end fp_arc;5.2 计时模块5.2.1 秒计时模块如图5.3所示,计数电路的第一个模块为秒计数模

27、块,其实质是一个六十进制计数器,其中输入管脚: clk为1hz的时钟脉冲; reset为秒模块清零复位键; setmin为调分钟按键输出管脚:enmin为分模块的进位信号; dout6.0为秒模块输出的计数信号.图5.3源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second is port clk: in std_logic; reset: in std_logic; setmin: in std_logic; enmin: out std_logic; daout

28、: out std_logic_vector;end entity second;architecture fun of second is signal count:std_logic_vector; signal enmin_1,enmin_2:std_logic; begin daout=count; enmin_2=; enmin=; process begin ifthen count=0000000; elsifthen ifcount=1001then ifcountthen ifthen enmin_1=1;count=0000000; else count=count+7;

29、end if; else count=0000000; end if; elsifcountthen count=count+1; enmin_1=0after 100ns; else count=0000000; end if; end if; end process;end fun;5.2.2 分计时模块如图5.4所示,计数模块的第二个模块为分计时模块,其实质是一个六十进制计数器,其中:输入管脚:clk为秒模块输出的进位信号;clk1为1hz的时钟控制脉冲; reset管脚的作用为分模块的清零、复位; sethour为调小时按键。输出管脚:enhour输出为时模块的进位信号; dout6.

30、0为分钟模块输出的计数信号. 图5.4源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute is portclk: in std_logic; clk1: in std_logic; reset: in std_logic; sethour: in std_logic; enhour: out std_logic; daout: out std_logic_vector;end entity minute;architecture fun of minute is

31、 signal count:std_logic_vector; signal enhour_1,enhour_2:std_logic; begin daout=count; enhour_2=; enhour=; process begin ifthen count=0000000; elsifthen ifcount=1001then ifcountthen ifthen enhour_1=1; count=0000000; else count=count+7; end if; else count=0000000; end if; elsifcountthen count=count+1

32、; enhour_1=0after 100 ns; else count=0000000; end if; end if; end process;end fun;5.2.3 时计时模块如图5.5所示,此模块的第三个模块为小时计数模块,其实质是一个二十四进制计数器,其中:输入管脚:clk为分模块输出的进位信号; Reset为小时模块的清零、复位管脚.输出模块:dout5.0为小时模块输出的计数信号.图5.5源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour is p

33、ort clk,reset: in std_logic; daout: out std_logic_vector;end entity hour;architecture fun of hour is signal count:std_logic_vector; begin daout=count; process begin ifthen count=000000; elsifthen ifcount=1001then ifcountthen count=count+7; else count=000000; end if; elsifcountthen count=count+1; els

34、e count=000000; end if; end if; end process;end fun;5.3 报警模块 如图5.6所示,报警模块的作用是在时钟整点的时候输出一个报时信号,信号作用用开发板上,产生外部响声,起到报时的作用,同时可以选择在开发板的LED上显示出整点报时的LED花样显示,其中:输出管脚:clk为1hz的脉冲信号; dain6.0是分钟的输入信号;输出管脚:speak为整点报时的声音输出; lamp2.0为整点报时的LED输出;图5.6源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_u

35、nsigned.all;entity alert is port clk: in std_logic; dain: in std_logic_vector; speak: out std_logic; lamp: out std_logic_vector;end alert;architecture fun of alert is signal count1: std_logic_vector; signal count: std_logic_vector;begin speaker:process begin speak=count1; ifthen ifthen if=10then cou

36、nt1=00; else count1=count1+1; end if; end if; end if; end process speaker; lamper:process begin ifrising_edgethen ifcountthen ifcountthen lamp=001; elsifthen lamp=010; elsifthen lamp=100; end if; count=count+1; else count=00; end if; end if; end process lamper;end fun;5.4 时间数据选择模块 如图5.7所示,该模块的作用是将时钟

37、产生的秒、分钟、小时信号集合起来,然后驱动六位八段共阴数码管的片选驱动信号输出。输入管脚:clk1为1khz的时钟脉冲; Reset为数据选择模块的清零、复位信号; Sec6.0为秒模块计数的输入信号; Min6.0为分钟模块计数的输入信号; Hour5.0为小时模块计数的输入信号;输出管脚:dout3.0为选择信号的输出; Dp为八段数码管小数点的输出管脚; Sel2.0为位选后的输出信号.源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arit

38、h.all;entity seltime is port clk1,reset: in std_logic; sec,min: in std_logic_vector; hour: in std_logic_vector; daout: out std_logic_vector; dp: out std_logic; sel: out std_logic_vector;end seltime;architecture fun of seltime is signal count:std_logic_vector; begin sel=count; process begin ifthen co

39、unt=000; elsifthen if=101then count=000; else countdaout=sec;dpdaout=0; daout=sec; dpdaout=min;dpdaout=0; daout=min; dpdaout=hour;dpdaout=00; daout=hour; dp=0; end case; end process;end fun;5.5 译码显示模块如图5.8所示,此模块为数字时钟的译码显示输出模块,其中:输入管脚:num3.0为数据选择模块的输出信号;输出管脚:led6.0为7段数码管的显示输出.图5.8 源代码如下:library ieee;

40、use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity deled is portnum: in std_logic_vector; led: out std_logic_vector;end deled;architecture fun of deled is begin led=1111110when num=0000else 0110000when num=0001else 1101101when num=0010else 1111001when num=0011else 0110011when num=010

41、0else 1011011when num=0101else 1011111when num=0110else 1110000when num=0111else 1111111when num=1000else 1111011when num=1001else 1110111when num=1010else 0011111when num=1011else 1001110when num=1100else 0111101when num=1101else 1001111when num=1110else 1000111when num=1111;end fun;6 数字时钟模块化仿真仿真是使

42、用VHDL语言进行设计的重要组成部分,也是对设计的电路进行功能和性能测试的有效手段。EDA工具提供了强大且与电路实时行为相吻合的精确硬件系统测试工具。 由于本设计采用了分模块化设计的方法,所以仿真的时候需要先进行各底层模块的独立仿真,最后进行整个电子时钟的时序仿真,将所有仿真图综合起来验证系统功能的完整性。6.1 计时模块仿真图 由于计时模块分为三个部分:时、分、秒;所以三个模块需要进行独立仿真,其中:6.1.1 秒模块仿真 如图7.1所示,从图中可以看出,输入为1hz的时钟信号,reset为低电平有效的复位信号,计数从00到59,计数到59时向分计时模块进位,然后重新开始计数。实现60秒计数

43、制,setmin为高电平有效的调分信号。图6.16.1.2 分模块仿真 如图6.2所示,在图中可以看出和秒模块一致的是计数从00到59,当计数到59时向时模块进位,然后重新开始计时,实现60分钟计数制。并且给报警模块一个报时信号,提示整点报时。reset为低电平有效的清零信号,sethour为高电平有效的调时信号。图6.26.1.3 小时模块仿真如图6.3所示,在图中可以看出reset为低电平有效的清零信号,clk为分模块的进位信号,计数值从00到23,当计数到23的时候,计数器归零,重新开始计数,实现24小时计数制。 图6.36.2 报警模块仿真图 如图6.4所示,该模块的功能是,对分计时模

44、块输入的整点信号输出一个声音信号,提供整点报时功能,lamp为三位LED灯输出,speak为扬声器输出。图6.46.3 数据选择模块仿真图 如图6.5所示,在图中可以看出,该模块中当输入时间为23:59:38的时候,dout端口中输出的内容为:235938,两者输入时间一致,所以该模块符合设计要求。其中Reset为低电平有效置位信号,clk1为1khz的时钟脉冲,dp为八段数码管的.输出。图6.56.4 译码模块仿真图如图6.6所示,译码模块的作用就是将输入的时间信号转化成显示信号经过数码管输出。图6.66.5 数字时钟整体仿真图 数字时钟的整体仿真如图6.7所示,图中clk为50hz的时钟输

45、出信号,reset为低电平有效的清零信号,setmin为高电平有效的调分信号,sethour为高电平有效的调时信号,dp为.信号,led6.0为7段译码器的输出信号,lamp为三盏LED灯输出,speak为报时信号输出。图6.77 FPGA开发板实验7.1 FPGA芯片和器件选择 主芯片:Cyclone EP1C6Q240C8; 器件:4个八段扫描数码显示管;三个按键开关系统清零按键、调时按键、调分按键;一个蜂鸣器;3个LED灯。7.2 外部电路接线7.2.1 输入接口1、代表清零,调时,调分信号RESET、SETHOUR、SETMIN的管脚分别连接按键开关。2、代表输入脉冲信号CLK50M同50MHz时钟源相连。7.2.2 输出接口 1、代表扫描显示的驱动信号管脚SEL2,SEL1,SEL0的管脚同四位扫描驱动地址的低3位相连,最高位地址接0也可以悬空; 2、代表7段字码驱动信号dout6.0的管脚分别同扫描数码管的段输入a,b,c,d,e,f,g相连,dp与7段数码显示管的段码插口相连。 3、代表扬声器驱动信号的管脚SPEAK同扬声器驱动接口SP

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!