ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:538.98KB ,
资源ID:15448485      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-15448485.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于EDA的数字秒表的设计.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于EDA的数字秒表的设计.docx

1、基于EDA的数字秒表的设计EDA课程设计报告书课题名称基于EDA的数字秒表的设计姓 名 学 号 院 系 专 业 指导教师 年 月 日 一、设计任务及要求:利用VHDL语言设计基于计算机电路中时钟脉冲原理的数字秒表。该数字秒表能对0秒59分59.99秒范围进行计时,显示最长时间是59分59秒。计时精度达到10ms。设计了复位开关和启停开关。复位开关可以在任何情况下使用,使用以后计时器清零,并做好下一次计时的准备。指导教师签名: 年 月 日 二、指导教师评语:指导教师签名: 年 月 日 三、成绩验收盖章 年 月 日 在科技高度发展的今天,集成电路和计算机应用得到了高速发展。尤其是计算机应用的发展。

2、它在人们日常生活已逐渐崭露头角。大多数电子产品多是由计算机电路组成,如:手机、mp3等。而且将来的不久他们的身影将会更频繁的出现在我们身边。各种家用电器多会实现微电脑技术。电脑各部分在工作时多是一时间为基准的。本文就是基于计算机电路的时钟脉冲信号、状态控制等原理设计出的数字秒表。秒表在很多领域充当一个重要的角色。在各种比赛中对秒表的精确度要求很高,尤其是一些科学实验。他们对时间精确度达到了几纳秒级别。1设计目的本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,对计算机系统中时钟控制系统进一步了解,掌握状态机工作原理,同时了解计算机时钟脉冲是怎么产生和工作的。在掌握所学

3、的计算机组成与结构课程理论知识时。通过对数字秒表的设计,进行理论与实际的结合,提高与计算机有关设计能力,提高分析、解决计算机技术实际问题的能力。通过课程设计深入理解计算机结构与控制实现的技术,达到课程设计的目标。2 课程设计的内容利用VHDL语言设计基于计算机电路中时钟脉冲原理的数字秒表。该数字秒表能对0秒59分59.99秒范围进行计时,显示最长时间是59分59秒。计时精度达到10ms。设计了复位开关和启停开关。复位开关可以在任何情况下使用,使用以后计时器清零,并做好下一次计时的准备。3 EDA、VHDL简介3.1 EDA技术EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化

4、技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言HDL完成的设计文件,自动完成逻辑编译、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。目前EDA主要辅助进行三个方面的设计工作:IC设计、电子电路设计和PCB设计。没有EDA技术的支持,想要完成超大规模集成电路的设计制造是不可想象的;反过来,生产制造技术的不断进步又必将对EDA技术提出新的要求。3.2 硬件描述语言VHDL3.2.1 VHDL的简介VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周

5、期的一种使用范围较小的设计语言 。但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为ANSI/IEEE的标准(IEEE STD 1076-1987)。1993年更进一步修订,变得更加完备,成为ANSI/IEEE的ANSI/IEEE STD 1076-1993标准。目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IE

6、EE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。3.2.2 VHDL语言的特点VHDL的程序结构特点是将一项工程设计,关于用VHDL和原理图输入进行CPLD/FPGA设计的粗略比较:在设计中,如果采用原理图输入的设计方式是比较直观的。你要设计的是什么,你就直接

7、从库中调出来用就行了。这样比较符合人们的习惯。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的。(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构

8、决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。3.2.3 VHDL的设计流程它主要包括以下几个步骤:(1)文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。通常VHDL文件保存为.vhd文件,Verilog文件保存为.v文件。(2)功能仿

9、真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)(3)逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。逻辑综合软件会生成.edf或.edif 的EDA工业标准文件。(4)布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放PLD/FPGA内。(5)时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。(也叫后仿真) 通常以上过程可以都在PLD/FPGA厂家提供的开发工具。(6)器件编程:4 设计过程4.1 设计规划 本系统设计采用自顶

10、向下的设计方案,系统的整体组装设计原理图如图4-1所示,它主要由控制模块、时基分频模块,计时模块和显示模块四部分组成。各模块分别完成计时过程的控制功能、计时功能与显示功能。4.2各模块的原理及其程序本系统设计由控制模块、时基分频模块,计时模块和显示模块四部分组成。各模块实现秒表不同的功能 。图4-2就是整个系统原理图。4.3 控制模块计时模块的作用是针对计时过程进行控制。计时控制模块可用俩个按钮来完成秒表的启动、停止和复位。部分源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTIT

11、Y CTRL IS PORT( CLR,CLK,SP:IN STD_LOGIC; EN :OUT STD_LOGIC);END ;ARCHITECTURE BEHAVE OF CTRL ISCONSTANT S0: STD_LOGIC_VECTOR (1 DOWNTO 0):=00;CONSTANT S1: STD_LOGIC_VECTOR (1 DOWNTO 0):=01;CONSTANT S2: STD_LOGIC_VECTOR (1 DOWNTO 0):=11;CONSTANT S3: STD_LOGIC_VECTOR (1 DOWNTO 0):=10;TYPE STATES IS (S

12、0,S1,S2,S3);SIGNAL CURRENT_STATE,NEXT_STATE:STATES;BEGINCOM:PROCESS(SP,CURRENT_STATE) BEGINCASE CURRENT_STATE ISWHEN S0=EN=0; IF SP=1THEN NEXT_STATE=S1; ELSE NEXT_STATEEN=1; IF SP=1THEN NEXT_STATE=S1; ELSE NEXT_STATEEN=1; IF SP=1THEN NEXT_STATE=S3; ELSE NEXT_STATEEN=0; IF SP=1THEN NEXT_STATE=S3; ELS

13、E NEXT_STATE=S0; END IF;END CASE;END PROCESS;SYNCH:PROCESS(clk)BEGIN IF CLR=1THENCURRENT_STATE =S0;ELSIF CLKEVENT AND CLK=1THENCURRENT_STATE=NEXT_STATE;END IF;END PROCESS;END BEHAVE;4.4 时基分频模块时基分频模块的作用把输入时钟信号变为分频输出信号。源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY

14、 CB10 IS PORT( CLK: IN STD_LOGIC; CO : OUT STD_LOGIC);END CB10;ARCHITECTURE ART OF CB10 IS SIGNAL COUNT:STD_LOGIC_VECTOR (3 DOWNTO 0); BEGINPROCESS(CLK)BEGIN IF RISING_EDGE(CLK)THEN IF COUNT=1001THEN COUNT=0000; CO=1; ELSE COUNT=COUNT+1; CO=0; END IF; END IF; END PROCESS;END ART;4.5 计时模块计时模块执行计时功能,计

15、时方法和计算机一样是对标准时钟脉冲计数。他是由四个十进制计数器和俩个六进制计数器构成,其中毫秒位、十毫秒位、秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。源程序:4.5.1 十进制计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CDU10 IS PORT( CLK:IN STD_LOGIC; CLR,EN:IN STD_LOGIC; CN :OUT STD_LOGIC; COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END CD

16、U10;ARCHITECTURE ART OF CDU10 ISSIGNAL SCOUNT10: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN COUNT10=SCOUNT10;PROCESS (CLK,CLR,EN)BEGIN IF(CLR=1)THENSCOUNT10=0000;CN=0;ELSIF RISING_EDGE(CLK)THENIF(EN=1)THENIF SCOUNT10=1001THENCN=1;SCOUNT10=0000;ELSECN=0;SCOUNT10=SCOUNT10+1;END IF;END IF;END IF;END PROCESS;EN

17、D ART;4.5.2 六进制计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CDU6 IS PORT( CLK,CLR,EN:IN STD_LOGIC; CN :OUT STD_LOGIC; COUNT6:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END CDU6;ARCHITECTURE ART OF CDU6 ISSIGNAL SCOUNT6: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN COUNT6=SCOUNT6;PR

18、OCESS (CLK,CLR,EN)BEGIN IF(CLR=1)THENSCOUNT6=0000;CN=0;ELSIF RISING_EDGE(CLK) THENIF(EN=1)THENIF SCOUNT6=0101THENCN=1;SCOUNT6=0000;ELSECN=0;SCOUNT6=SCOUNT6+1;END IF;END IF;END IF;END PROCESS;END ART;4.5.3 计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT IS POR

19、T( CLK,CLR,EN:IN STD_LOGIC; S_1MS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_100MS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_1S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_10S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_1MIN:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MIN:OUT STD_LOGIC_VECTOR(

20、3 DOWNTO 0); HOUR:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COUNT;ARCHITECTURE ART OF COUNT ISCOMPONENT CDU10PORT( CLK,CLR,EN:IN STD_LOGIC; CN :OUT STD_LOGIC; COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT CDU10;COMPONENT CDU6PORT( CLK,CLR,EN:IN STD_LOGIC; CN :OUT STD_LOGIC; COUNT6:OUT STD_LOGIC_

21、VECTOR(3 DOWNTO 0);END COMPONENT CDU6;SIGNAL A,B,C,D,E,F,G,H:STD_LOGIC;BEGINUL:CDU10 PORT MAP (CLK,CLR,EN,A,S_1MS);U2:CDU10 PORT MAP (A,CLR,EN,B,S_10MS);U3:CDU10 PORT MAP (B,CLR,EN,C,S_100MS);U4:CDU10 PORT MAP (C,CLR,EN,D,S_1S);U5:CDU6 PORT MAP (D,CLR,EN,E,S_10S);U6:CDU10 PORT MAP (E,CLR,EN,F,S_1MIN

22、);U7:CDU6 PORT MAP (F,CLR,EN,G,S_10MIN);U8:CDU10 PORT MAP (G,CLR,EN,H,HOUR);END ART;4.6 显示模块计时显示电路的作用是将计时值在LED数码管上显示出来。计时电路产生的值经过BCD七段译码后,驱动LED数码管。计时显示电路的实现方案采用扫描显示。部分源程序:4.6.1 数据选择器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MULX IS PORT( CLK,CLR,EN:IN STD_LOGIC;

23、 S_1MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_100MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_1S:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_10S:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_1MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S_10MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); HOUR:IN STD_LOGIC_VEC

24、TOR(3 DOWNTO 0); OUTBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END MULX;ARCHITECTURE ART OF MULX ISSIGNAL COUNT :STD_LOGIN_VECTOR(3 DOWNTO 0);BEGINPROCESS (CLK)BEGINIF CLR=1THENCOUNT=1111;ELSIF RISING_EDGE(CLK)THENIF EN =1 THEN COUNT=0000;ELSECOUNTOUTBCD=S_1MS; SEGOUT

25、BCD=S_10MS; SEGOUTBCD=S_100MS; SEGOUTBCD=S_1S; SEGOUTBCD=S_10S; SEGOUTBCD=S_1MIN; SEGOUTBCD=S_10MIN; SEGOUTBCD=S_HUOR; SEGOUTBCD=S_1MS; SEGOUTBCD=S_10MS; SEGOUTBCD=0000; SEG=00000000;END CASE;END IF;END PROCESS;END ART;4.6.2 BCD七段译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNE

26、D.ALL;ENTITY BCD7 IS PORT( BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END BCD7;ARCHITECTURE ART OF BCD7 ISBEGINLED=1111110WHEN BCD =0000 ELSE0110000WHEN BCD =0001 ELSE1101101WHEN BCD =0010 ELSE1111001WHEN BCD =0011 ELSE0110011WHEN BCD =0100 ELSE1011011WHEN BCD =0101 E

27、LSE1011111WHEN BCD =0110 ELSE1110000WHEN BCD =0111 ELSE1111111WHEN BCD =1000 ELSE1111011WHEN BCD =1001 ELSE0000000;END ART;5 系统仿真5.1 时基分频模块的仿真(如图 5-1所示) 分析:CLK为时钟信号的输入 ,CO为分频输出信号。5.2 控制模块的仿真(如图 5-2所示)分析:CLK、CLR和SP为输入信号,EN为输出信号。5.3 计时电路模块的仿真(如图5-3图5-5所示) 5.3.1 十进制计数器的仿真(如图5-3所示)5.3.2 六进制计数器的仿真(如图5-4所

28、示)5.3.3 计数器的仿真(如图5-5所示)分析:clk为时钟脉冲脉冲,s_1ms是毫秒计数值,s_10ms是十毫秒计数器,s_100ms是百毫秒计数器,s_1s是秒计数器,s_10s是十秒计数器,m_1min是分计数器,s_10min是十分计数器,hour是小时计数器。它们均为输入信号。每来两个时钟脉冲,s_1ms加1,当s_1ms满十时,s_10ms加1,依次类推,s_10ms满十的时候,s_100ms加1等等作为输出。5.4 显示电路模块的仿真(如图 5-6图5-7所示)5.4.1 数据选择器的仿真(如图 5-6所示)5.4.2 BCD七段译码器驱动器的仿真(如图 5-7所示)分析:bcd为时钟脉冲输入信号,led是输出信号,如图所示:当输出为“1111110”时候,输入为“0000”;当输出为“0110000”时输入“0001”,当输入为“0010”时输出为“1101101”,当输入为“0011”时输出为“1111001”等等来实现七段译码功能。5.5 数字秒表整个系统的仿真(如图5-8所示)分析:秒表开始从零开始计数,每次增加10ms。工作很正常的进行。6 心得体会开始做设计时总是会犯一些错误,只

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2