EDA课程设计报告基于VHDL语言的数字电子钟实现

上传人:痛*** 文档编号:41317823 上传时间:2021-11-19 格式:DOC 页数:27 大小:616.52KB
返回 下载 相关 举报
EDA课程设计报告基于VHDL语言的数字电子钟实现_第1页
第1页 / 共27页
EDA课程设计报告基于VHDL语言的数字电子钟实现_第2页
第2页 / 共27页
EDA课程设计报告基于VHDL语言的数字电子钟实现_第3页
第3页 / 共27页
点击查看更多>>
资源描述
基于 VHDL 语言的数字电子钟实现 第1页 共 26 页 目目 录录1 引 言.41.1 EDA 概述.41.2 VHDL 语言概述.51.3 MAX+PLUS II 概述.62 数字电子钟设计.92.1 设计方案.92.2 设计思路.92.3 模块设计.103 数字电子钟的仿真.153.1 六进制计数器的仿真.153.2 十进制计数器的仿真.163.324 进制计数器的仿真.173.4 显示模块的仿真.183.5 顶层模块的仿真.184 小 结.19参考文献.20附录:设计源程序清单.21 基于 VHDL 语言的数字电子钟实现 第2页 共 26 页 基于基于 VHDL 的数字电子钟设计的数字电子钟设计 学生姓名:学生姓名: 指导老师:指导老师: 摘摘 要要 随着EDA技术的发展和应用领域的扩大与深入, EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益突出。EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言VHDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑优化和仿真测试,直至实现既定的电子线路系统功能。本文介绍了基于VHDL硬件描述语言设计的多功能数字时钟的思路和技巧。在MAX+Plus II开发环境中编译和仿真了所设计的程序,并逐一调试验证程序的运行状况。仿真和验证的结果表明,该设计方法切实可行,该数字时钟具有一定的实际应用性。关键词关键词 数字电子钟;仿真调试;VHDL;MAX+Plus II 基于 VHDL 语言的数字电子钟实现 第3页 共 26 页 Design of digital electronic clock based on VHDLStudent Name: Chen Ben Teacher: Chen YuantaoAbstract With the development of EDA technology and expansion and deepen of application, EDA technology has become more and more important in electronic information, communications, automatic control and computer app lications. EDA technology depends on powerful computers, complete logic optimization and simulation tests of design documents by means of making hardware description language VHDL as the system logic description automatically in EDA tools software platform, until it has achieved the function of established electronic circuits system. In this paper, we have introduced ideas and crafts manship of multi-function digital clock design based on VHDL hardware description language. Compile and simulate designed procedures in MAX+Plus II development environment and debug and verify each ofthe operation of program. Simulation and verify results show that this design is workable and this digital clock is practical.Key words digital electronic clock; emulator debugger; VHDL; MAX+Plus II 基于 VHDL 语言的数字电子钟实现 第4页 共 26 页 1 引引 言言当今社会是数字化的社会,也是数字集成电路广泛应用的社会,数字电路本身在不断地进行更新换代。它由早期的电子管、晶体管、小中规模集成电路发展到超大规模集成电路(VLSIC1)以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望 ASIC 的设计周期尽可能的短,最好是在实验室里就能设计出合适的 ASIC 芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA2)和复杂可编程逻辑器件(CPLD)。比较典型的就是 Xilinx 公司的 FPGA器件系列和 Altera 公司的 CPLD 器件系列,它们开发较早,占用较大的 PLD 市场。目前,Altera 系列产品在我国使用较多。1.1 EDA 概述概述20 世纪 90 年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如 CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA 技术的迅速发展。EDA 技术就是以计算机为工具,设计者在 EDA 软件平台上,用硬件描述语言HDL 完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA 技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 利用 EDA 工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出 IC版图或 PCB 版图的整个过程的计算机上自动处理完成。现在对 EDA 的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有 EDA 的应用。目前 EDA 技术已在各大公 基于 VHDL 语言的数字电子钟实现 第5页 共 26 页 司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到 EDA 技术。1.2 VHDL 语言概述语言概述硬件描述语言是 EDA 技术的重要组成部分,VHDL3 是作为电子设计主流硬件描述语言,VHDL(Very High Speed Integrated Circuit Hardware Description Language)于 1983 年由美国国防部发起创建,由 IEEE 进一步发展并在 1987 年作为 IEEE 标准10760 发布。因此,VHDL 成为硬件描述语言的业界标准之一。VHDL 作为 IEEE 的工业标准硬件描述语言,得到众多 EDA 公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL 语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性,使用 VHDL 语言,可以就系统的总体要求出发,自上而下地将设计内容细化,最后完成系统硬件的整体设计。一个完整的 VHDL 程序包括以下几个基本组成部分:实体(Entity) ,结构体(Architecture) ,程序包(Package) ,库(Library) 。其中,实体是一个 VHDL 程序的基本单元,由实体说明和结构体两部分组成,实体说明用于描述设计系统的外部接口信号;结构体用于描述系统的行为,系统数据的流程或系统组织结构形式。程序包存放各设计模块能共享的数据类型,常数,子程序等。库用于存放已编译的实体,机构体,程序包及配置。VHDL 语言的编译环境有不同的版本,我们应用的是 Altera 公司的 Maxplus 软件,它的操作顺序如下:使用 TEXTEDITOR 编写 VHDL 程序使用 COMPILER 编译VHDL 程序;使用 WAVE2FORMEDITOR,SIMULAROT 仿真实验;使用TIMINGANALTZER 进行芯片的时序分析;用 FLOORPLANEDITOR 锁定芯片管脚位置;使用 PROGRAMMER 将编译好的 VHDL 程序下载到芯片中。VHDL 进行工程设计的优点是显而易见的。1与其他的硬件描述语言相比,VHDL 具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。2VHDL 丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。3VHDL 语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效、高速地完成必须有多人甚至多个代发组共同并行工作才能实现。 基于 VHDL 语言的数字电子钟实现 第6页 共 26 页 4对于用 VHDL 完成的一个确定的设计,可以利用 EDA 工具进行逻辑综合和优化,并自动的将 VHDL 描述设计转变成门级网表。5VHDL 对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。6用 VHDL 语言编写的源程序便于文档管理,用源代码描述来进行复杂控制逻辑的设计,既灵活方便,又便于设计结果的交流、保存和重用。综上所述,VHDL 语言的极强的行为描述能力和丰富的仿真语句及库函数,决定了它具有支持大规模设计的分析和已有设计的再利用功能 5 和功能 6,用 VHDL 完成一个确定的设计,可以利用 EDA 工具进行逻辑综合和优化,并自动把 VHDL 描述设计转变成门级网表。这种方式突破了门级设计的瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。1.3 Max+Plus II 概述概述Max+Plus II4是美国 Altera 公司开发的软件,它具有操作系统的程序界面,采用全菜单操作和鼠标操作方式,是一个完全集成化,易学易用的可编程逻辑设计环境。它提供了功能强大,直观便捷和操作灵活的原理图输入设计功能,同时还配备了适用于各种需要的元件库,其中包含基本逻辑元件库(如与非门、反向器、触发器等) ,宏功能元件(包含了几乎所有 74 系列的器件)以及功能强大、性能良好的类似于核的兆功能块库,但更为重要的是它提供了使用方便,精度良好的时序仿真器,能够对系统中任一元件的功能进行精确的时序仿真,精度达 0.1ns,非常准确。Max+Plus II 开发系统是一个完全集成化、易学易用的可编程逻辑器件设计和开发系统,它提供了一种真正与结构无关的可编程逻辑设计环境。它所提供的灵活性和高效性是无可比拟的,其丰富的图形界面,辅之以完整的、可即时访问的在线文档,使设计人员能够轻松、愉快地掌握和使用 Max+Plus II 软件。Max+Plus II 支持灵活多样的输入方式:原理图输入、硬件描述语言输入、波形输入,以及层次设计输入。Max+Plus II 的设计输入、处理和校验功能全部集成在统一的开发环境下,这样可以加快动态调试进程。它提供丰富的库单元供设计者使用,包括 74 系列的全部器件、多种特殊的逻辑宏功能(macro-function)和参数化功能模块(LPM: Library of Parameterized Modules) ,但更为重要的是 Max+Plus II 还提供了原理图输入多层次设计功能,使得用户能设计更大规模的电路系统,以及使用方便、精度良好的时序仿真器。与传统的数字电路实验相比,Max+Plus II 提供灵活多样的层次化输入设计功能,具有 基于 VHDL 语言的数字电子钟实现 第7页 共 26 页 显著的优势:1能进行任意层次的数字系统设计。传统的数字电路实验只能完成单一层次的设计,使设计者无法了解和实现多层次的硬件数字系统设计;2对系统中的任一层次或任一元件的功能进行精确的时序仿真,精度达 0.1ns,因此能发现对系统可能产生不良影响的竞争冒险现象;3通过时序仿真,能迅速定位电路系统的错误所在,并随时纠正;4能对设计方案进行随时更改,并储存设计过程中所有的电路和测试文件入档;5通过编译和下载,能在 FPGA 或 CPLD 上对设计项目随时进行硬件测试验证;6如果使用 FPGA 和配置编程方式,将不会有器件损坏和损耗问题;7符合现代电子设计技术规范。传统的数字电路实验利用手工连线的方法完成元件连接,容易对学习者产生误导,以为只要将元件间的引脚用引线按电路图连上即可,而不必顾及引线长短,粗细弯曲方式,可能产生的分布电感和电容效应,以及电磁兼容性等等十分重要的问题。Max+Plus II 还提供设计校验的仿真器,其中包括功能仿真和时序仿真。仿真器的灵活性很强电路设计完成后,需要验证电路设计的逻辑功能是否正确。这是一项简单的逻辑检查,可采用功能仿真,这对于初步的逻辑功能检测非常方便。功能检查完成后,可进行时序仿真。Max+Plus II 的时序分析程序可以计算点到点的器件延时,确定器件引脚上的建立时间和保持时间要求,还可计算最高时钟频率。用 Max+Plus II 软件进行逻辑设计的步骤包括:1根据所选课题的任务和设计指标要求,确定总体设计方案,画出总体方案的系统框图(亦称预设计阶段)2进行底层单元电路分析及输入设计、编译、仿真;3利用已编译正确的底层单元电路模块,画出顶层电路的原理图 ,进行编译调试和仿真测试;4撰写设计报告。Max+Plus II 的设计流程可以用如下图 1.1 给出。 基于 VHDL 语言的数字电子钟实现 第8页 共 26 页 图形成VHDL 编辑器编译网表提取数据库建立逻辑综合逻辑分割匹配延时网表提取编辑文件汇编编辑器图图 1.1 Max+Plus II 设计流程设计流程从图 1.1 可清晰了解到 Max+Plus II 提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。他包括设计输入编辑、编译网表提取、数据库建立、逻辑综合、逻辑分割、适配、延时网表提取、编辑文件汇编以及编程下载 9 个步骤。 基于 VHDL 语言的数字电子钟实现 第9页 共 26 页 2 数字电子钟设计数字电子钟设计本设计采用自顶向下的设计方法5,将数字电子时钟分11个子模块和1个顶层模块。子模块包括2个六进制计数器,2个十进制计数器,1个24进制计数器和6个LED七段数码显示模块。然后将各个子模块再细分为更小的功能块,直到最后能用 VHDL语言进行描述为止。当各个模块都描述完成并仿真确认无误后,再采用元件例化,将各个元件一层一层的例化连接起来,直到最后完成系统设计。秒钟和分钟的高位只能计数到5,低位可以计数到9,如59秒,59分,而小时最大计数到23。时、分、秒的计时结果采用6个数码管动态显示。2.1设计方案设计方案基于可编程逻辑器件 CPLD/FPGA 的芯片,使用硬件描述语言(VHDL)设计一个数字电子钟芯片5,并进行计算机仿真和编程下载。要求该数字电子钟芯片能够实现如下功能:1计数功能:完成 00 时 00 分 00 秒到 23 时 59 分 59 秒的计时功能。2清零功能:到 23 时 59 分 59 秒时电路自动清零,并设有一个手动清零开关,通过它可以对电路实现随时的手动的清零。3定时功能:能够随意设定,精确到秒,由开关调节设定需要设定的时刻。4动态显示功能:能够动态显示电子中的时刻数。2.2 设计思路设计思路根据该数字电子钟的功能要求,现划分为以下 5 个模块:1秒计数模块2分计数模块3时计数模块4显示模块5顶层模块在计数模块中,程序中的控制信号表示如下:clk 是脉冲控制输入信号。reset 是清零输入信号,低电平有效。 基于 VHDL 语言的数字电子钟实现 第10页 共 26 页 2.3 模块设计模块设计秒计数模块的功能是从 00 计数到 59,为六十进制,所以可以由 1 个六进制计数器和 1 个十进制计数器组成 1 个六十进制的计数器。六进制计数器设计图如图 2.1 所示。图图 2.1 六进制计数器设计图六进制计数器设计图其中 RESET 是六进制计数器的清零输入信号,低电平有效,CLK 是脉冲控制输入信号。DIN2.0是秒计数模块的十位输入信号,用来调整秒的十位的数值。DOUT2.0是秒计数模块的十位输出信号。C 为秒计数器的进位。十进制计数器设计图如图 2.2 所示。图图 2.2 十进制计数器设计图十进制计数器设计图其中 RESET 是十进制计数器的清零输入信号,低电平有效,CLK 是脉冲控制输入信号。DIN3.0是秒计数模块的个位输入信号,用来调整秒的个位的数值。DOUT3.0是秒计数模块的个位输出信号。C 为秒计数器的个位的进位。秒计数模块的原理图如图 2.3 所示。图图 2.3 秒计数模块原理图秒计数模块原理图 基于 VHDL 语言的数字电子钟实现 第11页 共 26 页 分计数模块的功能同样是从 00 计数到 59,所以分计数模块的构成和秒计数模块的构成一样。同样由 1 个六进制计数器和 1 个十进制计数器组成。设计图同秒计数模块。原理图如图 2.4 所示。其中需将秒的进位输出信号接到分计数模块的个位的时钟信号上。图图 2.4 分计数模块原理图分计数模块原理图时计数模块的功能是从 00 计数到 23,为 24 进制。所以该模块只需 1 个 24 进制计数器构成。24 进制计数器设计图如图 2.5 所示。其中需将分的进位输出信号接到时计数模块的时钟信号上。图图 2.5 24 进制计数器设计图进制计数器设计图其中 RESET 是 24 进制计数器的清零输入信号,低电平有效,CLK 是脉冲控制输入信号。DIN5.0是秒计数模块的输入信号,用来调整小时的数值。DOUT5.0是时计数模块的输出信号。时计数模块原理图如图 2.6 所示。 基于 VHDL 语言的数字电子钟实现 第12页 共 26 页 图图 2.6 时计数模块原理图时计数模块原理图显示模块通过译码,将秒、分、时的高低位数字分别译成LED七段数码管上对应的高低电平,然后输出七段值。7段数码显示器由7个显示码管组成,4个输入信号d0,d1,d2,d3来表示0000到1111, 即表示十六进制中的0到F;同时它有7个输出信号,分别用a,b,c,d,e,f,g来表示,决定可发光二极管的状态。图2.7表示的是七段数码管的7个输出信号a,b,c,d,e,f,g与可发光二极管的对应关系。图图 2.7 七段数码管输入输出示意图七段数码管输入输出示意图若该数码管为共阳数码管,当某位为0时,表示这位所在的数码管发光;如为1,则表示不发光;共阴数码管则正好相反。从7段数码显示器的原理可以知道,7段数码显示器用4个输入信号对应16个输出信号,并且一个输入信号只能对应一个唯一的输出。从这点出发,很容易想到前面所学的译码器电路,事实上,7段数码显示器的显示就是调用了一个4-16线译码器。本设计采用的是共阳数码管,共阳数码管的真值表如图2.8所示。 基于 VHDL 语言的数字电子钟实现 第13页 共 26 页 图图 2.8 七段共阳极数码管真值表七段共阳极数码管真值表显示模块设计图如图 2.9 所示。图图 2.9 显示模块设计图显示模块设计图其中DIN3.0是数字电子钟的时、分、秒的个位或者十位输入信号,DOUT6.0是显示模块的输出信号。显示模块原理图如图 2.10 所示。图图 2.10 显示模块原理图显示模块原理图各功能子模块设计完成后,再设计顶层模块,它主要是通过元件声明和元件例化语句对各子模块进行调用来完成的。顶层模块设计图如图2.11所示。 基于 VHDL 语言的数字电子钟实现 第14页 共 26 页 图图 2.11 顶层模块设计图顶层模块设计图其中 RESET 是顶层模块的清零输入信号,低电平有效,CLK 是脉冲控制输入信号。DINS6.0是顶层模块的秒输入信号,用来调整秒的数值。DINM6.0是顶层模块的分输入信号,用来调整分的数值。DINH5.0是顶层模块的时输入信号,用来调整小时的数值。输出信号为时、分、秒的个位和十位的输出,将此输出分别接到 6 个七位LED 数码管上便可显示。顶层模块原理图如图 2.12 所示。图图 2.12 顶层模块原理图顶层模块原理图 基于 VHDL 语言的数字电子钟实现 第15页 共 26 页 3 数字电子钟的仿真数字电子钟的仿真3.1 6 进制计数器的仿真进制计数器的仿真将程序使用 Max+Plus II 进行运行并仿真,得到 6 进制计数器的计数状态仿真图如图 3.1 所示。图图 3.1 6 进制计数器计数状态仿真图进制计数器计数状态仿真图当输入信号 reset 为 1 时,在时钟信号的上升沿来临时,计数器加 1,加到 5 时,在下一个时钟信号的上升沿来临时,计数器清零,进位信号变为高电平,如此反复。当输入信号 reset 为 0,且 din 为 0 时,得到 6 进制计数器的清零状态,如图 3.2 所示。图图 3.2 6 进制计数器清零状态仿真图进制计数器清零状态仿真图当输入信号 reset 为 0,且 din 不为 0 时,得到 6 进制计数器的置数状态,即将 din的值赋给 dout,如图 3.3 所示。图图 3.3 6 进制计数器置数状态仿真图进制计数器置数状态仿真图 基于 VHDL 语言的数字电子钟实现 第16页 共 26 页 3.2 10 进制计数器的仿真进制计数器的仿真将程序使用 Max+Plus II 进行运行并仿真,得到 10 进制计数器计数状态仿真图如图 3.4 所示。图图 3.4 10 进制计数器计数状态仿真图进制计数器计数状态仿真图当输入信号 reset 为 1 时,在时钟信号的上升沿来临时,计数器加 1,加到 9 时,在下一个时钟信号的上升沿来临时,计数器清零,进位信号变为高电平,如此反复。当输入信号 reset 为 0,且 din 为 0 时,得到 10 进制计数器的清零状态,如图 3.5所示。图图 3.5 10 进制计数器清零状态仿真图进制计数器清零状态仿真图当输入信号 reset 为 0,且 din 不为 0 时,得到 10 进制计数器的置数状态,即将din 的值赋给 dout,如图 3.6 所示。图图 3.6 10 进制计数器置数状态仿真图进制计数器置数状态仿真图3.3 24 进制计数器的仿真进制计数器的仿真将程序使用 Max+Plus II 进行运行并仿真,得到 24 进制计数状态的仿真图如图 3.7 基于 VHDL 语言的数字电子钟实现 第17页 共 26 页 所示。图图 3.7 24 进制计数状态仿真图进制计数状态仿真图当输入信号 reset 为 1 时,在时钟信号的上升沿来临时,计数器加 1,加到 23 时,在下一个时钟信号的上升沿来临时,计数器清零,如此反复。当输入信号 reset 为 0,且 din 为 0 时,得到 24 进制计数器的清零状态,如图 3.8所示。图图 3.8 24 进制清零状态仿真图进制清零状态仿真图当输入信号 reset 为 0,且 din 不为 0 时,得到 24 进制计数器的置数状态,即将din 的值赋给 dout,如图 3.9 所示。图图 3.9 24 进制置数状态仿真图进制置数状态仿真图3.4 显示模块的仿真显示模块的仿真将程序使用 Max+Plus II 进行运行并仿真,得到显示模块仿真图如图 3.10 所示。图图 3.10 显示模块仿真图显示模块仿真图 基于 VHDL 语言的数字电子钟实现 第18页 共 26 页 此模块是将 4 为二进制输入信号转化成对应的七段数码管的 7 位二进制输出信号。3.5 顶层模块的仿真顶层模块的仿真将程序使用 Max+Plus II 进行运行并仿真,得到顶层模块仿真图如图 3.11 所示。图图 3.11 顶层模块仿真图顶层模块仿真图此模块是通过元件声明和元件例化语句对各子模块进行调用,同时将时、分、秒的个位和十位都转换成 4 位二进制数,然后将这六组数据传给显示模块。顶层模块的输出的数据是七段数码管的 7 位二进制输出信号。 基于 VHDL 语言的数字电子钟实现 第19页 共 26 页 4 小小 结结本课题要求基于可编程逻辑器件,使用硬件描述语言 VHDL 编写一个数字电子钟芯片,并用 Max+Plus II 软件进行仿真。根据自己对数字电子钟的理解我设计了四大功能:一是计数功能,二是清零功能,三是定时功能,四是动态显示功能。由此必需设计出五个大的模块:一是秒计数模块,此模块是由 1 个 6 进制计数器和 1 个 10 进制计数器组成 1 个 60 进制计数器;二是分计数模块,此模块也是是由 1 个 6 进制计数器和1 个 10 进制计数器组成 1 个 60 进制计数器;三是时计数模块,此模块由 1 个 24 进制计数器构成;四是显示模块,主要功能是把输入的 4 位二进制信号转换为对应的七段数码管的 7 位二进制信号。五是顶层模块,此模块是通过元件声明和元件例化语句对各子模块进行调用,将其余模块整合成一块芯片,避免的繁杂的连线。在设计刚开始,我对 Max+Plus II 很陌生,所以我花了不少时间来熟悉该软件的使用方法。我一度比别的同学落下不少,所以回到宿舍后我仔细研究了该软件的使用,绘图方法,连接快捷键。这样软件的使用就不是大问题了,也使得我能够在最后的几个功能上赶上来,很好的完成数字电子钟的设计。对于一些提高的要求,我们也可以通过学过的数电知识进行分析设计,所以整个实验过程不但是对我们所学数电知识的一个回顾,更是对数电知识的应用。通过本学期课程设计的学习,我从中学习到了很多东西,对可编程逻辑器件,VHDL 语言,Max+Plus II 软件有了一定的了解,尤其是用 VHDL 语言编程和仿真。在本次设计中最大的收获是在不断地发现问题,分析问题,解决问题的过程中培养了自己的科研能力,为今后的学习工作做了一个良好的铺垫。EDA 软件的应用简化了像通信电路实习那样插线的繁琐,使我们的时间多花在实验的原理上,基本的东西由软件来完成,这样的实验不但可以少花时间,也使得我们了解了现在做一些数字系统的基本流程。受益匪浅。 基于 VHDL 语言的数字电子钟实现 第20页 共 26 页 参考文献参考文献1王道宪VHDL 电路设计技术M北京:国防工业出版社 2004.12刘瑞VHDL 语言与 FPGA 设计M北京:机械工业出版社 2004.43王振红VHDL 数字电路设计与应用实践教程M 北京:机械工业出版社 20044潘松,王国栋VHDL 实用教程M 西安:电子科技大学出版社 2000.35王毓银数字电路逻辑设计M北京:高等教育出版社,1999.96王道宪,贺名臣,刘伟VHDL 电路设计技术M北京:国防工业出版社,2004.1 基于 VHDL 语言的数字电子钟实现 第21页 共 26 页 附录:设计源程序清单/ 程序名称:基于 VHDL 语言的数字电子钟实现/ 程序作者: / 最后修改日期:2010-12-29六进制计数器的程序library IEEE; -库说明use IEEE.STD_LOGIC_1164.ALL; -调用库文件use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity counter6 isPort(clk:in std_logic;reset:in std_logic;din:in std_logic_vector(2 downto 0);dout:out std_logic_vector(2 downto 0);c:out std_logic);end counter6;architecture Behavioral of counter6 issignal count:std_logic_vector(2 downto 0);begindout=count;process(clk, reset,din)beginif reset=0thencount=din;c=0;elsif rising_edge(clk) thenif count=101 thencount=000;c=1;else 基于 VHDL 语言的数字电子钟实现 第22页 共 26 页 count=count+1;c=0;end if;end if;end process;end Behavioral;十进制计数器的程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity counter10 isPort(clk:in std_logic;reset:in std_logic;din:in std_logic_vector(3 downto 0);dout:out std_logic_vector(3 downto 0);c:out std_logic) ;end counter10;architecture Behavioral of counter10 issignal count:std_logic_vector(3 downto 0);begindout=count;process(clk,reset,din)beginif reset=0 thencount=din;c=0;elsif rising_edge(clk) thenif count=1001 thencount=0000; 基于 VHDL 语言的数字电子钟实现 第23页 共 26 页 c=1;elsecount=count+1;c=0;end if;end if;end process;end Behavioral;24进制计数器的程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity counter24 isPort(clk:in std_logic;reset:in std_logic;din:in std_logic_vector(5 downto 0);dout:out std_logic_vector(5 downto 0);end counter24;architecture Behavioral of counter24 issignal count:std_logic_vector(5 downto 0);begindout=count;process(clk,reset,din)beginif reset=0 thencount=din;elsif rising_edge(clk) thenif (count(3 downto 0)=3 and count(5 downto 4)=2) or count(3 downto 0)=9 thencount(3 downto 0)=0000; 基于 VHDL 语言的数字电子钟实现 第24页 共 26 页 if count(5 downto 4)=2 thencount(5 downto 4)=00;else count(5 downto 4)= count(5 downto 4)+1;end if;else count(3 downto 0) dout dout dout dout dout dout dout dout dout dout dout = 1111111;end case;end process;end Behavioral;顶层模块的程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity clock isPort(clk,reset:in std_logic;dins:in std_logic_vector(6 downto 0); dinm:in std_logic_vector(6 downto 0); dinh:in std_logic_vector(5 downto 0); secondl:out std_logic_vector(6 downto 0); secondh:out std_logic_vector(6 downto 0); minutel:out std_logic_vector(6 downto 0); minuteh:out std_logic_vector(6 downto 0); hourl:out std_logic_vector(6 downto 0); hourh:out std_logic_vector(6 downto 0);end clock;architecture Behavioral of clock iscomponent counter10 isPort(clk:in std_logic;reset:in std_logic;din:in std_logic_vector(3 downto 0);dout:out std_logic_vector(3 downto 0); 基于 VHDL 语言的数字电子钟实现 第26页 共 26 页 c:out std_logic);end component;component counter6 isPort(clk:in std_logic;reset:in std_logic;din:in std_logic_vector(2 downto 0);dout:out std_logic_vector(2 downto 0);c:out std_logic);end component;component counter24 isPort(clk:in std_logic;reset:in std_logic;din:in std_logic_vector(5 downto 0);dout:out std_logic_vector(5 downto 0);end component;component decoder isPort ( din: in std_logic_vector(3 downto 0 ) ;dout: out std_logic_vector(6 downto 0) ) ;end component;signal c1, c2, c3, c4:std_logic;signal doutsl,doutml:std_logic_vector(3 downto 0);signal doutsh,doutmh:std_logic_vector(2 downto 0);signal douth:std_logic_vector(5 downto 0);signal rdoutsh,rdoutmh:std_logic_vector(3 downto 0);signal rdouth:std_logic_vector(7 downto 0);beginrdoutsh=0&doutsh; rdoutmh=0&doutmh; rdouthclk,reset=reset,din=dins(3 downto 0),dout=doutsl,c=c1);u2:counter6 port map(clk=c1,reset=reset,din=dins(6 downto 4),dout=doutsh,c=c2); 基于 VHDL 语言的数字电子钟实现 第27页 共 26 页 u3:counter10 port map(clk=c2,reset=reset,din=dinm(3 downto 0),dout=doutml,c=c3);u4:counter6 port map(clk =c3,reset=reset,din=dinm(6 downto 4),dout=doutmh,c=c4);u5:counter24 port map(clk=c4,reset=reset,din=dinh,dout=douth);u6:decoder port map(din=doutsl,dout=secondl);u7:decoder port map(din=rdoutsh,dout=secondh);u8:decoder port map(din=doutml,dout=minutel);u9:decoder port map(din=rdoutmh,dout=minuteh);u10:decoder port map(din=rdouth(3 downto 0),dout=hourh); u11:decoder port map(din=rdouth(7 downto 4),dout=hourl); end Behavioral;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


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

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


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