EDA数字秒表的设计.doc
《EDA数字秒表的设计.doc》由会员分享,可在线阅读,更多相关《EDA数字秒表的设计.doc(94页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateEDA数字秒表的设计附件2: 目录 1 绪论12 设计要求23 总体设计要求23.1 基本原理23.2分频器模块33.3 计数模块43.4 记录模块53.5 寄存器模块63.6 回放模块83.7 选择模块93.8 数显模块113.9 数字秒表的总原理图134 仿真调试134.1 分频器模块的仿真调试134.2 计数器模块的仿真调试144.3 记录模块的仿真调试144.
2、4 寄存器模块的仿真144.5 回放模块的仿真调试154.6 选择模块的仿真调试155 管脚分配166 总结与心得体会17参考文献18附录:源程序代码191 绪论 EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。 20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FP
3、GA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。 EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 在EDA软件开发方面
4、,目前主要集中在美国。但各国也正在努力开发相应的工具。日本、韩国都有ASIC设计工具,但不对外开放。中国华大集成电路设计中心,也提供IC设计软件,但性能不是很强。相信在不久的将来会有更多更好的设计工具在各地开花并结果。2 设计要求 设计一个能测量4名运动员短跑成绩的数字秒表。要求用四位数码管显示时间,格式为00.00s。 秒表设置3个开关输入(清零开关1个,记录开关1个,回放开关1个)。按下“记录”开关,则将当前运动员成绩时间暂存,按下回放开关,依次回放各运动员成绩。3 总体设计要求3.1 基本原理根据要求,数字秒表输入信号有:时钟信号CLK,清零开关CLR,记录开关RST,回放开关RSH;数
5、字秒表的输出信号有:4个数码显示管的显示。数字秒表的主要功能是:计数功能和记录功能数字秒表主要由七个部分构成:一是分频器;二是计数模块;三是记录模块;四是寄存器模块;五是回放模块;六是选择模块;七是数显模块。当清零开关置低位0时,所有显示均清零。分频器模块的作用是将实验板子上50MHZ的信号频率降低到计数所需要的频率100HZ,然后将100HZ的信号作为实验的脉冲输入。计数模块分为十秒、秒、百毫秒、十毫秒四个计数器。当时钟信号来临时,开始计数,十毫秒的进位信号让百毫秒开始计数,百毫秒的进位使秒开始计数,以此类推。记录模块所需要实现的:当按下记录开关的时候,使能开关EN加一,并将当前的显示时间存
6、入到使能所对应的组寄存器中。寄存器模块功能是当记录模块的使能信号来临时,对应的一组寄存器将当前的时间存储起来,到要用的时候再调用。回放模块:当回放开关按下形成一个脉冲的时候,使能开关PN加一,并将对应的寄存器中信号送入数显模块。选择模块:通过使能开关PN来选择所需要的信号送到数显模块,完成计数,记录和回放的功能。数显模块:将选择模块的信号经过译码后输出对应的时间显示数显数字秒表计数分频器记录 寄存器 记录开关 回放开关图1.总体设计框图3.2分频器模块分频器模块所实现的具体功能是将50MHZ的信号转化成所需要的100HZ的信号,所以需要对信号进行500000的分频,设计思想是:在程序内设置具有
7、某范围的变量随时钟计数,前一半输出“0”,后一半输出“1”。实现这个分频器模块的VHDL程序为:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fenpinl IS -分频器PORT(CLK_IN:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC);END ENTITY fenpinl;ARCHITECTURE structure of fenpinl is constant count0:integer:=500000;begin divide_clk:pro
8、cess(CLK_IN) variable n0:integer range 0 to 499999;beginIF RISING_EDGE(CLK_IN) THENif(n0(count0/2)then CLK_OUT=0; n0:=n0+1; elsif(n0count0)then CLK_OUT=1; n0:=n0+1; else n0:=0;END if;END IF;END PROCESS divide_clk;END ARCHITECTURE structure;图2.分频器封装图3.3 计数模块 本模块实现的是计数功能,时钟信号是由分频器所得到的100HZ信号,并且本模块由4个十
9、进制的计数模块构成,各级进位作为高级的时钟信号,分别对应十秒,秒,百毫秒和十毫秒,理论可以显示出的最大值为99.99s,并且计数器都是异步清零的。 实现本模块的程序为:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count10 is -十进制计数器port(clk,clr:in std_logic;-时钟/清零信号 dout:buffer std_logic_vector(3 downto 0); co:out std_logic);-输出/进位信号end count10;arc
10、hitecture behave of count10 isbeginprocess(clr,clk)beginif clr=0 then dout=0000; elsif(rising_edge(clk) then if dout=1001 then dout=0000; co=1; else dout=dout+1;co=0;end if; end if; end process;end behave; 图3.十进制计数器模块封装图3.4 记录模块记录模块的功能是实现当有一个记录脉冲过来时,所记录的使能输出加一,第一个使能输出对应的是第一个寄存器模块,往后以此类推。实现的程序:LIBRAR
11、Y IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity RECORD1 is -记录模块port( clr:in std_logic; RST:in STD_LOGIC; en:BUFFER std_logic_vector(2 downto 0); -使能输出end;architecture behave of record1 is begin process(clr,RST) begin if clr=0 then en=000; elsif(RISING_edge(RST) then en=en+
12、1; end if; end process;end;图4.记录模块封装图3.5 寄存器模块 寄存器模块主要是由4组16个D触发器构成的,当使能信号EN来临时,对应EN的一组触发器记录一个时间,并且将每一组的时间信号从输出端口输送到选择模块的输入端口。其中一组寄存器的程序为:LIBRARY IEEE;use ieee.std_logic_1164.all;ENTITY DFF1 IS -4位D触发器PORT( clr:in std_logic; en:in std_logic_vector(2 downto 0);-使能信号 clk:in std_logic; d1:in std_logic_
13、vector(3 downto 0);-输入信号 q1:out std_logic_vector(3 downto 0);END;architecture behave of dff1 is signal Q:std_logic_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLR,CLK,EN) BEGIN IF en=000 THEN IF CLR=0 THEN Q=0000; ELSIF RISING_EDGE(CLK) THEN Q=d1; END IF; END IF; END PROCESS; Q1=Q;END;图5.寄存器模块封装图3.6 回放模块回放模块输入
14、是回放按钮的一个脉冲信号,来一个脉冲,使能信号PN加一,然后将使能信号输入到选择模块中作为判断信号。程序为:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity REPLAY is -回放模块port(clr:in std_logic; rsh:in std_logic; pn:buffer std_logic_vector(2 downto 0); -使能输出end;architecture behave of replay isbeginprocess(clr,rsh)beginif
15、clr=0 then pn=000; ELSif (RISING_EDGE(RSH) then pndout0=din0;dout1=din1;dout2=din2;dout3 dout0=q00;dout1=q01;dout2=q02;dout3 dout0=q10;dout1=q11;dout2=q12;dout3 dout0=q20;dout1=q21;dout2=q22;dout3 dout0=q30;dout1=q31;dout2=q32;dout3 dout0=q30;dout1=q31;dout2=q32;dout3ledledledledledledledledledledle
16、d=1000000; END CASE; END PROCESS; END ARCHITECTURE ART;图8.数显模块封装图3.9 数字秒表的总原理图 图9.数字秒表总原理图 如图10所示,输入有四个,分别是:脉冲信号CLK,清零信号CLR,记录信号RST,回放信号RSH。输出即是四个七段数码管的显示 图10.数字秒表总体封装图 4 仿真调试 4.1 分频器模块的仿真调试 由于需求的仿真是500000分频,软件无法显示完全,所以将500000分频改为4分频进行程序的仿真调试 图11.分频器模块的仿真4.2 计数器模块的仿真调试 计数器由于是十进制,所以每次计数到“1001”时,重新归零,
17、并且产生一个进位信号。 图12.十进制计数器的仿真 4.3 记录模块的仿真调试记录模块的主要输入是记录信号的脉冲,输出信号则是使能EN,每来一个记录信号的脉冲,使能信号EN加一,不同的使能信号EN对应不同的寄存器组。 图13.记录模块的仿真4.4 寄存器模块的仿真 寄存器模块是根据使能信号EN来判断使用哪一组寄存器,图中所示是第一组寄存器模块的仿真图14.寄存器模块的仿真4.5 回放模块的仿真调试回放模块的主要输入是回放信号的脉冲,输出信号则是使能PN,每来一个回放信号的脉冲,使能信号PN加一,不同的使能信号PN对应着选择器输出的不同 图15.回放模块仿真4.6 选择模块的仿真调试选择模块根据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 数字 秒表 设计
限制150内