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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于EDA技术的秒表设计.docx

1、基于EDA技术的秒表设计编号:03063076南阳师范学院2007届毕业生毕业论文(设计)题 目: 基于EDA技术的快速计时器设计 完 成 人: 黄朝伟 班 级: 2003-03 学 制: 4 年 专 业: 电子信息与科学技术 指导教师: 张 帅 完成日期: 2007-03-31 目 录摘要 1 绪 论 (1)1.1 EDA技术 (1)1.2 系统设计意义 (2)2 数字快速计时器的设计方案及要求 (2)2.1 系统设计要求 (3)2.2 系统设计方案 (3)3 程序设计及分析 (4)3.1 时基分频模块的VHDL源程序(CB10.VHD) (4)3.2 控制模块的VHDL源程序(CTRL.V

2、HD) (5)3.3 计时模块的VHDL源程序 (6)3.3.1 十进制计数器的VHDL源程序(CDU10.VHD) (6)3.3.2 六进制计数器的VHDL源程序(CDU6.VHD) (7)3.3.3 计时器的VHDL源程序(COUNT.VHD) (8)3.4 显示模块的VHDL源程序 (10)3.4.1 数据选择器的VHDL源程序(MULX.VHD) (10)3.4.2 BCD七段译码驱动器的VHDL源程序(BCD7.VHD) (12)3.5 顶层设计的VHDL源程序(MB.VHD) (12)4 数字快速计时器的系统仿真及结果分析 (15)4.3 计时电路模块的仿真 (16)4.3.1 十

3、进制计数器的仿真 (16)4.3.2 六进制计数器的仿真 (16)4.4 显示电路模块的仿真 (17)4.4.1 数据选择器的仿真 (17)4.4.2 BCD七段译码驱动器的仿真 (17)4.5 数字快速计时器整个系统的仿真 (17)4.5.1 快速计时器的起始工作状态 (17)4.5.2 快速计时器的停止工作状态, (18)5 结论 (19)参考文献.(18)Abstract (20)基于EDA技术的快速计时器设计 作 者:黄朝伟指导老师:张 帅摘 要:基于EDA技术的使用,本文着重讨论了采用EDA技术设计的快速计时器设计,使用硬件描述语言VHDL,在开发软件MAX+PLUS2进行输入、编译

4、、综合、仿真,得到的仿真波形。实验结果表明,与原有的数控系统的控制电路部分相比采用EDA技术的快速计时器使得数控系统具有更高的可靠性、实时性、高运算速度以及高集成度。同时由于EDA技术中FPGA芯片具有在系统可编程特性,因此该快速计时器的设计可像软件一样随时更改。关键词:EDA;VHDL;快速计时器设计1 绪 论电子技术的发展推动着社会的发展,人民从使用收音机到黑白电视机、彩色电视机、数字电视机到计算机进入千家万户,通过Internet网可以了解世界的变化,这一切都是电子技术发展的结果。但是,随着信息化社会的进一步发展,传统的电子技术设计与芯片的制造也就不能适应社会发展的需要,EDA技术正是适

5、应社会的这一需要而产生的。EDA技术就是以大规模可编程逻辑器件为载体,以硬件描述语言为系统逻辑描述的表达方式,以计算机、大规模可编程逻辑器件的开发软件及试验开发系统为设计工具,通过有关的开发软件,自动完成电子系统的设计。利用EDA技术进行电子设计它可以实现用软件的方式设计硬件;系统可现场编程,在线升级;整个系统低功耗,多功能等特点,成为现代电子设计发展的趋势123。1.1 EDA技术随着数字集成技术的飞速发展,数字系统的规模和技术复杂度也在急剧增长,人工设计数字系统变得十分困难,必须依靠EDA技术。EDA( Electronic Design Automation)技术就是电子设计自动化,用E

6、DA技术设计数字系统的实质是一种自顶向下的分层设计方法4。在每一层次上,都有描述、划分、综合和验证四种类型的工作。描述是把系统设计输入到EDA软件的过程,它可以采用图形输入、硬件描述语言或二者混合使用的方法输入。整个设计过程只有该部分由设计者完成。划分、综合和验证则采用EDA软件平台自动完成。这样做极大地简化了设计工作,提高了效率,因此,采用EDA技术设计数字系统得到了越来越广泛的应用1。与手工设计相比EDA技术有如下特点7: 采用自顶向下设计方案 应用硬件描述语言(HDL)描述设计 能够自动完成仿真和测试 开发技术的标准化和规范化 对工程技术人员的硬件知识和经验要求低1.2 系统设计意义快速

7、计时器由于其计时精确,分辨率高(0.01秒),在各种竞技场所得到了广泛的应用。本数字快速计时器可用于体育比赛,计时精度大于1/100S,计时器能显示1/100S的时间,计时器的最长计时时间为1小时,显示的最长时间为59分59.99秒。系统具有简单、工作稳定可靠等优点,具有一定的实际意义。与原有的数控系统的控制电路部分相比采用EDA技术的快速计时器使得数控系统具有更高的可靠性、实时性、高运算速度以及高集成度。2 数字快速计时器的设计方案及要求本文介绍的数字快速计时器设计,利用基于VHDL的EDA设计工具,采用大规模可编程逻辑器件FPGA,通过设计芯片来实现系统功能。快速计时器由于其计时精确,分辨

8、率高(0.01秒),在各种竞技场所得到了广泛的应用。快速计时器的工作原理与多功能时钟基本相同,唯一不同的是,由于快速计时器的计时时钟信号,由于其分辨率为0.01 秒,所以整个快速计时器的工作时钟是在100Hz 的时钟信号下完成。当快速计时器的计时小于1个小时时,显示的格式是mm-ss-xx(mm表示分钟:059;ss表示秒:059;xx表示百分之一秒:099),当快速计时器的计时大于或等于一个小时时,显示的和多功能时钟是一样的,就是hh-mm-ss(hh表示小时:099),由于快速计时器的功能和钟表有所不同,所以快速计时器的hh表示的范围不是023,而是099,这也是和多功能时钟不一样的地方。

9、2.1 系统设计要求 数字快速计时器的计时范围是0秒到59.99秒,显示的最长时间为59分59秒。 数字快速计时器的计时精度是10 ms。 复位开关可以在任何情况下使用,即便在计时过程中,只要按一下复位开关,计时器就清零,并做好下次计时的准备。 具有启/停开关,即按一下启/停开关,启动计时器开始计时,再按一下复位开关则停止计时。2.2 系统设计方案根据系统设计要求,系统的组成框图如图1所示。图1 系统的组成框图系统设计采用自顶向下的设计方法,系统的整体组装设计主要由控制模块、时基分频模块、计时模块和显示模块四部分组成。(1)控制模块计时控制模块的作用是对计时过程进行控制。计时控制模块可用两个按

10、钮快速计时器的启动、停止和复位。(2)计时模块 计时模块执行计时功能,计时的方法是对标准时钟脉冲计数6。由于计时范围是0秒到59分59.99秒,所以计数器可以由四个十进制计数器和两个六进制计数器构成,其中毫秒位、十毫秒位、秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。(3)显示模块计时显示电路的作用是将计时值在LED七段数码管上显示出来。计时电路产生的计时值经过BCD七段译码管后,驱动LED数码管。计时显示电路的实现方案采用扫描显示,即每次只驱动一位数码管,各位数据轮流驱动对应的数码管进行显示。3 程序设计及分析3.1 时基分频模块的VHDL源程序(CB10.VHD)archit

11、ecture ART OF CB10 ISSIGNAL COUNT: std_logic_vector(3 downto 0);BEGINPROCESS(CLK) BEGIN IF RISING_EDGE(CLK) THEN IF COUNT=1001 THEN COUNT=0000; CO=1; ELSE COUNT=COUNT+1; CO=0; END IF; END IF; END PROCESS; END ART;程序分析:时基分频模块的VHDL源程序(CB10.VHD)的功能是:当时钟信号CLK发生变化,将启动进程语句PROCESS。如果此时有信号CLK的上升沿,此时若计数值COUN

12、T小于9,即 COUNT1001,计数器将进行正常计数,即执行COUNT EN=0; IF SP=1 THEN NEXT_STATE=S1; ELSE NEXT_STATEEN=1;IF SP=1 THEN NEXT_STATE=S1; ELSE NEXT_STATEEN=1; IF SP=1 THEN NEXT_STATE=S3; ELSE NEXT_STATEEN=0; IF SP=1 THEN NEXT_STATE=S3; ELSE NEXT_STATEEN=0;”语句,并使次态NEXT_STATE获得S1,而当此后的第一个CLK上升沿到来时,现态CURRENT_STATE自动转向S1状

13、态。随着时钟信号的到来,将根据控制信号SP而转向不同的状态,同时输出相应的信号EN去控制外部对象。3.3 计时模块的VHDL源程序3.3.1 十进制计数器的VHDL源程序(CDU10.VHD)ENTITY CDU10 ISPORT(CLK: IN STD_LOGIC;CLR:IN STD_LOGIC;EN: IN STD_LOGIC;CN:OUT STD_LOGIC;COUNT10:out std_logic_vector(3 downto 0);END CDU10;architecture ART OF CDU10 ISSIGNAL SCOUNT10: std_logic_vector(3

14、downto 0);BEGIN COUNT10=SCOUNT10;PROCESS(CLK,CLR,EN)BEGINIF(CLR=1)THENSCOUNT10=0000;CN=0;ELSIF RISING_EDGE(CLK) THENIF(EN=1) THENIF SCOUNT10=1001 THEN CN=1; SCOUNT10=0000;ELSE CN=0;SCOUNT10=SCOUNT10+1;END IF;END IF;END IF;END PROCESS;END ART;程序分析:十进制计数器的VHDL源程序(CDU10.VHD)的功能是:当时钟信号CLK、复位信号CLR或时钟使能信号

15、EN中任一信号发生变化,都将启动进程语句PROCESS。此时如果CLR为1,将对计数器清零,即复位,这项独立于CLK的,因而称异步;如果CLR为0,则看是否有时钟信号的上升沿:如果此时有CLK信号,又测得EN=1,即允许计数器计数,此时若计数值小于9,即 SCOUNT101001,计数器将进行正常计数,即执行SCOUNT10=SCOUNT10+1;否则当计数值SCOUNT10达到9时,输出高电平,作为十进制计数的进位溢出信号,当计数值SCOUNT10为其它值时输出低电平;但如果测得EN=0使SCOUNT10保持原值,即将计数值向端口输出:COUNT10=SCOUNT10。3.3.2 六进制计数

16、器的VHDL源程序(CDU6.VHD)ENTITY CDU6 ISPORT(CLK:IN STD_LOGIC;CLR:IN STD_LOGIC;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;PROCESS(CLK,CLR,EN)BEGINIF(CLR=1)THEN SCOUNT6=0000;CN

17、=0;ELSIF RISING_EDGE(CLK) THEN IF(EN=1) THENIF SCOUNT6=0101 THEN CN=1;SCOUNT6=0000;ELSE CN=0; SCOUNT6=SCOUNT6+1;END IF;END IF;END IF;END PROCESS;END ART;程序分析:六进制计数器的VHDL源程序(CDU10.VHD)的功能是:当时钟信号CLK、复位信号CLR或时钟使能信号EN中任一信号发生变化,都将启动进程语句PROCESS。此时如果CLR为1,将对计数器清零,即复位;如果CLR为0,则看是否有时钟信号的上升沿:如果此时有CLK信号,又测得EN=

18、1,即允许计数器计数,此时若计数值小于5,即 SCOUNT60101,计数器将进行正常计数,即执行SCOUNT6=SCOUNT6+1;否则当计数值SCOUNT6达到5时,输出高电平,作为十进制计数的进位溢出信号,当计数值SCOUNT6为其它值时输出低电平;但如果测得EN=0使SCOUNT6保持原值,即将计数值向端口输出:COUNT6=SCOUNT6。3.3.3 计时器的VHDL源程序(COUNT.VHD)ENTITY COUNT ISPORT(CLK:IN STD_LOGIC;CLR:IN STD_LOGIC;EN:IN STD_LOGIC;S_1MS:OUT STD_LOGIC_VECTOR

19、(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(3 DOWNTO 0);HOUR:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COUNT;

20、architecture ART OF COUNT ISCOMPONENT CDU10 PORT(CLK,CLR,EN:IN STD_LOGIC; CN:OUT STD_LOGIC; COUNT10:out std_logic_vector(3 downto 0); END COMPONENT CDU10; COMPONENT CDU6 PORT(CLK,CLR,EN:IN STD_LOGIC; CN:OUT STD_LOGIC; COUNT6:out std_logic_vector(3 downto 0); END COMPONENT CDU6; SIGNAL A,B,C,D,E,F,G,

21、H: std_logic;BEGIN U1: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); U7:CDU6 PORT MAP(F,CLR,EN,G,S_10MIN); U8:CDU10 PORT MAP

22、(G,CLR,EN,H,HOUR);END ART;程序分析:以上程序是计数器的顶层VHDL描述,计时器执行计时功能,计时的方法是对标准时钟脉冲计数。计数器由四个十进制计数器和两个六进制计数器构成,其中毫秒位、十毫秒位、秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。为了达到连接底层元件形成更高层次的电路设计结构,文件使用了元件例化语句。文件在实体中首先定义了计数器顶层设计文件的端口信号,然后在architecture和BEGIN 之间利用COMPONENT语句对准备调用的元件作了声明,并定义了A,B,C,D,E,F,G,H八个信号作为器件内部的连接线。最后利用端口映射语句PORT

23、 MAP()将六个十进制计数器和两个六个进制计数器连接起来构成一个完整的计数器。(详细功能见仿真图的分析)3.4 显示模块的VHDL源程序3.4.1 数据选择器的VHDL源程序(MULX.VHD)ENTITY MULX ISPORT(CLK,CLR,EN: IN STD_LOGIC; OUTBCD: OUT 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 DOWN

24、TO 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_VECTOR(3 DOWNTO 0); S_1MS: IN STD_LOGIC_VECTOR(3 DOWNTO 0); SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END MULX;architecture ART OF MULX IS SIGNAL COUNT:ST

25、D_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK) BEGINPROCESS(CLK) BEGIN IF CLR=1 THEN COUNT=1111; ELSIF RISING_EDGE(CLK) THENIF EN=1 THEN IF COUNT=1001 THEN COUNT=0000; ELSE COUNTOUTBCD=S_1MS; SEGOUTBCD=S_10MS; SEGOUTBCD=S_100MS; SEGOUTBCD=S_1S; SEGOUTBCD=S_10S; SEGOUTBCD=S_1MIN; SEGOUTBCD=S_10MIN; S

26、EGOUTBCD=HOUR; SEGOUTBCD=S_1MS; SEGOUTBCD=S_10MS; SEGOUTBCD=0000; SEG=00000000; END CASE; END IF; END PROCESS;END ART; 程序分析:此程序中包含两个进程,信号CLK都将启动这两个进程。对于第一个进程:当信号CLK发生变化,如果此时复位信号CLR为高电平,COUNT将置为“1111”;否则如果遇到信号CLK的上升沿,又测得EN=1,即允许计数,此时若计数值小于9,即 SCOUNT1001,计数器将进行正常计数,即执行COUNT=COUNT+1;否则当计数值COUNT达到9时,输出高电平,作为十进制计数的进位溢出信号,当计数值COUNT为其它值时输出低电平;但如果测得EN=0使SCOUNT6保持原值,即将计数值向端口输出:COUNT6=SCOUNT6。 对于第二个进程:当信号CLK发生变化,此时如果遇到信号CLK的上升沿,将执行CASE语句。根据信号COUNT

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1