《课程设计(论文)基于EDA技术的数字时钟设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于EDA技术的数字时钟设计.doc(19页珍藏版)》请在三一办公上搜索。
1、物理与电子学院课程考核论文论文作者姓名: 作 者 学 号: 所 学 专 业: 理科 物理方向 任 课 教 师: 完 成 时 间: 2015年6月 基于EDA技术的数字时钟设计目录摘要2一绪论3 1.课题的研究背景3 2.数字电子钟的发展简况3二系统设计4 1.整体规划4 2.时基信号产生电路5 3.调时、调分信号的产生电路5 4.计数显示电路6三基本功能实现6 1.时钟计数7 2.校时设置7 3.清零功能8 4.定时、报时功能9四系统软件实现9 1.详细模块描述9 2.总体设计及引脚设置9五 系统仿真及分析10 1.各模块时序仿真10 2.总体时序仿真11 3.实验结果11六 设计总结12参考
2、文献12附录:参考程序13摘要随着基于PLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。本文详细介绍EDA课程设计任务数字钟的设计的详细设计过程及结果,并总结出心得体会。主体:主要涉及模60与模24计数器、动态显示控制电路、分频器主要整点报时电路,这些电路都是以模块封装好的,以便其他电路调用。以计数器构成计时部件,通过分频器分出的1HZ脉冲计时,调用动态显示电路显示,通过整点报时电路控制蜂鸣器。在计数器级联时采用内部同步外部异步的方式,但通过简单的改变达到了同步的效果而且比同步还可靠。显示控制时为了节约资源采用动态原理。关键
3、字 多功能数字时钟 整点报时 EDA技术 VHDL语言AbstractThisarticleisbasedontheQuartusIIsoftwareandthecorrespondingexperimentalplatformtocompleteamulti-functiondigitaltimerexperiment,sothatweclearlyunderstandtousdigitaltablefunctionishowtoachieve.Usedinthedesignoftheleveldesignthought,functiondecreasesprogressivelystepb
4、ystep.Theexperimentmainlyincludesthemainbody-thebasicfunctionsofthecircuitofclock. Subject:mainlyrelatestomode60andmode24counter,dynamicdisplayofcontrolcircuit,theprimarydividerthewholepointtimekeepingcircuit,thecircuitisinmoduleagoodpackage,sothatothercircuitcalls.Tocounterthroughafrequencydividerw
5、hichtimingcomponents,from1HZpulsetiming,calleddynamicdisplaycircuitdisplays,throughthewholepointtimekeepingcircuitcontrolbuzzer.Incountercascadeusesinternalsynchronousexternalasynchronousmanner,butbysimplychangingthesynchronizationeffectandismorereliablethansynchronous.Displaycontrolinordertosaveres
6、ourcesbythedynamicprinciple.Keyword:LeveldesignMultifunctionaldigitalclockSynchronizationThewholepointtimekeepingThelanguageofVHDL一绪论1.课题的研究背景当面对这样一个信息爆炸的时代,时间变得越来越宝贵,人们无疑需要一个良好的计划时间表,而这就需要一个系统完善成熟的定时系统来及时提醒人们。然而在这个新技术、新产品不断涌现,各类产品功能日益强大,这就需要我们带着战略性眼光选择。多功能数字电子钟无意是人们最好的选择之一,多功能数字时钟小巧、价格低廉,外观造型日益精美、精
7、确度高、功能齐全、使用方便,不仅仅可以显示钟表的功能也具备计时、测温、定闹钟、显示日历、语音报表等功能,其集成化高而受到广大人们群众喜爱。在人们不断的要求下,多功能数字钟已经成为现代设计时钟研究生产的主导方向。2. 数字电子钟的发展简况 在国外,公元以前,人们也是主要利用天文现象来计时,比如观察太阳日出日落、星相的转移,此后当在德国的亨莱思创造了小型机械钟开始,国外的钟表行业逐渐掀起,到了19世纪,钟表制造业已经成为人们必不可少的一个行业,钟表制造业也逐渐的实现了工业化生产,在20世纪,随着电子潮流的飞速发展,钟表行业也出现了翻天覆地的变化,由单一的机械表转向多元式的钟表,有电池驱动钟、电机械
8、表、指针式电子钟表、数字式电子钟表等种类,并且功能不断的增多如现在出现的多功能数字电子钟,它采用的是数字电路来显示分秒,它的作用早已不仅限于计时的功能,它还可以显示日历、定闹、报时、测温等功能。它人性化的设计给人们的生活带来了很多的方便,成为人们日常生活的必需品。二 系统设计1. 整体规划 数字电子时钟主干电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”
9、信号,该信号将被送到“时计数器”。“时计数器”采用12进制计时器,可实现12小时的累计。通过六个LED显示器显示出来。整点报时电路根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。校时电路用来对“时”、“分”、“秒”显示数字进行校对调整。 电子时钟系统总体规划如图1所示:(1)根据电路特点,用层次设计概念,将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,同时加深层次化设计概念。 (2)软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何融合。 (3)适配划分前后的仿真内容有何不同概念,仿真信号对象有何不同,有更深一步了解。 (4
10、)按适配划分后的引脚锁定,同相关功能模块硬件电路的接口连线。 (5)所有模块采用VHDL硬件描述语言设计。 图1 总体方案框图2.时基信号产生电路数字钟以其显示时间的直观性、走时准确性作为一种计时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为1Hz的、非常稳定的计数时钟脉冲。3.调时、调分信号的产生电路由计数器的计数过程可知,正常计数时,当秒计数器(60进制)计数到59 时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加1。把秒计数器的进位
11、脉冲和一个频率为2Hz的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去时(即为0),则数据选择器将秒计数器的进位脉冲送到分计数器,此时,数字钟正常工作;当按键开关按下去时(即为1),则数据选择器将另外一个2Hz 的信号作为分计数器的计数脉冲,使其计数频率加快,当达到正确时间时,松开按键开关,从而达到调时的目的。调节小时的时间也一样的实现。4.计数显示电路由计数部分、数据选择器、译码器组成,是时钟的关键部分。1、计数部分:由两个60进制计数器和一个24 进制计数器组成,其中60 进制计数器可用6 进制计数器和10 进制计数器构成;24 进
12、制的小时计数同样可用6 进制计数器和10 进制计数器得到:当计数器计数到24 时,“2”和“4”同时进行清零,则可实现24 进制计数。2、数据选择器:84 输入14 输出的多路数据选择器,因为本实验用到了8个数码管(有两个用来产生隔离符号)。3、译码器:七段译码器。译码器必须能译出,由实验二中译码器真值表可得:字母F 的8421BCD 码为“1111”,译码后为“1000111”,现在如果只译出,即字母F的中间一横,则译码后应为“0000001”,这样,在数码管上显示的就为。三基本功能实现1.时钟计数:首先下载程序进行复位清零操作,电子钟从00:00:00计时开始。sethour可以调整时钟的
13、小时部分, setmin可以调整分钟,步进为1。由于电子钟的最小计时单位是1s,因此提供给系统的内部的时钟频率应该大于1Hz,这里取100Hz。CLK端连接外部10Hz的时钟输入信号clk。对clk进行计数,当clk=10时,秒加1,当秒加到60时,分加1;当分加到60时,时加1;当时加到24时,全部清0,从新计时。用6位数码管分别显示“时”、“分”、“秒”,通过OUTPUT( 6 DOWNTO 0 )上的信号来点亮指定的LED七段显示数码管。2.校时设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板进行任意的调整,因为我们用的时钟信号均是
14、1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。通过一个开关的两种电平,来打开个关闭一个二输入与非门,另一个输入端接1Hz的信号。因此这个开关实现了1Hz信号是否加入电路的作用,开关打在高电平上,1Hz信号通过与非门,开关打在低电平上,与非门输出为高电平。把与非门的输出信号,和时钟正常走时所需要的时钟信号,一起通过与门,加给分个位时钟信号的输入端即可,这样分校时开关打在高电平上,分个位以1Hz的频率跳动起来,分校时开关打在低电平上时,正常走时。同理小时校准与此相同。3.清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。清零电路设计的
15、关键就是要解决好同步问题,在发出清零信号时,所有计数器的时钟信号是一致的,而且处于有效的边沿。为此可以设计当清零信号有效时,很高频率的信号同时加入个计数器的时钟端,而当清零信号无效时,各计数器上时钟端加的是正常走时所需要的时钟信号。也可以用与门,或门和非门实现上述的功能。当清零信号为低时,清零信号经过一个非门变为高电平信号,将与门打开,高频信号通过与门,在与秒各位计数器的时钟端上的信号相或,与其他各位计数器时钟输入端上的信号相与。这样,当清零信号有效时,每一位计数器上的时钟输入端实现了同步的功能,实现了同步清零的功能。当清零信号无效时,时钟正常走时。4.定时、报时功能:整点报时电路根据计时系统
16、的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。它通过对定时和计时的比较来完成报时, 由两个计数器组成,计数器由两个开关控制,用来对定时的分钟和时钟设定,当开关都打到不送脉冲的状态,两个计数器都保持,从而达到存储的目的。比较电路用来比较定时时间和计时时间,当它们一致时,输出为1,这样可以驱动报时模块。最后,利用显示电路将定的时间设定输出。要使定时起到提醒作用,还要有铃声,这里用1hz脉冲作为蜂鸣器的信号源。四 系统软件实现1. 详细模块描述(1)Second模块为秒计数模块。Clk作为秒脉冲,reset复位,setmin用于调整分钟,接按键,enmin是当秒计数记到59后产生分脉冲,
17、秒计数重新从0开始计数。Daout为秒计数。(2)Minute模块为分计数模块。Clk作为分脉冲,接second模块的enmin,reset用于复位,sethour用于调整小时,接按键,enhour是当分计数记到59后产生时脉冲,分计数重新从0开始计数。Daout为分计数。(3)Hour模块为时计数模块,clk为时脉冲,接minute模块的enhour,reset复位,daout为时计数。(4) Alert模块为整点报时模块。其中clk1用于在其上升沿判断是否为整点时刻,若是则加clk秒脉冲从speak端口输出到扬声器作为声音信号,报时10秒。Stop为停止报时控制,接按键,按动按键时若在报时
18、则报时停止。Reset复位端。dainsh和dianm分别接分计数和秒计数,用于判断整点和报时。2. 总体设计及引脚设置在软件中设置后顶层原理图显示为 设计思想,利用脉冲时钟产生一个1Hz的信号来实现一秒钟的控制,要产生1Hz的信号就要用到分频器,实验中用三个百分频器把1MHz的信号变成1Hz。然后信号进入控制秒的计数器,当第60个脉冲时钟到来时,产生一个进位信号,12送到控制分的计数器,同理,当第60个脉冲时钟到来时,产生一个进位信号,送到控制小时的计数器。当小时计数器计数到12/24时,完成一个周期,跳转到零。输出是由动态扫描器来完成的。扫描器时钟取至前面分频未结束时的一个100Hz的信号
19、。这样就能够在7段数码显示管上,以100Hz的频率扫描显示出时钟的数字变化。五 系统仿真及分析1.各模块时序仿真:1. Second模块 从仿真图形上来看,daout从0加到59后enmin有进位,setmin有脉冲时,enmin也会出现脉冲,说明秒计数,分调整,分脉冲都是正确的。2.minute模块 从仿真图形上来看,daout从0加到59后enhour有进位,说明分计数,时脉冲都是正确的。3.hour模块 从仿真图看,daout从0加到B即0到11后重新从0开始加,说明十二小时计数正确。 4.alert模块 从仿真波形来看,当stop=0和damin=0时,可看出speak有脉冲输出,st
20、op=1停止。说明报时是正确的。 从仿真波形来看,num输入09,而led分别输出相应正确字型码。2.总体时序仿真程序仿真主要由计数器完成,在时钟脉冲作用下,完成始终功能。由时序图可以看出每个时钟上升沿到来时加一,当接受到REST信号,即REST为高电平,所有计数为零,并重新计数,SETMIN 和SETHOUR可以完成调节时钟功能,都是高电平调节,每来一个脉冲,相应的时或分加1。设定仿真时间宽度,选择适当的仿真时间域以便有足够长的观察时间。波形文件存盘后运行仿真器,直到出现仿真结果。24进制的时控制模块中当clk为上升沿时,hour1输出由9变为0,并且hour1都是由0到9循环,hour2输
21、出由2变为0,并且hour2都是由0到2循环。60进制的分控制模块中当clk和carry为上升沿时,min1输出由9变为0,并且min1都是由0到9循环,min2输出由5变为0,并且min2都是由0到5循环。60进制的秒控制模块中当clk和carry为上升沿时,sec1输出由9变为0,并且sec1都是由0到9循环,sec2输出由5变为0,并且sec2都是由0到5循环。仿真波形3.实验结果 首先,由石英晶体振荡器输出稳定的脉冲信号,经过振荡器输出标准的秒脉冲信号,秒计数电路为六十进制计数器,秒计数电路将振荡器产生的秒脉冲信号作为输入信号,进行计数,并通过秒显示器显示秒;其次,当秒计数器完成60个
22、秒计数后,秒计时电路清零,输出一个“分计时信号”,分计时电路收到秒计时电路产生的信号后,开始计数并显示分;再次,当分计时电路完成60个分计数后,分计数器清零,输出一个“时计时信号”,时计时电路收到分计时电路产生的信号后,开始计数并显示时;最后,时计时电路完成24个时计数后,清零。完成电子钟基本功能仿真结果。六 设计总结 通过毕业论文设计,我进一步加深了对电子设计的认识,进一步熟练了对QuartusII软件的操作。在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。通过同学探讨和请教老师的方式,终于把问题都解决了。对数字时钟原理和设计思路的更详细的了解,掌握了做毕业设计的一般流
23、程,为以后的电路设计积累了一定的经验。做毕业设计时,我先查阅了相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。通过这次的设计,我深入了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。 经过这次的毕业设计我学到的也不止是一些新的理论知识和具体的动手实践。更重要的是一种思路,大的问提可以转换成小的问题解决,困难的问题通过转换成简单的问题解决。相信这将会对我今后的学习工作带来帮助。设计论文过程中我认识到我专业知识缺少的还很多
24、,实践经验也相当匮乏。因此在今后我还需要不断的去学习新的知识,不断的充实自身。在此,再次感谢梁勇老师的悉心指导,您让使我学到了很多很多!参考文献 1.EDA技术实用教程-vhdl版(第四版) 2.EDA技术及应用.西安电子科技大学出版社 3.VHDL程序设计.清华大学出版社 4.可编程器件EDA技术与实践. 机械工业出版社 5.EDA与数字系统设计.机械工业出版社附录:参考程序VHDL源程序分频模块程序如下library IEEE; use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsig
25、ned.all;entity fp is port (rst,clk : in STD_LOGIC; what: out STD_LOGIC);end fp;architecture a of fp is signal count100 : integer range 0 to 99; signal tt:std_logic;begin process (rst,clk) begin if rst=1 then count100=0; elsif rising_edge(clk) then count100= count100 + 1 ;tt=tt; if count100=99 then c
26、ount100=0;tt=not tt; end if ; end if; what=tt; end process;end a;秒模块程序如下library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second is port(clk,reset:in std_logic; sec1,sec2:out std_logic_vector(3 downto 0); carry:out std_logic);end second;architecture rt1 of second is sig
27、nal sec1_t,sec2_t:std_logic_vector(3 downto 0);begin process(clk,reset) begin if reset=1then sec1_t=0000; sec2_t=0000; elsif clkevent and clk=1then if sec1_t=1001then sec1_t=0000; if sec2_t=0101then sec2_t=0000; else sec2_t=sec2_t+1; end if; else sec1_t=sec1_t+1; end if; if sec1_t=1001 and sec2_t=01
28、01then carry=1; else carry=0; end if; end if; end process; sec1=sec1_t; sec2=sec2_t;end rt1;分模块程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute is port (clk,reset:in std_logic; min1,min2:out std_logic_vector(3 downto 0); carry:out std_logic); end minute;arc
29、hitecture rt1 of minute is signal min1_t,min2_t:std_logic_vector(3 downto 0);beginprocess(clk,reset)begin if reset=1then min1_t=0000; min2_t=0000; elsif clkevent and clk=1then if min1_t=1001then min1_t=0000; if min2_t=0101then min2_t=0000; else min2_t=min2_t+1; end if; else min1_t=min1_t+1; end if;
30、if min1_t=1001 and min2_t=0101then carry=1; else carry=0; end if; end if;end process; min1=min1_t; min2=min2_t;end rt1;时模块程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour is port (clk,reset:in std_logic; hour1,hour2:out std_logic_vector(3 downto 0); end hour;
31、architecture rt1 of hour is signal hour1_t,hour2_t:std_logic_vector(3 downto 0);beginprocess(clk,reset)begin if reset=1then hour1_t=0000; hour2_t=0000; elsif clkevent and clk=1then if hour1_t=0011 and hour2_t=0010then hour1_t=0000; hour2_t=0000; else if hour1_t=1001then hour1_t=0000; if hour2_t=0010then hour2_t=0000; else hour2_t=hour2_t+1; end if; else hour1_t=hour1_t+1; end if; end if; end if;end process; hour1=hour1_t; hour2doutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000000; end case; end process;end behav;
链接地址:https://www.31ppt.com/p-4150540.html