数字电子钟的设计毕业设计.doc

上传人:土8路 文档编号:10146010 上传时间:2021-04-24 格式:DOC 页数:19 大小:342KB
返回 下载 相关 举报
数字电子钟的设计毕业设计.doc_第1页
第1页 / 共19页
数字电子钟的设计毕业设计.doc_第2页
第2页 / 共19页
数字电子钟的设计毕业设计.doc_第3页
第3页 / 共19页
数字电子钟的设计毕业设计.doc_第4页
第4页 / 共19页
数字电子钟的设计毕业设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《数字电子钟的设计毕业设计.doc》由会员分享,可在线阅读,更多相关《数字电子钟的设计毕业设计.doc(19页珍藏版)》请在三一文库上搜索。

1、目 录摘要及关键字2ABSTRACT2一. 设计要求2二. 总体方案设计3 三.各子模块设计原理 31.计秒模块32.计分模块53.计时模块64.校准模块75.显示模块96.报时模块127.分频模块138.去抖动模块15四. 硬件下载与测试161.硬件下载162.测试173.功能扩展17五.结论17参考文献18 数字电子钟的设计摘要及关键字: 数字电子钟是生活中最常用的电子设备之一,其主要功能是能够显示时、分、秒实时信息,并能够方便地进行时、分、秒的初始值设置,以便时间校准。实现数字电子钟有很多方法,本课程是采用VHDL硬件语言的强大描述能力和EDA工具的结合在电子设计领域来设计一个具有多功能

2、的数字电子钟。关键字: 数字电子钟VHDL硬件语言EDA工具ABSTRACT: Digital electric clock in life are the most commonly used one of the electronic equipment. Its main function is to display, minutes and seconds real-time information and can be easily when carried out, minutes and seconds, so that the initial value is set time

3、 calibration. There are many methods of design digital electric clock.This course is a powerful by VHDL hardware language describe ability and EDA tools in electronic design field with versatile to design a digital electric clock .Key work: Digital electric clockVHDL hardware language EDA tools一 设计要

4、求:1. 设计一个电子钟能够显示时,分,秒;24小时循环显示。2. 电子钟有校时,校分,清零,保持和整点报时的功能,具体如下:(1) 数字钟最大计时显示23:59:59 。(2) 在数字钟正常工作时可以对数字钟进行快速校时、校分,即拨动开关K1可以对小时进行校正,拨动开关K2可以对分进行校正。(3) 在数字中正常工作情况下可以对其进行不断地复位,即拨动开关K3可以是时,分,秒显示回零。(4) 在数字钟正常工作时拨动开关K4可以使数字钟保持原有显示,停止计时。(5) 整点报时是要求数字钟在每小时整点到来前进行鸣叫,鸣叫频率是在59:53, 59:55, 59:57 为1kHz,59:59为2kH

5、z。3. 要求所有开关具有去抖动功能。利用开发工具Quartus II 7.0并结合硬件描述语言VHDL,采用层次化的方法进行设计,要求设计层次清晰,合理;构成整个设计的功能可以采用原理图输入或文本输入法实现。4. 通过开发工具Quartus II 7.0对设计电路进行功能仿真。5. 将仿真通过的逻辑电路下载到EDA试验系统,对其功能进行验证。二 总体方案设计:从设计要求可以对其进行层次化设计,将所要设计的多功能数字钟分层6个模块:(1) 计时模块: 包括两个模60的计数器(计秒与计分)和一个模24的计数器(计时)。(2) 清零,保持模块: 此模块功能是可以在计时模块直接嵌入即利用计数器的清零

6、、保持 功能就可以实现。 (3) 校准模块: 其对时、分进行校正。(4) 显示模块: 将数字钟在数码管上显示。(5) 整点报时模块: 由两部分组成,一部分选择报时时间(59:53, 59:55, 59:57,59:59),一部分选择报时频率(1kHz,2kHz)。(6) 分频模块: 电子钟的激励源要求的是稳定1Hz,而试验台提供48MHz的时钟,所以要设计一个分频器将48MHz进行分频得到1Hz。(7) 防抖动模块:因为设计中有使用到开关,而对机械开关而言出现抖动现象 会导致系统误差甚至不能正常工作。所以在设计中要求有去抖动电路。将数字钟的各功能模块级联,生成顶层电路,实现总体设计要求,设计框

7、图如下图所示:计时模块显示模块报时模块清零保持校时校分分频模块 三 各子模块设计原理:1. 计秒模块: 是一个模60的计数器,具有计时、保持、清零的功能。采用VHDL硬件语言编写,程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY second ISPORT(clk: IN STD_LOGIC;rst: IN STD_LOGIC;en: IN STD_LOGIC;qout1: OUT STD_LOGIC_VECTOR

8、(3 DOWNTO 0);qout2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);co: OUT STD_LOGIC);END second;ARCHITECTURE behav OF second ISSIGNAL tem1: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL tem2: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINIF(en=1)THENtem1=tem1;tem2=tem2;ELSIF(rst=0)THENtem1=0000;tem2=0000;ELSIF(cl

9、kevent AND clk=1)THENIF tem1=1001 THENtem1=0000;IF tem2=0101 THENtem2=0000;co=1;ELSEtem2=tem2+1; co=0;END IF;ELSEtem1=tem1+1;END IF;END IF;qout1=tem1;qout2=tem2;END PROCESS;END behav;其仿真波形图如下:封装图为:2. 计分模块:本质上是跟计秒模块一样,也是模60 的计数器,具有计数、保持、清零功能。程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.ST

10、D_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY minute ISPORT(clk: IN STD_LOGIC;rst: IN STD_LOGIC;en: IN STD_LOGIC;qout1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);qout2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);co: OUT STD_LOGIC);END minute;ARCHITECTURE behav OF minute ISSIGNAL tem1: STD_LOGIC_VECTOR(3 DOW

11、NTO 0);SIGNAL tem2: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINIF (en=1)THENtem1=tem1;tem2=tem2;ELSIF(rst=0)THENtem1=0000;tem2=0000;ELSIF(clkevent AND clk=1)THENIF tem1=1001 THENtem1=0000;IF tem2=0101 THENtem2=0000;co=1;ELSEtem2=tem2+1; co=0;END IF;ELSEtem1=tem1+1;END IF;END IF;qout1=tem

12、1;qout2=tem2;END PROCESS;END behav;仿真波形图如下:封装图为:3. 计时模块:是一个模24的计数器,VHDL的程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY hour ISPORT(clk: IN STD_LOGIC;rst: IN STD_LOGIC;en: IN STD_LOGIC;qout1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);qout2:

13、OUT STD_LOGIC_VECTOR(3 DOWNTO 0);co: OUT STD_LOGIC);END hour;ARCHITECTURE behav OF hour ISSIGNAL tem1: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL tem2: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINIF (en=1)THENtem1=tem1;tem2=tem2;ELSIF(rst=0)THENtem1=0000;tem2=0000;ELSIF(clkevent AND clk=1)THENIF

14、 (tem2=0010 AND tem1=0011) THENtem1=0000;tem2=0000;co=1;ELSEco=0;IF(tem1=1001)THEN tem1=0000; tem2=tem2+1;ELSEtem1=tem1+1;END IF;END IF;END IF;qout1=tem1;qout2=tem2;END PROCESS;END behav;仿真波形图如下:封装图为:4. 校准模块:在正常情况下,分的输入时钟clk信号是由秒的进位输出给的,而时的输入时钟clk信号由分进位输出信号给的。当要进行校准时可以直接将2Hz的时钟信号(从分频器直接分出来)送到分或时的输入时

15、钟clk端上,这样就可以快速的进行对电子钟的分或时校准。因此采用VHDL语言实现,程序代码如下:(1) 校时:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY jiaoshi ISPORT(clk: IN STD_LOGIC;clk_2H: IN STD_LOGIC;key: IN STD_LOGIC;en: OUT STD_LOGIC;co: OUT STD_LOGIC);END jiaoshi;ARCHITECTURE be

16、hav OF jiaoshi ISSIGNAL tem: STD_LOGIC;SIGNAL x: STD_LOGIC;BEGINPROCESS(key)BEGINIF(key=0) THENx=0;tem=clk;ELSEx=1;tem=clk_2H;END IF;co=tem;en=x;END PROCESS;END behav;其封装图为:(2) 校分:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY jiaofen ISP

17、ORT(clk: IN STD_LOGIC;clk_2H: IN STD_LOGIC;key: IN STD_LOGIC;co: OUT STD_LOGIC);END jiaofen;ARCHITECTURE behav OF jiaofen ISSIGNAL tem: STD_LOGIC;BEGINPROCESS(key)BEGINIF(key=0) THENtem=clk;ELSEtem=clk_2H;END IF;co=tem;END PROCESS;END behav;其封装图为:5. 显示模块:采用动态显示方法,其动态扫描频率为1MHz。显示模块包括一个6选1数据选择器(其从计数模块

18、输出的6个输出选1个送出显示)和一个译码器(其对6选1数据选择器的输出信号进行译码送至数码管上显示)。用VHDL硬件语言实现即程序代码如下:(1) 6选1数据选择器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY sel ISPORT(clk: IN STD_LOGIC;rst: IN STD_LOGIC;qin1: IN STD_LOGIC_VECTOR(3 DOWNTO 0);qin2: IN STD_LOGIC_VECT

19、OR(3 DOWNTO 0);qin3: IN STD_LOGIC_VECTOR(3 DOWNTO 0);qin4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);qin5: IN STD_LOGIC_VECTOR(3 DOWNTO 0);qin6: IN STD_LOGIC_VECTOR(3 DOWNTO 0);qout: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);sel: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END sel;ARCHITECTURE behav OF sel ISBEGINPROCESS(clk,rst

20、)VARIABLE cnt: INTEGER RANGE 0 TO 5;BEGINIF(rst=0) THEN cnt:=0;sel=00000000;qoutqout=qin1;selqout=qin2;selqout=qin3;selqout=qin4;selqout=qin5;selqout=qin6;selqout=0000;sel=11111111;END CASE;END IF;END PROCESS;END behav;仿真波形:例如显示23:15:39其从仿真波形结果可看知所设计的是正确的。其封装图为:(2) 4-7译码器:LIBRARY IEEE;USE IEEE.STD_L

21、OGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY decode47 ISPORT(qin: IN STD_LOGIC_VECTOR(3 DOWNTO 0);qout: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END decode47;ARCHITECTURE behav OF decode47 ISBEGINWITH qin SELECTqout=00000011 WHEN 0000, 10011111 WHEN 0001, 00100101 WHEN 0

22、010, 00001101 WHEN 0011, 10011001 WHEN 0100, 01001001 WHEN 0101, 01000001 WHEN 0110, 00011111 WHEN 0111, 00000001 WHEN 1000, 00011001 WHEN 1001, 00000011 WHEN OTHERS;END behav;其封装图为:6. 报时模块:由设计要求电子钟在每小时到来前进行报时:59:53, 55:55,59:57 鸣叫频率为1kHz;59:59鸣叫频率为2kHz,从而可以很容易采用VHDL语言编写程序实现,代码如下: LIBRARY IEEE;USE I

23、EEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY bell ISPORT(clk_1k: IN STD_LOGIC;clk_2k: IN STD_LOGIC;qin1: IN STD_LOGIC_VECTOR(3 DOWNTO 0);qin2: IN STD_LOGIC_VECTOR(3 DOWNTO 0);qin3: IN STD_LOGIC_VECTOR(3 DOWNTO 0);qin4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);bel

24、: OUT STD_LOGIC);END bell;ARCHITECTURE behav OF bell ISSIGNAL temp: STD_LOGIC;BEGINPROCESS(qin1,qin2,qin3,qin4)BEGINIF(qin4=0101 AND qin3=1001 AND qin2=0101)THENIF(qin1=0011OR qin1=0101 OR qin1=0111)THENtemp=clk_1k;ELSIF(qin1=1001)THENtemp=clk_2k;END IF;ELSE temp=0;END IF;bel=temp;END PROCESS;END be

25、hav;封装图如下:7. 分频模块:因为设计中要有很多不同的频率:1Hz的提供给计时模块;2Hz供给校准用;1kHz、2kHz供给蜂鸣器报时用;1MHz用来实现动态显示。而试验台只有唯一一个48MHz的基准时钟,所以要对其进行分频其将48MHz分成1Hz、2Hz、1kHz、2kHz、1MHz。用VHDL就可以很方便的实现分频,程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY fenpin ISPORT(clk: I

26、N STD_LOGIC; clk_1Hz: OUT STD_LOGIC;clk_2Hz: OUT STD_LOGIC;clk_1kHz: OUT STD_LOGIC;clk_2kHz: OUT STD_LOGIC;clk_1MHz: OUT STD_LOGIC);END fenpin;ARCHITECTURE behav OF fenpin ISSIGNAL clk_1: STD_LOGIC;SIGNAL clk_2: STD_LOGIC;SIGNAL clk_1k: STD_LOGIC;SIGNAL clk_2k: STD_LOGIC;SIGNAL clk_1M: STD_LOGIC;BEG

27、INPROCESS(clk)VARIABLE count1: INTEGER RANGE 0 TO 24;BEGIN IF (clkevent AND clk=1) THEN IF count1=23 THENcount1:=0;clk_1M= NOT clk_1M; ELSEcount1:=count1+1; END IF; END IF;clk_1MHz=clk_1M;END PROCESS;-1MHzPROCESS(clk_1M)VARIABLE count2: INTEGER RANGE 0 TO 250;BEGINIF (clk_1Mevent AND clk_1M=1) THEN

28、IF count2=249 THENcount2:=0;clk_2k= NOT clk_2k; ELSEcount2:=count2+1; END IF; END IF;clk_2kHz=clk_2k;END PROCESS;-2KHzPROCESS(clk_1M)VARIABLE count3: INTEGER RANGE 0 TO 500;BEGINIF (clk_1Mevent AND clk_1M=1) THEN IF count3=499 THENcount3:=0;clk_1k= NOT clk_1k; ELSEcount3:=count3+1; END IF; END IF;cl

29、k_1kHz=clk_1k;END PROCESS;-1KHzPROCESS(clk_1k)VARIABLE count4: INTEGER RANGE 0 TO 250;BEGINIF (clk_1kevent AND clk_1k=1) THEN IF count4=249 THENcount4:=0;clk_2= NOT clk_2; ELSEcount4:=count4+1; END IF; END IF;clk_2Hz=clk_2;END PROCESS;-2HzPROCESS(clk_1k)VARIABLE count5: INTEGER RANGE 0 TO 500;BEGINI

30、F (clk_1kevent AND clk_1k=1) THEN IF count5=499 THENcount5:=0;clk_1= NOT clk_1; ELSEcount5:=count5+1; END IF; END IF;clk_1Hz=clk_1;END PROCESS;-1HzEND behav;封装图如下:8. 去抖动模块:因为机械开关的抖动现象对系统产生误差,甚至使不能正常工作,所以要适当地在开关和电路之间加入一个去抖动模块以防止机械开关所引起的不良影响。采用锁存器就可以很方便地设计去抖动电路,如图下所示。因为设计中一共有4开关所以采用两片7474,每片包括两个D锁存器,7

31、474输出端的QN是开关信号稳定状态。封装图如下所示:将上面所有各功能模块进行级联,生成顶层电路,实现了总体设计要求。在开发工具Quartus II 7.0的顶层电路图如图所示:四 硬件下载与测试:1. 硬件下载:利用Quartus II 7.0进行各个模块设计,然后将这些模块按所需要的功能连接,经编译,进行芯片配置管脚。配置管脚如图所示:再经编译无误就可以进行硬件下载。2. 验证:当开关K1、K2拨上(即等于1)就可以对分或时进行快速校准。当K3拨下(即K3=0)可以对数字钟进行复位。当K4拔上(即K4=1)数字钟保持当前的显示,停止计时。3. 功能扩展:从生活中可知道一般的电子钟都具有定时

32、闹铃功能所以可考虑在已有的设计基础上添加一个定时闹铃模块。其原理是:按下设置闹钟方式键,使电路工作于预置状态,此时显示器与时钟脱开,而与预置计数器项链,利用前面手动校时、校分按键进行设置闹钟时间。预置好后回到正常计时模式。当计时计到预置的时间则蜂鸣器发出闹钟信号,时间延迟为1min。五. 结论:通过这次课程设计中,我学会了很多东西,锻炼了我的动手能力,培养了我的独立思考能力。第一天上课听老师讲解设计的要求我是似懂非懂,但回去之后跟同学讨论,然后去图书馆找相关此设计的资料,只要一个下午我已经把握要完成课程的要求则要做什么工作。因为上个学期在电子电工综合课程已经学会如何使用各个独立集成芯片来完成设

33、计,所以在这次课程设计中在老师的指导下我试要用另一种设计手段来完成设计即通过VHDL硬件描述语言编写程序来设计课程的内容。刚开始时,虽然之前在数字逻辑电路与系统设计课程里已经接触过VHDL硬件描述语言但是不是很熟悉,所以要费比较多的时间去掌握VHDL语言。我开始看资料,结合在课堂上老师讲解的知识,我很快就掌握了VHDL设计的方法,然后对本设计的内容进行划分各个模块,使用VHDL语言编写完成各个模块。通过Quartus II 7.0平台下进行设计,仿真,虽然在设计过程中出现了很多错误但是在老师的耐心指导下,同学的热情帮助我终于把一个一个模块完成,然后将它们级联成一个完整的数字电子钟。这次课程设计

34、中虽然老师给的所有的要求我还没都完成,但是对我来说也算比较成功。我不仅学会了课本的知识,锻炼了动手能力更让我懂得了如何耐心、细心地检查错误,这对我今后的学习和工作有很大的帮助。最后十分感谢老师在本次课程设计中对我的悉心指导和同学们的热情帮助。参考文献:1. EDA设计实验指导书 南京理工大学电子技术中心2. 数字逻辑电路与系统设计/蒋立苹编著. 电子工业出版社2009.13. 数字电路与数字逻辑实验指导书/安德宁编著.北京:北京邮电学院出版社2004.74. EDA实用技术即应用/刘艳萍,高振斌,李志军编著.北京:国防工业出版社,2006.15. EDA技术与VHDL设计/徐志军,王金明 等编著 .北京:电子工业出版社,2009.1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1