秒表的设计与实现.doc

上传人:飞****2 文档编号:51991131 上传时间:2022-10-20 格式:DOC 页数:30 大小:593.50KB
返回 下载 相关 举报
秒表的设计与实现.doc_第1页
第1页 / 共30页
秒表的设计与实现.doc_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《秒表的设计与实现.doc》由会员分享,可在线阅读,更多相关《秒表的设计与实现.doc(30页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、设 计 报 告现代电子技术综合实验课程名称 数字式秒表设计与实现设计题目 刘 曦指导老师 兰 瑞 志学 生 29学 号 目录1 引言41.1课程设计的目的41.2课程设计的内容42 EDA、VHDL简介52.1 EDA技术.52.2硬件描述语言VHDL.52.2.1 VHDL语言的特点.62.2.2 VHDL语言的设计流程.83 设计过程.93.1设计规划93.2原理框图.103.3各模块的功能.103.3.1分频器.103.3.2计数器.113.3.3数据锁存器.113.3.4显示译码电路.113.3.5控制电路.123.3.6按键消抖电路.123.3.7顶层文件.134 硬件电路仿真134

2、.1分频器仿真.134.2模6计数器仿真.144.3模10计数器仿真144.4控制电路仿真.145 实验总结155.1实验结论.155.2心得总结.15致谢16参考文献16附录161引言在科技高度发展的今天,集成电路和计算机应用得到了高速发展,尤其是计算机应用的发展。它在人们日常生活已逐渐崭露头角。大多数电子产品多是由计算机电路组成,如:手机、mp3等。而且将来的不久它们的身影将会更频繁地出现在我们身边。电脑各部分在工作时多是以时间为基准的。本文就是基于计算机电路的时钟脉冲信号、状态控制等原理设计出的数字秒表。秒表在很多领域充当了重要的角色。各种比赛中对秒表的精确度要求很高,尤其是一些科学实验

3、,它们对时间精确度达到了几纳秒级别。1.1课程设计的目的本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,对计算机系统中时钟控制系统进一步了解,掌握状态机工作原理,同时了解计算机时钟脉冲是怎么产生和工作的。在掌握所学的计算机组成与结构课程理论知识时,通过对数字秒表的设计,进行理论与实际的结合,提高与计算机有关的设计能力,提高分析、解决计算机技术实际问题的能力。1.2课程设计的内容秒表的计时范围是0000”00到5959”99。有两个按钮开关start/stop和 split/reset,控制秒表的启动、停止、分段和复位。秒表已经被复位的情况下,按下 start/sto

4、p 键,秒表开始计时。在秒表正常运行的情况下,如果按下 start/stop 则秒表暂停计时;再次按下该键,秒表继续计时。在秒表正常运行下,如果按下 split/reset,显示停止在按键时的时间,但秒表仍然在计时;再次按下该键,秒表恢复正常显示。在秒表暂停计时的情况下,按下 split/reset,秒表复位归零。2 EDA、VHDL简介2.1EDA技术EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言VHDL完成的设计文件,自动完成逻辑编译、逻辑映射和编程下载等工作。目前EDA主要辅助进行三个方面的设计工作:I

5、C设计、电子电路设计和PCB设计。没有EDA技术的支持,想要完成超大规模集成电路的设计制造是不可想象的;反过来,生产制造技术的不断进步又必将对EDA技术提出新的要求。2.2硬件描述语言VHDLVHDL(Very-high-speed Integrated Circuit Hardware Description Language)诞生于1982年。1987年底,VHDL 被IEEE (The Institute of Electrical and Electronics Engineers)和美国国防部确认为标准硬件描述语言。自 IEEE 公布了 VHDL 的标准版本(IEEE-1076)之后

6、,各 EDA 公司相继推出了自己的 VHDL 设计环境,并宣布自己的设计工具可以和 VHDL 接口。此后 VHDL 在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准硬件描述语言。1993 年,IEEE 对 VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展 VHDL 的内容,公布了新版本的 VHDL,即 IEEE 标准的 1076-1993 版本。现在,VHDL 和 VERILOG作为 IEEE 的工业标准硬件描述语言,又得到众多 EDA 公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL和 VERILOG 语言将承担起几乎全部的数字系

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

8、下:1、与其它的硬件描述语言相比,VHDL 具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的 EDA 工具和 VHDL 综合器而言,将基于抽象的行为描述风格的 VHDL程序综合成为具体的 FPGA 和 CPLD 等目标器件的网表文件已不成问题,只是在综合与优化效率上略有差异。2、VHDL 最初是作为一种仿真标准格式出现的,因此 VHDL 既是一种硬件电路描述和设计语言,也是一种标准的网表格式,还是一种仿真语言。其丰富的仿真语句和库函数,使得在任何大系统的设计早期(即尚未完

9、成),就能用于查验设计系统的功能可行性,随时可对设计进行仿真模拟。即在远离门级的高层次上进行模拟,使设计者对整个工程设计的结构和功能的可行性做出决策。3、VHDL 语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能,符合市场所需求的,大规模系统高效、高速的完成必须由多人甚至多个开发组共同并行工作才能实现的特点。VHDL 中设计实体的概念、程序包的概念、设计库的概念为设计的分解和并行工作提供了有力的支持。4、对于用 VHDL 完成的一个确定的设计,可以利用 EDA 工具进行逻辑综合和优化,并自动地把 VHDL 描述设计转变成为门级网表。这种方式突破了门级电路设计的

10、瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。应用 EDA 工具的逻辑优化功能,可以自动地把一个综合后的设计变成一个更高效、更高速的电路系统。反过来,设计者还可以容易地从综合和优化后的电路获得设计信息,返回去更新修改 VHDL 设计描述,使之更为完善。5、VHDL 对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。正因为 VHDL 硬件描述与具体的工艺技术和硬件结构无关,VHDL 设计程序的硬件实现目标器件有广阔的选择范围,其中包括各系列的 CPLD、FPGA 及各种门阵列实现目标。6、由于 VHDL 具有类属描述

11、语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需要改变端口类属参量或函数,就能轻易地改变设计的规模和结构。2.2.2VHDL语言的设计流程1.文本编辑用任何文本编辑器都可以进行,也可以用专用的VHDL编辑环境。通常VHDL文件保存为.vhd文件。2.功能仿真将文件调入VHDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成后,进行时序仿真)3.逻辑综合将源文件调入逻辑综合软件进行综合,即把语言综合成最简单的布尔表达式。逻辑综合软件会生成.edf或.edif的EDA工业标准文件。4.布局布线将.edf文件调入PLD厂家提供的软

12、件中进行布线,即把设计好的逻辑安放PLD/FPGA内。5.时序仿真需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序(也叫后仿真)。通常以上过程都在PLD/FPGA厂家提供的开发工具内。6.器件编程3设计过程3.1设计规划本系统设计采用自顶向下的设计方案,系统的整体组装设计由以下六部分组成:分频器:对晶体振荡器产生的时钟信号进行分频,产生时间基准信号。计数器:对时间基准脉冲进行技术,完成计时功能。数据锁存器:锁存数据,使显示保持锁定。控制器:控制计数器的运行、暂停以及复位;产生锁存器的是能信号。扫描显示的控制电路:包括扫描计数器、3-8译码器和7段译码器;控制8个数码管以扫描方式显示

13、计时结果。按键消抖电路:消除按键输入信号抖动的影响,输出单脉冲。3.2原理框图3.3各模块的功能3.3.1分频器需要两种分频器,分频器一是将晶体振荡器输入的48MHz的时钟信号,利用模48000的计数器分频,输出为1kHz的时钟信号。(因为多位LED显示,一般采取动态扫描方式、分时循环显示,即多个发光管轮流交替点亮。它是利用人眼的滞留现象,只要在1秒内一个发光管亮24次以上,每次点亮时间维持在2ms以上,则人眼感觉不到闪烁);分频器二是输入为1kHz的信号,分频成100Hz的信号,即为百分之一秒,作为计数器输入。3.3.2计数器计数器执行计时功能,计时方法和计算机一样是对标准时钟脉冲计数。需要

14、四个十进制计数器和两个六进制计数器,其中毫秒位、十毫秒位、秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。3.3.3数据锁存器能够实现秒表中要求的面板暂停但是继续计时的功能。3.3.4显示译码电路能够将BCD码转换为LED的七段译码器。注意:实验板上的数码管为共阳LED数码管,即编码时低有效。3.3.5控制电路输入为1kHz的时钟信号,启动停止按键start_stop,复位锁存按键reset_split;输出为控制信号:clear清零;working计数;display锁存并计数。目的是得到主电路的控制信号。具体实现如下:参照状态图编写程序:采用三进程模式编写进程一控制状态转移;进

15、程二引入时钟信号;进程三定义状态输出。3.3.6按键消抖电路按键按下时,FPGA的输入为高电平;松开按键时,FPGA的输入为低电平,但是在按下和松开按键的瞬间会出现抖动现象。(如图中:key_in)按键消抖电路能够消除按键时电平不稳而导致的抖动现象。每按一次键,只输出一个脉冲,其宽度为一个时钟周期。(如图中:key_out)3.3.7顶层文件顶层文件由上述各个模块相连接而成,同时需要进行硬件的管脚分布。4硬件电路仿真4.1分频器仿真4.2模6计数器仿真4.3模10计数器仿真4.4控制电路仿真5实验总结5.1实验结论通过设计,由FPGA板上的key-1,key-2控制秒表,其功能符合要求。并且采

16、用Modesim仿真,测试各程序模块,实验结果与各模块功能相符。5.2心得总结开始做设计时总是会犯一些错误,只有经过不停地改错和不停地编译才得到正确的程序,说明了作为软件编程人员是不能粗心大意的,一个程序的质量的高低与细心程度的高低有着一定的联系。在编程时,我充分使用了结构化的思想,这样程序检查起来也比较方便,调试时也给了我很大方便,只要一个模块一模块的进行调试就可以了,充分体现了结构化编程的优势。通过这次设计和解决设计中遇到的问题,我积累了一定的经验,对我以后从事集成电路设计工作会有一定的帮助。在应用VHDL的过程中,我真正领会到了其并行运行与其他软件顺序执行的差别以及在电路设计上的优越性。

17、用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用Modesim软件进行仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法在数字系统设计中发挥着越来越重要的作用。致谢经过快两个星期的紧张工作,我终于完成了我的设计任务。本次实验设计在老师的悉心教导和严格要求下完成,从知识的讲解到编程的实践再到最后的验收,无不凝聚着老师与我的心血与汗水。在实验设计期间,老师对我进行了耐心的指导与帮助,也使我的设计能更加顺利的完成。在此向老师表示深深的感谢和崇高的敬意,正因为您悉心帮助和支持,我才能很好的掌握和运用编程知识,将以往所学进行实践,并在设计中得以体现。最后,感谢学校给

18、我们开设了此门课程,并给予了我们优越的实验条件,让我们增加了动手能力,也提升了自己的学习能力。参考文献(美)John F.Wakerly.数字设计:原理与实践(原书第四版).北京:机械工业出版社,2007.5附录1.分频器的源程序(1)48MHz to 1kHzlibrary IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned.ALL;entity fenpin48M isport(clk:in std_logic; q:out std_logic);end fenpin48M;architecture Behavioral

19、 of fenpin48M issignal counter:std_logic_vector(15 downto 0);beginprocess(clk)beginif rising_edge(clk) thenif counter=47999 thencounter0);elsecounter=counter+1;end if;end if;q=counter(15);end process;end Behavioral; (2)1kHz to 100Hzlibrary IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned

20、.ALL;entity fenpin1K isport(clk:in std_logic; q:out std_logic);end fenpin1K;architecture Behavioral of fenpin1K issignal counter:std_logic_vector(3 downto 0);beginprocess(clk)beginif rising_edge(clk) thenif counter=9 thencounter=0000;elsecounter=counter+1;end if;end if;q=counter(3);end process;end B

21、ehavioral;2.计数器的源程序(1)模6计数器library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned.ALL;entity m6 is Port ( clk : in STD_LOGIC; rst : in STD_LOGIC; carry_in : in STD_LOGIC; carry_out : out STD_LOGIC; count : out STD_LOGIC_VECTOR (3 downto 0);end m6;architecture Behavioral of m6 issignal

22、c_state,n_state:std_logic_vector(3 downto 0);beginPc0:process(carry_in,c_state)beginif carry_in=1 thenif c_state=5 thenn_state0);elsen_state=c_state+1;end if;elsen_state=c_state;end if;end process;Pc1:process(clk,rst)beginif rst=1 thenc_state=0000;elsif rising_edge(clk) thenc_state=n_state;end if;en

23、d process;count=c_state;carry_out=1 when c_state=0101 and carry_in=1 else 0;end Behavioral;(2)模10计数器library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned.ALL;entity m10 is Port ( clk : in STD_LOGIC; rst : in STD_LOGIC; carry_in : in STD_LOGIC; carry_out : out STD_LOGIC; count : out ST

24、D_LOGIC_VECTOR (3 downto 0);end m10;architecture Behavioral of m10 issignal c_state,n_state:std_logic_vector(3 downto 0);beginPc0:process(carry_in,c_state)beginif carry_in=1 thenif c_state=9 thenn_state0);elsen_state=c_state+1;end if;elsen_state=c_state;end if;end process;Pc1:process(clk,rst)beginif

25、 rst=1 thenc_state=0000;elsif rising_edge(clk) thenc_state=n_state;end if;end process; count=c_state; carry_outclk_100 ,rst =rst ,carry_in =en ,carry_out =jinwei0 ,count =xianshi0 );Inst_m10_b: m10 PORT MAP(clk =clk_100 ,rst =rst ,carry_in =jinwei0 ,carry_out =jinwei1 ,count =xianshi1 );Inst_m10_c:

26、m10 PORT MAP(clk =clk_100 ,rst =rst ,carry_in =jinwei1 ,carry_out =jinwei2 ,count =xianshi2 );Inst_m10_d: m10 PORT MAP(clk =clk_100 ,rst =rst ,carry_in =jinwei3 ,carry_out =jinwei4 ,count =xianshi4 );Inst_m6_a: m6 PORT MAP(clk =clk_100 ,rst =rst ,carry_in =jinwei2 ,carry_out =jinwei3 ,count =xianshi

27、3 );Inst_m6_b: m6 PORT MAP(clk =clk_100 ,rst =rst ,carry_in =jinwei4 ,count =xianshi5 );Inst_fenpin1K: fenpin1K PORT MAP(clk =clk ,q =clk_100 );end Behavioral;3.数据锁存器的源程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity latch isport(c_0,c_00,c_1,c_11,c_2,c_22:in std_logic_vector(3 downto 0); en:in std

28、_logic; c0,c00,c1,c11,c2,c22:out std_logic_vector(3 downto 0);end latch;architecture Behavioral of latch isbeginprocess(en,c_0,c_00,c_1,c_11,c_2,c_22)beginif en=1 thenc0=c_0;c00=c_00;c1=c_1;c11=c_11;c2=c_2;c22=c_22;end if;end process;end Behavioral;4.控制器的源程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;u

29、se IEEE.STD_LOGIC_arith.ALL;use IEEE.STD_LOGIC_unsigned.ALL;entity control isport(clk,q,p:in std_logic; j_clr,j_en,s_en:out std_logic);end control;architecture Behavioral of control issignal n_state:std_logic_vector(2 downto 0);signal state:std_logic_vector(2 downto 0);signal key:std_logic_vector(1

30、downto 0);beginkeyif key=10 thenn_state=011;elsen_statecase key iswhen10=n_staten_staten_stateif key=01 thenn_state=011;elsen_statecase key iswhen10=n_staten_staten_staten_state=state;end case;end process;P1:process(clk)beginif rising_edge(clk) thenstate=n_state;end if;end process;j_clr=state(2);j_e

31、n=state(1);s_en=state(0);end Behavioral;5.扫描显示的控制电路的源程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned.ALL;entity dispaly isport(clk_1k:in std_logic; cnt00,cnt0,cnt1,cnt11,cnt2,cnt22:in std_logic_vector(3 downto 0); y0,y1,y2,y3,y4,y5,y6,y7:out std_logic; seg:out std_logic_vector

32、(6 downto 0);end dispaly;architecture Behavioral of dispaly issignal dig:std_logic_vector(2 downto 0):=000;signal bcd:std_logic_vector(3 downto 0):=1000;signal seg7:std_logic_vector(6 downto 0):=;signal oo8:std_logic_vector(7 downto 0):=;beginP0:process(clk_1k)beginif rising_edge(clk_1k) thenif dig=

33、7 thendig=000;elsedigbcd=cnt0;oo8bcd=cnt00;oo8bcd=1010;oo8bcd=cnt1;oo8bcd=cnt11;oo8bcd=1010;oo8bcd=cnt2;oo8bcd=cnt22;oo8bcd=1010;oo8seg7seg7seg7seg7seg7seg7seg7seg7seg7seg7seg7=;end case;end process;seg=seg7;y0=oo8(7);y1=oo8(6);y2=oo8(5);y3=oo8(4);y4=oo8(3);y5=oo8(2);y6=oo8(1);y7=oo8(0);end Behavior

34、al;6.按键消抖电路的源程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_unsigned.ALL;entity anjianxiaodou isport(clk:in std_logic; key_in:in std_logic; key_out:out std_logic); end anjianxiaodou;architecture Behavioral of anjianxiaodou issignal cnt:std_logic_vector(2 downto 0);signal k1,k2:std_logic;beginP0:process(key_in,clk)beginif key_in =1 thencnt=000;elsif falling_edge(clk) thenif cnt /=7 thencnt=cnt+1;end if;end if;end process;P1:process(clk)beginif falling_edge(clk) thenif cnt/=7 thenk1=0;else

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com