1 / 12
文档名称:

EDA数字秒表的设计.docx

格式:docx   大小:73KB   页数:12页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

EDA数字秒表的设计.docx

上传人:maritime_4 2020/9/28 文件大小:73 KB

下载得到文件列表

EDA数字秒表的设计.docx

文档介绍

文档介绍:目录绪论 1 设计要求 2 总体设计要求 2 基本原理 2 分频器模块 3 计数模块 4 记录模块 6 寄存器模块 7 回放模块 8 选择模块 9 数显模块 1..1 数字秒表的总原理图 1..3 仿真调试 1..4 分频器模块的仿真调试 1...4 计数器模块的仿真调试 1...4 记录模块的仿真调试 1..5 寄存器模块的仿真 1...5 回放模块的仿真调试 1..6 选择模块的仿真调试 1..6 管脚分配 1..6 总结与心得体会 1..7 参考文献 1...8附录:源程序代码 1..91绪论EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE、的概念发展而来的。20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA、的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。 这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了 EDA技术的迅速发展。EDA技术就是以计算机为工具,设计者在 EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。在EDA软件开发方面,目前主要集中在美国。但各国也正在努力开发相应的工具。日本、韩国都有ASIC设计工具,但不对外开放。中国华大集成电路设计中心,也提供IC设计软件,但性能不是很强。相信在不久的将来会有更多更好的设计工具在各地开花并结果。2设计要求①设计一个能测量4名运动员短跑成绩的数字秒表。要求用四位数码管显示时间,。②秒表设置3个开关输入(清零开关1个,记录开关1个,回放开关1个)。按下“记录”开关,则将当前运动员成绩时间暂存,按下回放开关,依次回放各运动员成绩。,数字秒表输入信号有:时钟信号CLK,清零开关CLR,记录开关RST,回放开关RSH;数字秒表的输出信号有:4个数码显示管的显示。数字秒表的主要功能是:计数功能和记录功能数字秒表主要由七个部分构成:一是分频器;二是计数模块;三是记录模块;四是寄存器模块;五是回放模块;六是选择模块;七是数显模块。当清零开关置低位‘0'时,所有显示均清零。分频器模块的作用是将实验板子上50MHZ的信号频率降低到计数所需要的频率100HZ,然后将100HZ的信号作为实验的脉冲输入。计数模块分为十秒、秒、百毫秒、十毫秒四个计数器。当时钟信号来临时,开始计数,十毫秒的进位信号让百毫秒开始计数,百毫秒的进位使秒开始计数,以此类推。记录模块所需要实现的:当按下记录开关的时候,使能开关EN加一,并将当前的显示时间存入到使能所对应的组寄存器中。寄存器模块功能是当记录模块的使能信号来临时,对应的一组寄存器将当前的时间存储起来,到要用的时候再调用。回放模块:当回放开关按下形成一个脉冲的时候,使能开关PN加一,并将对应的寄存器中信号送入数显模块。选择模块:通过使能开关PN来选择所需要的信号送到数显模块,完成计数,记录和回放的功能。数显模块:,所以需要对信号进行500000的分频,设计思想是:在程序内设置具有某范围的变量随时钟计数,前一半输出“0”,后一半输出“1”。实现这个分频器模块的VHDL程序为:LIBRARYIEEE;;;ENTITYfenpinlIS 分频器PORT(CLK_IN:INSTD_LOGIC;CLK_OUT:OUTSTD_LOGIC);ENDENTITYfenpinI;ARCHITECTUREstructureoffenpinlisconstant count0:integer:=500000;begindivide_clk:process(CLK_IN)variablen0:integerrange0to499999;beginIFRISING_EDGE(CLK_IN)THENif