基于VHDL数字时钟的设计与实现_第1页
基于VHDL数字时钟的设计与实现_第2页
基于VHDL数字时钟的设计与实现_第3页
基于VHDL数字时钟的设计与实现_第4页
基于VHDL数字时钟的设计与实现_第5页
已阅读5页,还剩19页未读, 继续免费阅读

下载本文档

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

文档简介

1、 聂敏 基于 VHDL 数字时钟的设计与实现 第 1 页 共 24 页 1 引引 言言随着科学技术的不断发展,人们对时间计量的精度要求越来越高。相对机械钟而言,数字钟能实现准确计时,并显示时,分,秒,而且可以方便,准确的对时间进行调节。在此基础上,还可以实现整点报时的功能。因此,数字钟的应用十分广泛。所谓数字时钟,是指利用电子电路构成的计时器。1.1 课题的背景、目的课题的背景、目的 电子技术是一门应用很广,发展极为迅速的科学技术,尤其由于数字电子技术具有高抗干扰能力、更高的可靠性和便于计算机处理等特点,近年来得到更加迅速的发展,数字通讯设备、数字电视、数字照相机、数字摄象机等数字化产品近年如

2、雨后春笋般大量涌现,数字电子技术已经成为今后电子技术发展的主要方向。现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 通过数字时钟的设计,巩固计算机组成原理课程,理论联系实际,提高分析、解决计

3、算机技术的实际问题的独立工作能力;掌握用 VHDL 语言编制简单的小型模块,学会数字钟的设计方法,熟悉集成电路的使用方法,初步掌握电子钟的设计方法并实现时间的显示和校对,以及报时的功能,并能对数字电子钟进行扩展。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。1.2 课程设计的内容课程设计的内容 本课程设计实现一个数字时钟,具有按秒走时功能,能够分别显示小时(2 位 24 小时) 、分钟(2 位) 、秒(2 位) 。具有整点报时、时间调整功能,且能够对计时系统的小时、分钟进行调整。也可设计成

4、十二小时计时方案(AM,PM) 。具有美观、清晰、人性化的显示界面设计,走时精度不劣于3 秒/月。本课程设计采用 VHDL 语言,以MAXPLUSII 开发工具。根据系统设计的要求,系统设计采用自顶向下的设计方法,可以 聂敏 基于 VHDL 数字时钟的设计与实现 第 2 页 共 24 页 将该系统中的各功能模块细分为:秒计数模块、分计数模块、小时计数模块、报警模块、时间设置模块和译码显示模块六个部分。 聂敏 基于 VHDL 数字时钟的设计与实现 第 3 页 共 24 页 2 2 EDAEDA、VHDLVHDL 简介简介2.1 EDA 简介简介 现代电子设计技术的核心就是 EDA(Electro

5、nic Design Automatic)技术。利用 EDA技术,电子设计师可以方便地实现 IC 设计、电子电路设计和 PCB 设计等工作。EDA 技术已有 30 年的发展历程。现在 EDA 技术应用广泛,包括在机械、电子、通信、航空航天、化工等各个领域,都有 EDA 的应用。无论是在产品设计、制造方面,还是在科研与教学方面,EDA 已成为必不可少的一部分。掌握 EDA 技术已成为通信电子类专业的学生学习及就业的基本素质。2.1.1 EDA 技术的概念 EDA 技术是在电子 CAD 技术基础上发展起来的通用软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的

6、最新成果,进行电子产品的自动设计。 EDA 设计可分为系统级、电路级和物理实现级。物理级设计主要指 IC 版图设计,一般由半导体厂家完成;系统级设计主要面对大型复杂的电子产品;而一般民用及教学所涉及基本是电路级设计。我们常用的 EDA 软件多属于电路级设计。 电路级设计工作,是在电子工程师接受系统设计任务后,首先确定设计方案,并选择合适的元器件,然后根据具体的元器件设计电路原理图,接着进行第一次仿真。其中包括数字电路的逻辑模拟、故障分析、模拟电路的交直流分析、瞬态分析等。这一次仿真主要是检验设计方案在功能方面的正确性。 仿真通过后,根据原理图产生的电气连接网络表进行 PCB 板的自动布局布线,

7、有条件的还可以进行 PCB 后分析。其中包括热分析、噪声及窜扰分析、电磁兼容分析、可靠性分析等,并可将分析后的结果参数反馈回电路图,进行第二次仿真,也称作后仿真。后仿真主要是检验 PCB 板在实际工作环境中的可行性。 2.1.2 EDA 技术的历史与发展 EDA 技术发展历程大致可分为三个阶段。20 世纪 70 年代为计算机辅助设计(CAD)阶段,人们开始用计算机取代手工操作进行 IC 版图编辑、PCB 布局布线。80 年代为计算机辅助工程(CAE)阶段。与 CAD 相比,CAE 除了有纯粹的图形绘制功能外,又增加了电路功能分析和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计

8、。 聂敏 基于 VHDL 数字时钟的设计与实现 第 4 页 共 24 页 20 世纪 90 年代为电子系统设计自动化(EDA)阶段,同时又出现了计算机辅助工艺(CAPP) 、计算机辅助制造(CAM)等。 2.1.3 EDA 的应用 现在 EDA 技术应用广泛,包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有 EDA 的应用。目前 EDA 技术已在各大公司、科研和教学部门广泛使用。 在产品设计与制造方面,EDA 技术可实现前期的计算机仿真、系统级模拟及测试环境的仿真、PCB 的制作、电路板的焊接、ASIC 的设计等。 在教学方面,我国高校是从九十年代中期开始 EDA

9、 教育的,现在几乎所有理工科类高校都开设了 EDA 课程。这些课程主要是让学生了解 EDA 的基本概念和原理,使用EDA 软件进行电子电路课程的实验及从事简单系统的设计。 2.1.4 EDA 常用软件 EDA 工具层出不穷,目前进入我国并具有广泛影响的 EDA 软件有:EWB、PSpice、OrCAD、PCAD、Protel、Viewlogic、Mentor、Graphics、Synopsys、LSIlogic、Cadence 等等。这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同时也可以进行 PCB 自动布局布线,可输出多种网表文件与第三方软件接口。下面按

10、主要功能或主要应用场合进行划分。 1. 电子电路设计与仿真工具 电子电路设计与仿真工具包括 PSpice、EWB、Matlab、SystemView、MMICAD 等。下面简单介绍前两种软件。 (1)PSpice:基于 Spice 的 PC 版软件。Spice(Simulation Program with Integrated Circuit Emphasis)是由美国加州大学推出的电路分析仿真软件,是 20 世纪 80 年代世界上应用最广的电路设计软件,1988 年被定为美国国家标准。1984 年,美国 MicroSim 公司推出了PSpice。PSpice 是一种强大的模拟和数字电路混合

11、信号仿真软件,包括对中规模集成电路(MSI)和大规模集成电路(LSI)提供多种分析功能,而且仿真精度高,在国内普遍使用。 (2)EWB(Electronic Workbench)软件:Interactive ImageTechnologies Ltd 在 20 世纪 90 年代初推出的电路仿真软件,主要用于模拟和数字电路的仿真。高版本已更名为 Multisim。相对于其它 EDA 软件,它提供了万用表、示波器、信号发生器等虚拟仪器。该软件的界面直观,易学易用。它的很多功能模仿了 Spice 的设计,分析功能也较强。 2. PCB 设计软件 聂敏 基于 VHDL 数字时钟的设计与实现 第 5 页

12、 共 24 页 PCB(PrintedCircuit Board)设计软件种类很多,如Protel、OrCAD、PowerPCB、Cadence PSD、MentorGraphices 的 Expedition PCB、Winboard/Windraft/IvexSPICE、PCB Studio 等等。目前在我国使用最普遍的应属Protel。 Protel 是 PROTEL(现更名为 Altium)公司在 20 世纪 80 年代末推出的 CAD 工具。它较早在国内使用,普及率很高。早期的 Protel 主要作为印刷板自动布线工具使用,现在普遍使用的是 Protel 99 SE。它是个完整的全方

13、位电路设计系统,包含了电原理图绘制、模拟电路与数字电路混合信号仿真、多层印刷电路板设计,可编程逻辑器件设计等功能,并具有 Client/Server 体系结构,同时还兼容一些其它设计软件的文件格式。Protel 软件功能强大、界面友好、使用方便。它最具代表性的是电路设计和 PCB 设计。 3. IC 设计软件 IC 设计工具很多,其中按市场所占份额排行为 Cadence、Mentor Graphics 和Synopsys。这三家都是 ASIC 设计领域相当有名的软件供应商。其它公司的软件相对来说使用者较少。 4. 其它 EDA 软件 (1)VHDL 语言:超高速集成电路硬件描述语言(Vhsic

14、 Hardware Deseription Languagt,简称 VHDL) ,是 IEEE 的一项标准设计语言。它源于美国国防部提出的超高速集成电路(Very High Speed Integrated Circuit,简称 VHSIC)计划,是 ASIC 设计和 PLD设计的一种主要输入工具。 (2)Veriolg HDL:Verilog 公司推出的硬件描述语言,在 ASIC 设计方面与 VHDL 语言平分秋色。2.2 VHDL 介绍介绍 VHDL 的英文全名是 Very-High-Speed Integrated Circuit HardwareDescription Language

15、,诞生于 1982 年。1987 年底,VHDL 被 IEEE 和美国国防部确认为标准硬件描述语言 。自 IEEE 公布了 VHDL 的标准版本, IEEE-1076(简称 87 版)之后,各 EDA 公司相继推出了自己的 VHDL 设计环境,或宣布自己的设计工具可以和VHDL 接口。此后 VHDL 在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。 1993 年,IEEE 对 VHDL 进行了修订,从更高的抽象层次和系统描述能力上扩展 VHDL 的内容,公布了新版本的 VHDL,即 IEEE 标准的 1076-1993 版本,(简称 93 版)。现在, VHDL 和 V

16、erilog 作为 IEEE 的工业标准硬件描 聂敏 基于 VHDL 数字时钟的设计与实现 第 6 页 共 24 页 述语言,又得到众多 EDA 公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中, VHDL 于 Verilog 语言将承担起大部分的数字系统设计任务。 VHDL 语言是一种用于电路设计的高级语言。它在80 年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。VHDL 的英文全写是: VHSIC(Very High Speed Integrated Circuit)Hardware D

17、escriptiong Language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。VHDL 主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外, VHDL 的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL 的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。

18、在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是 VHDL 系统设计的基本点 。 与其他硬件描述语言相比, VHDL 具有以下特点:功能强大、设计灵活。 VHDL 具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。 VHDL 支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言虽不能比拟的。 VHDL 还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。支持广泛、易于修改。由于 VH

19、DL 已经成为 IEEE 标准所规范的硬件描述语言,目前大多数 EDA 工具几乎都支持 VHDL,这为 VHDL 的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL 编写的源代码,因为VHDL 易读和结构化,所以易于修改设计。强大的系统硬件描述能力。 VHDL 具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外, VHDL 支持惯性延迟和传输延迟, 聂敏 基于 VHDL 数字时钟的设计与实现 第 7 页 共 24 页 还可以准确地建立硬件电路模型。 VHDL

20、 支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。独立于器件的设计与工艺无关。设计人员用VHDL 进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。很强的移植能力。 VHDL 是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。易于共享和复用。 VHDL 采用基于库( Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行

21、复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。(1)与其他的硬件描述语言相比, VHDL 具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL 丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL 语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用 VHD

22、L 完成的一个确定的设计,可以利用EDA 工具进行逻辑综合和优化,并自动的把 VHDL 描述设计转变成门级网表。(5)VHDL 对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。 聂敏 基于 VHDL 数字时钟的设计与实现 第 8 页 共 24 页 3 数字时钟设计过程数字时钟设计过程3.1 设计规划设计规划根据系统设计的要求,系统设计采用自顶向下的设计方法,可以将该系统中的各功能模块细分为:秒计数模块、分计数模块、小时计数模块、报警模块、时间设置模块和译码显示模块六个部分。先使用 VHDL 语言设计编译将这每个模块制作成图元,然后

23、再使用图形编辑器进行总体的整合,系统的整体组装设计草图如图 3.1 所示。秒计数器模块分计数器模块时计数器模块译码显示模块时间调整模块报警模块7 段数码管显示喇叭系统时钟基本功能扩展功能外部设备秒高位 进位分高位 进位图 3.1 系统总体设计草图3.2 各模块原理及程序各模块原理及程序 现在就先对本系统中最基本的三项内容设计进行阐述:3.2.1 秒计数模块的秒计数模块的 VHDLVHDL 程序(程序(MIAO.VHDMIAO.VHD) 秒计数模块中是以 60 进制进行循环的,故需要的秒数据输出应该是 7 位的(其中低4 位用于秒的低位,而高 3 位在作为秒的高位) 。另外在该模块下的程序由于考

24、虑到系统功能中调整时钟和分钟的要求,故要在秒计数模块中另外加入复位信号以及分钟设置信号。以下是该模块的 VHDL 源程序。LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MIAO IS 聂敏 基于 VHDL 数字时钟的设计与实现 第 9 页 共 24 页 PORT (CLK: IN STD_LOGIC;-系统时钟信号 RESET: IN STD_LOGIC; -系统复位信号 SETMIN: IN STD_LOGIC; -分设置信号 ENMIN: OUT STD_LOGIC;-分计数

25、时钟信号 MOUT: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -秒计数值END ENTITY MIAO;ARCHITECTURE ART OF SECOND IS SIGNAL COUNT :STD_LOGIC_VECTOR(6 DOWNTO 0);-7 位计数器SIGNAL ENMIN_1,ENMIN_2 :STD_LOGIC ;-前者是整秒进位,后者是调节分钟的信号BEGIN MOUT=COUNT;-将计数器的值直接赋给秒计数ENMIN_2=(SETMIN AND CLK);-ENMIN_2 的内容是分设置信号和系统时钟信号的“与”运算ENMIN=(ENMIN_

26、1 OR ENMIN_2);-ENMIN 的内容是整秒进位和调节分钟信号的“或”运算PROCESS(CLK,RESET,SETMIN) BEGIN IF (RESET=0) THEN-初始化,即系统复位信号的功能 COUNT=0000000; ENMIN_1=0; -将整秒的进位置零 ELSIF(CLKEVENT AND CLK=1) THEN IF(COUNT(3 DOWNTO 0)=1001) THEN -1.若 count 的低四位是“1001” IF(COUNT16#60#) THEN -2.并且 count 的值小于 60 IF(COUNT=1011001) THEN -3.且 co

27、unt 的值为 59 ENMIN_1=1;COUNT=0000000; -则 ENMIN_1 置 1,count 清零 ELSE -否则,若只满足条件 1、2 COUNT=COUNT+7;-则直接向 count 的高 3 位进 1 END IF; 聂敏 基于 VHDL 数字时钟的设计与实现 第 10 页 共 24 页 ELSE-若不满足 count 的值小于 60 COUNT=0000000;-则直接将 count 清零 END IF; ELSIF(COUNT16#60#) THEN-若 count 的低四位不满足条件 1,满足 2. COUNT=COUNT+1; ENMIN_1=0;-cou

28、nt 加计数,进位标志字为零 ELSE -若条件 1、2 均不满足 COUNT=0000000;ENMIN_1=0;-初始化 END IF; END IF;END PROCESS;END ARCHITECTURE ART;3.2.2 分计数模块的 VHDL 程序(FEN.VHD) 分计数同秒计数基本相同,由于均是 60 进制的计数器,故思路完全一致。LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FEN IS PORT (INMIN: IN STD_LOGIC;-系统时钟信号 RE

29、SET: IN STD_LOGIC; -系统复位信号 DIPS: IN STD_LOGIC;-时设置时钟信号 SETHOUR: IN STD_LOGIC; -时设置信号 ENHOUR: OUT STD_LOGIC;-时计数时钟信号 SOUT: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -秒计数值 BELL: OUT STD_LOGIC;-时钟报警信号END ENTITY FEN;ARCHITECTURE ART OF MINUTE IS SIGNAL COUNT :STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL ENHOUR_1,ENHOUR

30、_2 :STD_LOGIC ;-前者是整分进位字,后者是调节时钟信号BEGIN 聂敏 基于 VHDL 数字时钟的设计与实现 第 11 页 共 24 页 SOUT=COUNT; ENHOUR_2=(SETHOUR AND DIPS);ENHOUR=(ENHOUR_1 OR ENHOUR_2);BELL=ENHOUR_1;-将 ENHOUR_1 信号赋给 BELL PROCESS(INMIN,RESET,SETHOUR) BEGIN IF (RESET=0) THEN COUNT=0000000; ENHOUR_1=0; ELSIF(INMINEVENT AND INMIN=1) THEN IF(

31、COUNT(3 DOWNTO 0)=1001) THEN IF(COUNT16#60#) THEN IF(COUNT=1011001) THEN ENHOUR_1=1;COUNT=0000000; ELSE COUNT=COUNT+7; END IF; ELSE COUNT=0000000; END IF; ELSIF(COUNT16#60#) THEN COUNT=COUNT+1; ENHOUR_1=0AFTER 100 NS; ELSE COUNT=0000000;ENHOUR_1=0; END IF; END IF; END PROCESSEND ARCHITECTURE ART; 报警

32、信号 BELL 的如何获取,本来构思时把报警作为一个单独的功能模块来处理,可是在编程实验程序,以及具体的调试中发现 BELL 作为整点报时的信号,其功能与分 聂敏 基于 VHDL 数字时钟的设计与实现 第 12 页 共 24 页 钟计数中的 ENHOUR_1 是完全相同的,故只需将 BELL 放在分钟模块中一起进行处理。即将 ENHOUR_1 的值赋给了 BELL。3.2.3 时计数模块的 VHDL 程序(SHI.VHD)LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SHI IS

33、 PORT (INHOUR: IN STD_LOGIC;-时。时钟信号 RESET: IN STD_LOGIC; -系统复位信号 HOUT: OUT STD_LOGIC_VECTOR(5 DOWNTO 0); -时计数值END ENTITY SHI;ARCHITECTURE ART OF HOUR IS SIGNAL COUNT :STD_LOGIC_VECTOR(5 DOWNTO 0);-设计一个计数器BEGIN HOUT=COUNT;将计数器直接赋给 HOUTPROCESS(INHOUR,RESET) BEGIN IF(RESET=0) THEN-初始化 COUNT=000000; ELS

34、IF (INHOUREVENT AND INHOUR=1) THEN -INHOUR 上升沿有效 IF(COUNT(3 DOWNTO 0)=1001) THEN -1.COUNT 低 4 位为 9 IF(COUNT=16#23#) THEN -2.计数信号的值小于 23 COUNT=COUNT+7;-直接向高位进 1 ELSE -若不满足条件 2 COUNT=000000;-直接将 COUNT 清零 END IF; ELSIF(COUNT16#23#) THEN -若满足条件 1,而不满足 2. COUNT=COUNT+1; -count 自身+1 ELSE COUNT=000000; END

35、 IF; 聂敏 基于 VHDL 数字时钟的设计与实现 第 13 页 共 24 页 END IF;END PROCESS;END ARCHITECTURE ART; 现在对图 3.1 中所描绘的两种特殊功能进行阐述与讲解。3.2.4 时间设置模块 VHDL 程序(SET.VHD) 本模块中要将各个状态以及同一时刻下六个 7 段数码管的数据接受情况描述清楚,以下特列一张各变化量与位选择信号的对应关系。上升沿次序(SETCLK)计数器COUNT位选择控制信号 SEL数码管编号显示输出XSOUT小数点控制信号DP10000000秒低四位020010011秒高三位030100102分低四位1401101

36、13分高三位051001004时低四位161011015时高两位0 数码管的编号对应关系以及其他具体内容在后面的硬件分析中将做详细介绍。以下是该模块的程序:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SET IS PORT (SETCLK: IN STD_LOGIC;-调时时钟信号 RESET: IN STD_LOGIC; -系统复位信号 DP: OUT STD_LOGIC; -点输出 SEC,MIN: IN STD_LOGIC_VECTOR(6 DOWNTO 0);-分、秒计

37、数值 HOUR: IN STD_LOGIC_VECTOR(5 DOWNTO 0); -时计数值 XSOUT: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-显示输出 SEL: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);-位选择输出END ENTITY SET;表 3.1 时间计数模块中位对应关系简图 聂敏 基于 VHDL 数字时钟的设计与实现 第 14 页 共 24 页 ARCHITECTURE ART OF SET IS SIGNAL COUNT :STD_LOGIC_VECTOR(2 DOWNTO 0);-设计一个 3 位计数器 BEGIN P

38、ROCESS(SETCLK,RESET) BEGIN IF (RESET=0) THEN -初始化 COUNT=101) THEN-若 COUNT 为“101” COUNT=000;-将 COUNT 清零 ELSE COUNT=COUNT+1;-否则,自加一 END IF; END IF;END PROCESS;PROCESS(SETCLK,RESET)-对各状态的具体内容进行细化 BEGIN IF(RESET=0) THEN XSOUT=0000; DP=0; SELXSOUT=SEC(3 DOWNTO 0);-若 COUNT 为“000” ,则秒的低 4 位 DP=0;SELXSOUT=S

39、EC(6 DOWNTO 4);-若 COUNT 为“001” ,则秒的高3 位赋 DP=0;SELXSOUT=MIN(3 DOWNTO 0);-若 COUNT 为“010” ,则分的低4 位 聂敏 基于 VHDL 数字时钟的设计与实现 第 15 页 共 24 页 DP=1;SELXSOUT=MIN(6 DOWNTO 4);-后面的均可照此法进行 DP=0;SELXSOUT=HOUR(3 DOWNTO 0); DP=1;SELXSOUT=HOUR(5 DOWNTO 4); DP=0;SELNULL; END CASE; END IF;END PROCESS;END ARCHITECTURE AR

40、T;此模块中,设计了一个具有 6 组状态的 3 位计数器 count,以调时时钟信号 SETCLK的上升沿为激励响应。如果一个时刻的电子钟要显示的数字是六个的话,则送出并接受这一组数字需要的时间是调时时钟信号 SETCLK 的周期6,即 t=T(setclk) 6 (式 1-1)由于在后面将每个模块进行整合的时候,就存在如何协调每个计数器的周期,以减少出错,并且节约时间与资源。通过这个公式可以轻松得出,并且助于理解各模块之间的关系。3.2.5 译码模块的 VHDL 源程序(DELED.VHD) 程序比较简单,在此仅对译码输出和十进制中 09 对应关系列表说明。译码 B0111111000011

41、0101101110011111100110译码 H3FH06H5BH4FH6EH十进制01234译码 B11011011111101000011111111111101111译码 H6DH7DH07HFFH6FH十进制56789 以下是源程序(DELED.VHD)LIBRARY IEEE;表3.2 译码输出与十进制对应关系 聂敏 基于 VHDL 数字时钟的设计与实现 第 16 页 共 24 页 USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DELED IS PORT (NUM: IN STD_LOGIC_

42、VECTOR(3 DOWNTO 0);-二进制数值 LED: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);-译码后的输出数据END DELED;ARCHITECTURE ART OF DELED ISBEGINprocess(NUM)BEGINCASE NUM IS WHEN 0000=LEDLEDLEDLEDLEDLEDLEDLEDLEDLEDNULL;END CASE;END PROCESS;END ARCHITECTURE ART; 以上就是这个系统的所有模块,下面是对每一个模块的编译、仿真与调试。 聂敏 基于 VHDL 数字时钟的设计与实现 第 17 页 共 24

43、 页 4 4 系统仿真系统仿真4.1 秒计数模块仿真(秒计数模块仿真(SECOND.SCFSECOND.SCF) 秒计数模块仿真图如图 4.1 所示。(1) 从时序仿真图中可以清楚的看到在秒输出(MOUT)由 59 变成 00 时,产生一个高电平的进位由分计数(ENMIN)输出。(2) 在分设置信号(SETMIN)高电平覆盖的区域内,系统时钟信号(CLK)经历了一个高电平和两个低电平,以及两个下降沿和一个上升沿。通过观察可以发现在分计数信号(ENMIN)出现的高电平是由系统时钟信号(CLK)的上升沿所激发的,这与程序中设计要求一致。(3) 在系统复位信号(RESET)低电平(有效电平)的作用下

44、,秒计数信号清零,并且两者关系为异步关系。4.2 分计数模块仿真(分计数模块仿真(MINUTE.SCFMINUTE.SCF) 分计数模块仿真图如图 4.2 所示。(1) 与秒计数模块相同,分计数模块中也有进位。进位信号是时计数时钟信号(ENHOUR)(2) 系统复位的功能与秒计数相同,不再赘述。(1)(2)(3)(1)(2)(3)图 4.2 分计数模块时序仿真图 4.1 秒计数模块时序仿真 聂敏 基于 VHDL 数字时钟的设计与实现 第 18 页 共 24 页 (3) 此模块同样具有调节信号,是由时设置信号(SETHOUR)以及时设置时钟信号(DIPS)共同作用的。同秒计数类似,此调节的信号也

45、是有脉冲信号的上升沿所产生。不同的是时设置信号(SETHOUR)在此仅仅是作为一个使能出现的,当时设置信号(SETHOUR)满足高电平时,DIPS 存在上升沿,ENHOUR 便会出现高电平。DIPS 可以直接接脉冲信号,也可以接在复位开关上进行调节。4.3 时计数模块仿真(时计数模块仿真(HOUR.SCFHOUR.SCF) 时计数模块仿真图如图 4.3 所示。 与分、秒具有相同的系统复位信号,时计数输出信号(HOUT)为 24 进制。4.4 时间设置模块仿真(时间设置模块仿真(SET.SCFSET.SCF) 时间设置模块仿真图如图 4.4 所示,图 4.4 中各输入输出信号的功能介绍:SETC

46、LK-该模块的时钟信号,用于激励某些信号(包含位控制信号,显示信号) 。RESET-系统复位信号。SEC3.0秒的低四位,表示秒的个位;SEC6.4秒的高三位,表示秒的十位。MIN3.0分的低四位,表示分的个位;MIN6.4分的高三位,表示分的十位。HOUR3.0时的低四位,表示时的个位;HOUR5.4时的高两位,表示时的十位。DP-小数点的控制位,高电平有效。XSOUT-显示数据的输出。 SEL-位选择。COUNT-该模块的计数器是 6 进制。 (1)(2)(2)(3)(4)图 4.3 时计数模块时序仿真 聂敏 基于 VHDL 数字时钟的设计与实现 第 19 页 共 24 页 (1) 如前面

47、所有模块所描述的一样,RESET 为系统的复位信号。(2) 在 SETCLK 信号的上升沿激励下,将时间由秒到时钟,从低到高的设置排列下来后为“932171” ,当 SETCLK 出现上升沿时,每一个周期发送一个数字。当发送数字到第六个周期时,全部一组数据便全部发送完毕。(3) 在 SETCLK 信号的上升沿激励下,还有另外一个变化量,那就是位选择输出,用于控制数据发送给的对象,其实质就是一个 6 进制的计数器。(4) 小数点的控制输出,用于控制小数点的有效,起作用是用于分隔时、分、秒的显示,方便查看。对应于数码管的位置图以及该模块时序图中的 SEL 位选择信号,可以观察到,在每组数据的输出中

48、,数码管 2、4 的小数点总是亮的,也就是说,DP 控制字的功能是正确的。(5) 在第二条中,说到数据的发送与接受,现在对应 SEL 位选择的输出,可以验证一下,是否每组发出的数据都能够被完整的接受,并且显示出来。在 SEL=0的时候,对应的XSOUT 是 9,而当 SEL 依次等于 2、3、4、5 时,XSOUT 都对应为 3、2、1、7、1,每一位都是从秒的个位到小时的十位分离后的,对应结果和预计的理论结果是完全相同的,并且中间也没有误差。4.5 译码模块仿真(DELED.SCF) 译码模块仿真图如图 4.5 所示。此模块的功能正确性可参考表格译码输出和十进制对应关系,进行验证。4.6 模块整合模块整合将各模块编译完成后,将会在运行目录下生成一个.sym 的文件,这个文件就是图元文件,在图形编辑器里面使用它,可以轻松完成实验的内容。编译后进行时序仿真,仿真后的时序图如下图 4.6。图 4.5 译码模块仿真图 4.4 时间设置模块时序仿真 聂敏 基于 VHDL 数字时钟的设计与实现 第 20 页 共 24 页 图 4.6 是没有加入 SETCLK 时钟信号时的时序图,通过此图可以方便的观察并验证系统的功能实现状况。(1) 分调节的使能信号的实现情况:在 SETMIN

温馨提示

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

评论

0/150

提交评论