基于QuartusII的数字钟实现综述_第1页
基于QuartusII的数字钟实现综述_第2页
基于QuartusII的数字钟实现综述_第3页
基于QuartusII的数字钟实现综述_第4页
基于QuartusII的数字钟实现综述_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内蒙古大学本科毕业论文 (设计)第页学校代码 学号 00918128分类号密级本科学年论文基于 Quartus II的数字钟设计院(系)名称:电子信息工程学院专业名称:通信工程年级:2010级学生姓名:包胡斯楞指导教师:白凤山2012年9月28日基于Quartus II的数字钟设计摘要数字钟是一种用数字电路技术实现时、分、秒计时的钟表。与机械钟相比具 有更高的准确性和直观性,具有更长的使用,已得到广泛的使用。数字钟的设计 方法有许多种,例如可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以用Quartus II软件结合VHDL语言编程实

2、现数字钟的设计。这些方法都各有其特点,我的设计 采用Quartus II软件结合VHDL语言编程实现数字钟。Quartus II是Altera公 司推出的CPLD/FPGAff发工具,Quartus II提供了与结构五官的设计环境,设 计者无需精通器件内部的复杂结构。本设计由分频模块,时钟产生模块,数码管驱动模块等三个部分组成。在 Quartus II中以文本输入的方式将每个模块的源 代码输入进行波形仿真,以验证设计的正确性。关键词:数字钟 Quartus II VHDL 语言 波形仿真内蒙古大学本科毕业论文 (设计)第页目录绪论11数字钟设计概述2.2分频模块3.2.1分频模块原理图 3.2

3、.2分频模块实现原理及程序32.3仿真波形及分析验证3.3时钟产生模块5.3.1时钟产生模块原理图 5.3.2时钟产生模块实现原理及程序53.3仿真波形及分析验证5.4数码管驱动模块7.4.1数码管驱动模块原理图7.4.2数码管驱动模块实现原理及程序74.3仿真波形及仿真验证7.5总系统8.5.1总系统电路图8.5.2仿真波形及分析验证8.结论1.Q致谢11参考文献12附录A13附录B14附录C.16内蒙古大学本科毕业论文(设计)第页1绪论在人们日常生活中,钟表是一个随处可见的小东西。 甚至,有时候它是一个 装饰品,对家庭摆设起到点缀的作用。钟表的主要功能是给人用数字显示时间, 为人更好的安排

4、时间,更有效的工作学习提供时间的保障。 所以设计一个精密的 钟表对人类的生活很有帮助。在古代,我们的祖先在不同的时期发明和制造了各 种适应当时社会经济发展和人们生活需求的计时器。其中主要有圭表、日晷、漏 刻、机械计时器等。随着时间的前进,科学的发达,知识的膨胀,电子行业的火 热,生活频率的加快,一个与电子设计技术相结合开发的数字钟应运而生了。现在的数字钟与那些过时的钟表相比,无论是它的记录时间的精密度,还是实际物 体的美观性,体积的大小,成本的多少等各个方面都有了天壤之别。数字钟比较 直观,易于读懂,它实用于绝大多数人群,方便老人和小孩使用。数字钟是采用 数字电路实现对时、分、秒数字显示的数字

5、装置,广泛应用于家庭、办公室、车 站、码头等公共场所,已成为人民生活中不可缺少的必需品。 由于数字集成电路 的发展和石英晶体与振荡器的广泛应用,使得数字钟的精度远远超过老式钟表, 而且大大地扩展了钟表原先的报时功能。 而今,我们已经进入了数字时代,数字 钟的使用将会越来越受欢迎。数字钟与老式钟表相比具有更高的准确性和直观 性,具有更长的寿命,已得到广泛的使用。数字钟的设计方法有许多种,例如可 用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及 其所需要的外围电路组成电子钟, 还可以用Quartus II软件结合VHDL语言编程 实现数字钟的设计。本论文采用的是Quartus

6、 II软件结合VHDL语言编程实现数 字钟。本论文的目的只是实现数字钟计时功能,没有其它功能。1数字钟设计概述本设计有分频模块,时钟产生模块和数码管驱动模块等三个模块。EDA数字系统设计有自底向上和自顶向下的设计方法。自底向上的设计方法指的是,先将组成系统整体的各个独立模块的功能实现, 再将各模块按它们的逻辑规律组合成 系统。自顶向下的设计方法是指,先将系统的总体框图设计出来,并将各个功能 分给独立模块实现,最后设计一些功能单一的模块即可。我所采用的是自底向上 的设计方法。Quartus II中实现数字电路仿真有原理图和图表模块编辑,文本 编辑等输入方式,这些方式都各有其优缺点。但实际设计时好

7、多都采用原理图与 文本混合输入方式。在我的设计中,实现分频模块,时钟产生模块和数码管驱动 模块的仿真时,我采用了文本输入方式,再将三个模块各自生成图元,用原理图 输入方式组成了总系统。在采用文本输入方式时,也有VHDL语言和Verilong HDL 语言,我采用了自己学过的 VHDL语言。生成仿真波形时有功能仿真和时序仿真 两种选项。功能仿真只对系统进行原理性波形仿真,如果是时序仿真的话,仿真波形中会加入时间延迟,使得波形效果偏向于实际系统。功能仿真能容易看出设 计原理的对错,波形仿真能显示出当该设计用于实际应用时的效果。由于我的设计侧重于原理性的实现数字钟,缺乏生成实际器件的条件,所以我只做

8、了功能仿 真。三个模块的逻辑联系如图1所示。分频模块中完成将输入的频率为10MHZ勺时钟信号分频成周期为10ms和1s 的时钟信号。时钟产生模块完成对周期为 1s的时钟的计数,然后产生时,分, 秒的数据。数码管驱动模块将当前时,分,秒数据转换成共阴极数码管的显示码 并输出。以下章节中我会把三个模块及系统整体单独的详细解释。按它们实现原理,程序总体构思,元件图,仿真结果,分析验证的顺序说明。5内蒙古大学本科毕业论文 (设计)第页内蒙古大学本科毕业论文(设计)第 页2分频模块2.1分频模块原理图 分频模块原理图如图2所示。在Quartus II中先建立一个空的分频模块项elk* D1/HZ3- O

9、rr s* sL三12目,再编辑文本,写入模块程序代码并编译运行, 最后用生成图元命令得到模块 原理图。它有一个输入端,两个输出端。输入端clklOMHZ中输入频率为1OMHZ时钟信号。输出端clkls输出周期为1s的时钟脉冲,供时钟产生模块计数时使 用。输出端clklOms输出周期为10ms的时钟脉冲,供数码管驱动模块使用。2.2分频模块实现原理及程序对于时钟模块而言,需要每60秒向分钟进以位,每60分钟向小时进一位, 每24小时重回到零点零分零秒。其中,用于产生秒所需的计数时钟周期显然为 一秒,用于产生分钟所需的时种周期为 60秒,用于产生小时所需时钟周期为 60 分。因此需要分频出1s的

10、时钟频率。要显示时,分,秒的个位和十位,系统需要 控制六个数码管。若不采取一些措施,直接显示时间的话,将需要48条输出线。 即使采用十进制八段译码电路,每显示一位数字需4个引脚,则6个数码管也需 24条引脚。实际工程中,很多时候都采用动态扫描的方法来控制数码管的显示。 将数码管的段选线连到一起是从 a到h的8根,加上六个数码管的位选线(即共 阴极数码管内部所有发光二极管的阴极),共16根引脚即可完成数码管的驱动。 采用动态显示的主要原理是人眼的视觉暂留特性,视觉暂留时间大概为60ms则每个数码管的数字显示时间不能超过 10ms因此每10ms时间应点亮一个数码 管,则该系统还需10ms频率的时钟

11、周期。该数字系统的系统时钟为10MHZ则为了产生1s和10ms这种周期的时钟信 号。分别需要对系统时钟进行10000000分频和100000分频。在程序中我先对, 系统时钟进行了 100000分频,得到了 10ms的时钟信号,然后再对10ms的时钟 信号进行100分频,最终获得了 1秒的时钟信号。程序中的实际分频是用计数的 方法分频的,当需要对系统时钟 M(偶数)分频时,对系统时钟周期进行计数,当 计到M/2时,对输出信号去一次反,即可实现分频。所以我在分频模块的程序中, 先对系统时钟信号计数了 100000/2次,得到了 10ms时钟周期,再对10ms信号 计数了 100/2次,得到了 1s

12、的时钟信号,满足了系统的时钟需求。分频程序源 代码在附录A。2.3仿真波形及分析验证将附录A中的程序源代码写入Quartus II软件的文本编辑器中,保存,编译,运行。再建立与之对应的矢量波形文件,选中输入输出管脚添加到矢量波形 编辑窗口。给输入管脚选择合适的输入波形,选择功能仿真,开始仿真。分频模 块的波形仿真中,先将输入端 clklOMHZ输出端clklOms和clkls添加到波形 仿真窗口中,给输入端clklOMHZ选择了 1OMH濒率的时钟信号,进行了仿真。 当Quartus II软件的波形仿真的时间超过1ms时,会经过相当漫长的时间后, 仿真结果才会出来。我为了看到分频后出现的周期为

13、1s的信号,将仿真时间段设置成了 2s,然后用了 37分钟时间运行后,仿真结果才显示出来。仿真结果为 图3和图4。1SliKtei T tne 仙.14.12Sni 扌伽et:462.39msIrtwvit462.39m$SlatEnd:19匚P 芦 83 89167 H ns 251 E 貼 335 54 re 419.503 J2 re58邛曲671.09 it 引 O 86 riS .乂 Q 炖rjeirritIitH 999300875 is+503.316460375 叭JdkltffiCclkls.dklEiiESlBiBiI!: 9 1 图4从图3可以看出,输出端clk10ms的

14、波形每过5ms发生一次翻转,正好是 以10ms为周期的时钟波形。从图4可以看出,输出端clk1s的波形在0.5ms时 翻转,正好是周期为1s的时钟波形。由于两个输出波形的周期差距是两个数量 级无法在一个图形上显示,所以两个图形。3时钟产生模块3.1时钟产生模块原理图数字钟的最终目的是在数码管上显示时,分,秒形式的时间,实现这一目的首先要产生时,分,秒数据,这一功能有时钟产生模块提供。时钟产生模块原理图为图5。它的端口有输入端clk1s,rs,rm,rh和输出端hh3_0,hl3_0,mh3_0,ml3_0,sh3_0,sl3_0。输入端 clkls 是周期为1s的时钟信号的输入端。输入端rs,

15、rm,rh的功能分别是秒置零,分置零,时置 零。输出端hh3.0,hl3.0分别是当前“时”的十位和个位。当前“分”的十位和个位输出分别为 mh3.0,ml3.0端口。当前“秒”的十位和个位输出分别为 sh3.0,sl3.0 端口。! clklsrs-rm1rhF = Li图53.2时钟产生模块实现原理及程序时钟产生模块的实现原理是对输入的周期为1s的时钟信号计数,当计够60时向分种进位且清零。分钟计够60时向时钟进位且清零。时钟计够24时全部清 零且重新从零点零分零秒计数。计数前先看输入端rs,rm,rh是否有效,如果有效将 hh3_0,hl3_0,mh3_0,ml3_0,sh3_0,sl3

16、_0都置零,不进位,重新计数。实际程序中,以上功能由三个独立的进程控制。第一个进程中,以clkls作启动信号,当clkls为上升沿时,判断rs是否为高电平,若是则清零sh3_0,sl3_0 进程结束。若不是高电平,则判断秒是否计到59,若是则清零sh3_0,sl3_0且向分进位,进程结束。若没有计到59,则秒加一,进程结束。第二个进程中,以第一个进程的进位信号作启动信号,当这个启动信号为上升沿 时,判断rm是否为高电平,若是则清零 mh3_0,ml3_0进程结束。若不是高 电平,则判断分是否计到59,若是则清零mh3_0,ml3_0且向时进位,进程结 束。若没有计到59,则分加一,进程结束。第

17、三个进程中,以第二个进程的进 位信号作启动信号,当这个启动信号为上升沿时,判断rh是否为高电平,若是则清零hh3_0,hl3_0进程结束。若不是高电平,则判断分是否计到23,若是 则清零hh3_0,hl3_0进程结束。若没有计到59,则时加一,进程结束。时钟 产生模块的程序源代码在附录 B.3.3仿真波形及分析验证将附录B中的程序源代码写入 Quartus II软件的文本编辑器中,保存,编 译,运行。再建立与之对应的矢量波形文件,选中输入输出管脚添加到矢量波形 编辑窗口。给输入管脚选择合适的输入波形,选择功能仿真,开始仿真。为将计 时功能和置零功能看的清楚,我做了两次仿真。第一次波形仿真中,先

18、将输出端 和输入端添加到波形仿真窗口中,给ckl1s输入了时钟信号,开始功能仿真,得到图6所示的结果。第二次仿真中,clkls中输入时钟信号,rs中输入一段高电 平,开始功能仿真,得到图7所示的结果。1350100pcIntend-1B14ibSialEM.Vilue 自IB. 5 a100 psL现护pi124 pipi1W px叫 ps15S psia.SE he jc1LeB rLrLrLrLrLrLrLn rLrLn rLrLrLrLrLrLrLrLrLTLrLrLrLrLrLrLr(3庙b mMUQ HB帧oraU込B他】:1MOOQ !B 03UOBOjDOH13 siiB ODO

19、:OLDLEDOOOJ000b3 siBM:flOOL 肛 LE)!aflll:iJLOOXOLC L 血血肛 L L XLOCC 3001 刃000加血 $010:*01 L: LLOM)111000)(L(M L加皿9:*001 gLi加E1: 100)(01(11 力:卫或L L L ):DD!从图6看出,当sh和sl计数到sh=” 0101” ,sl= ”1001”以后就变成了全 零。从图7看出,当rs变高电平后,sl有原来的“ 0111 ”变成了全零。所以, 由以上两图的分析知道该模块工作正确。7(设计)第页4数码管驱动模块4.1数码管驱动模块原理图数码管驱动模块原理图为图 &该模块

20、有输出端seg_out,seg_bit和输入端 clk10ms,hh3_0,hl3_0,mh3_0,ml3_0,sh3_0,sl3_0。clk10ms 是10ms 时钟周期的输入,hh3_0,hl3_0,mh3_0,ml3_0,sh3_0,sl3_0为时钟产生模块产生的时,分,秒信号的输入,seg_out是数码管的显示码输出,seg_bit是6个数码管的选择位输出。【鼠刁-wz hl3 3)|厂卜匕. nr-1Z. 2 叩 3: -一I siji.y:rst图84.2数码管驱动模块实现原理及程序用VHDL语言实现数码管驱动模块的功能时,我在程序中使用了三个进程。第一个进程中,以clk10ms作

21、启动信号,在clk10ms上升沿时计0到5六个数并 赋值给模块中一个信号,加完一结束进程。第二个进程中,以第一进程中使用的 信号为启动信号,使用case语句对应不同的信号值,选择不同数码管位选码赋 给seg_bit,并选择该位上的显示数据赋给另一个信号,结束进程。第三个进程 中,以进程二中新复制的信号为启动信号,使用case语句将当前的显示数据转换为数码管的显示码赋给seg_out,结束进程。数码管驱动模块的程序源代码在 附录C。4.3仿真波形及仿真验证IQISnsSlat値 55 ns用前两个模块所使用的方法,在 Quartus II中建立波形文件,clk10ms中 输入时钟脉冲,其它输入端

22、中输入随机码后,开始仿真,得到图9的仿真结果。Vil10 阳 HiiirIB.10.55 A5n1H hhBL3OL 岂 1131 燃001UX0030yonb moKIdle痂哎DICO卜回hlEDOXOCCl畑1旳1聲01 l0Mii既Cd泊ii!X&oiX oooi XoiXoiooS nbtE;L】OLX C01 迫以Wil、DLO X OLIO XDEODXHOCY L000妙me、回shE3101lOTl 【 QOOl 飞WHO.-JJOO y _ .lL0:伽 f)(Qbai刃EJ1L】B ilE01H.匸oioi帚而C皿厂BIDX_LOGO)S nl5OOOLX OOOQX i

23、odo jjciKLinxan :pixoooxdooci y loco 加如Jimi); oiljm omi)回 s-E_b-LtB 1LIDIA tnoiiSB LIOQQOOQOD 1L0L士二兰图9从图9可以看到,当seg_bit= ”111101 ”时,即位选sh的数码管时,sh= “ 1001 ”即十进制9时,seg_out对应的显示码正是9的显示码“ 11110110。其 它时间段上的数据也能一一对应,所以该模块功能正确。5总系统5.1总系统电路图生成总系统是,我先将三个模块各自生成图元,用原理图输入方式组成了总 系统。系统有四个输入端和14和输出端。输入端有pin_clk10M

24、HZ,pin_rs ,pin_rm, pin_rh,输出端有 pin_a,pin_b,pin_c,pin_d,pin_e,pin_f,pin_g,pin_h, pin_hh, pin_hl ,pin_mh, pin_ml, pin_sh, pin_sl 。 pin_clk10MHZ 与分频模 块的时钟输入相连作系统的时钟输入。pin_rs,pin_rm,pin_rh与时钟产生模块的rs,rm,rh相连作系统的秒置零,分置零,时置零。数码管驱动模块的两个 总线输出 seg_out 和 seg_bit 分别展开成 pin_a,pin_b,pin_c,pin_d,pin_e, pin_f ,pin_

25、g, pin_h 和 pin_hh, pin_hl ,pin_mh,pin_ml, pin_sh, pin_sl 作数码管的显示码和位选码。3;nfl肿p.间rti1 ?:-:3期_1-图105.2仿真波形及分析验证在Quartus II中给总系统项目建立波形文件,输入时钟后,用功能仿真仿 真出结果的图为图11。Ma5li TmwB#171僭77480 m$77+88 msSW图11#内蒙古大学本科毕业论文 (设计)第页从图中可以看出, pin_hh , pin_hl , pin_mh, pin_ml , pin_sh , pin_sl 为 “ 111110”时,pin_a, pin_b, p

26、in_c, pin_d, pin_e,pin_f , pin_g,pin_h 为“ 01100000。pin_hh,pin_hl ,pin_mh, pin_ml,pin_sh,pin_sl 为其它值 时,pin_a,pin_b,pin_c,pin_d,pin_e,pin,pin_g,pin_h 为 “ 11111100。 这个结果表示,花选码选通s(秒个位)时,该码管显示 1,其它情况下,数码管显示 0,即当前时间为零点零分一秒。还可以看出,当输入端 oin_rs(秒置零)为 1后,时间都变为零。总上所述,该系统仿真结果与设计目的 相同。15第页内蒙古大学本科毕业论文 (设计)结论日常生活中,

27、钟表是一个随处可见的小东西。数字钟比其它钟表直观,易于 读懂,它实用于绝大多数人群,方便老人和小孩使用。数字钟是采用数字电路实 现对时、分、秒数字显示的数字装置,广泛应用于家庭、办公室、车站、码头等 公共场所,已成为人民生活中不可缺少的必需品。 本论文中的数字钟系统由分频 模块,时钟产生模块,数码管驱动模块等三个部分组成。在Quartus II中以文本输入的方式将每个模块的源代码输入进行波形仿真。在将每个模块的独立功能 实现以后,我生成了它们各自的原路图,用原理图输入方式得到了总系统, 最后 对总系统做了波形仿真,以验证设计的正确性。通过分析验证得到仿真波形与设 计的预先设想完全吻合,设计非常

28、成功。但是,我觉得这次设计更大意义在于学 会独立做研究,把学过的东西巩固一遍,将此次设计中所学会的,积累的东西用 于未来。致谢在设计过程中,学到新知识的同时,我也认识到了VHDL设计的困难性。每当我遇到困难时,我都会找我同学帮忙,他们帮我克服了无数个我 不会的难题,我向他们表示衷心的感谢!最后,还要感谢我论文的指导老师白凤山老师,谢谢老师指出我论文 的不足之处,并提出建议!谢谢你们大家!参考文献1. 雷伏容编著 VHDL电路设计.北京:清华大学出版社,20062. 顾斌,姜志鹏,刘磊编著.数字电路EDA设计(第二版).西安: 西安电子科技大学出版社,20113. 附录A分频模块代码:LIBRA

29、RY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fdiv ISPORT(clk10MHZ:IN STD_LOGIC; clk1Oms,clk1s:OUT STD_LOGIC);END fdiv;ARCHITECTURE one OF fdiv ISSIGNAL clktmp_ms,clktmp_s:STD_LOGIC;SIGNAL cn t_ms:INTEGER RANGE 0 TO 49999;SIGNAL cn t_s:INTEGER RANGE 0 TO 49;BEGINPROCESS(clk10M HZ, cnt_ms,clktmp_ms)BEGI

30、NIF clk10MHZeve nt AND clk10MHZ=1THENIF cn t_ms=49999 THEN clktmp_ms= NOTclktmp_ms;c nt_ms=0;ELSE cn t_ms=c nt_ms+1;END IF;END IF;END PROCESS;PROCESS(clktmp_ms)BEGINIF clktmp_mseve nt AND clktmp_ms=1 THENIF cnt_s=49 THEN clktmp_s=NOT clktmp_s;c nt_s=0;ELSE cn t_s=c nt_s+1;END IF;END IF;END PROCESS;c

31、lk1s=clktmp_s;clk10ms=clktmp_ms;END one;附录B时钟产生模块代码:USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clock ISP0RT(clk1s,rs,rm,rh:IN STD_LOGIC;hh,hl,mh,ml,sh,sl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END clock;ARCHITECTURE a OF clock ISSIGNAL tmpSL,tmpSH:STD_L0GIC_VECT0R(3 DOWNTO 0);SIGNA

32、L tmpML,tmpMH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL tmpHL,tmpHH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL mco,hco: STD_LOGIC:=0;BEGINPROCESS(clk1s)BEGINIF(clk1seve nt AND clk1s=1)THENIF(rs=1)THEN tmpSL=0000;tmpSH=0000;mco=0;ELSIF(tmpSH=0101 AND tmpSL=1001)THENtmpSH=0000;tmpSL=0000;mco=1;ELSIF tmpSL=1001 THEN tmpsl=0000;tmpSH=tmpSH+1;mco=0;ELSE tmpSL=tmpSL+1;mco=0;END IF;END IF;END PROCESS;PROCESS(mco)BEGINIF(mcoeve nt AND mco=1)THENIF(rm=1)THEN tmpML=0000;tmpMH=0000;hco=0;ELSIF(tmpMH=0101 AND tmpML=1001)THEN tmpMH=0000;tm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论