数字逻辑电路设计课程设计多功能数字钟.doc

上传人:laozhun 文档编号:4192495 上传时间:2023-04-09 格式:DOC 页数:10 大小:104.50KB
返回 下载 相关 举报
数字逻辑电路设计课程设计多功能数字钟.doc_第1页
第1页 / 共10页
数字逻辑电路设计课程设计多功能数字钟.doc_第2页
第2页 / 共10页
数字逻辑电路设计课程设计多功能数字钟.doc_第3页
第3页 / 共10页
数字逻辑电路设计课程设计多功能数字钟.doc_第4页
第4页 / 共10页
数字逻辑电路设计课程设计多功能数字钟.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《数字逻辑电路设计课程设计多功能数字钟.doc》由会员分享,可在线阅读,更多相关《数字逻辑电路设计课程设计多功能数字钟.doc(10页珍藏版)》请在三一办公上搜索。

1、数字逻辑电路设计课程设计多功能数字钟学院:计算机科学与通信工程班级:物联网1101学号:3110611002姓名: 朱一指导老师: 金华提交日期:2012年6月17日一 设计任务及要求:(1)、拥有正常的时、分、秒计时功能。(2)、能利用实验板上的按键实现校时、校分及秒清零功能。(3)、能利用实验板上的扬声器做整点报时。(4)、闹钟功能。(5)、在Quartus II中采用层次设计方法进行设计。(6)、完成全部电路设计后在设计板上下载,验证设计课题的正确性。二 功能简介:完成时钟的计时、调整,整点报时等基础功能,完成闹钟的设置、开启和关闭功能,整点报时的开启和关闭功能,完成时间设定和显示功能。

2、三 多功能数字钟的总体设计框图: 时显示器 分显示器 秒显示器闹时设置清零校时校分时十位 时个位分十位 分个位秒十位 秒个位扬声器译码器 译码器译码器 译码器译码器 译码器时计数器分计数器秒计数器MUXMUX报时电路HADJHAOJSCLR基准频率分频器DASBSC1Hz4Hz64Hz500Hz闹钟电路SC四 各模块电路图及程序:设计方案:根据总体设计框图,可以将整个系统分为6个模块来实现,分别是计时模块、校时模块、整点报时模块、分频模块、动态显示模块.(1)计时模块该模块的设计相对简单,使用一个二十四进制和两个六十进制计数器级联,构成数字钟的基本框架。二十四进制计数器用于计时,六十计时器用于

3、计分和计秒。只要给秒计数器一个1Hz的时钟脉冲,则可以正常计时。分计数器以秒计数器的进位作为计数脉冲,小时计数器以分计数器的进位作为计数脉冲。(2)校时模块校时模块设计要求实现校时、校分以及秒清零的功能。 1按下校时键,小时计数器迅速递增以调至所需要的小时位。 2按下校分键,分数计数器迅速递增以调至所需要的分位。 3按下清零键,将秒计数器清零。可以选择实验板上的3个脉冲案件进行锁定。对于此模块的设计,有3个需要注意的问题:1在校分时,分数计数器的计数不应对小时位产生影响,因而需要屏蔽此时分计数器的进位信号以防止小时计数器计数。2按键抖动的消除所谓“抖动”是指一次按键时的弹跳现象,通常实验板中按

4、键所用的开关为机械弹跳开关,由于机械点的弹性作用,按键开关在闭合时并不能马上接通,而断开时也并不能马上断开,使得闭合及断开的瞬间伴随着一系列的电压抖动,从而导致本来一次按键,希望计数一次,结果因为抖动多次计数多次,且计数随机,这样就严重影响了时间的校对。3计数采用1Hz的脉冲驱动计数器计数,而校对时间对应选用相对高频率的信号驱动计数器以达到快速校对时间的目的。显然,这两种计数器脉冲之间需要进行相应的选择切换。于是将计时和校时模块合起来的电路是实现示意图所示。两种脉冲信号用两路选择器进行选择,选择条件为是否按键。按键输出经过了消抖处理。二十四进制计数器六十进制计数器六十进制计数器2MUX2MUX

5、消抖校时消抖校分1Hz高频计数脉冲分频 多功能数字钟的计时和校时模块(3)整点报时模块该模块的功能要求是:计时到59分50秒时,每两秒一次低音报时,整点时进行高音报时,可以将报时信号接到实验板上的扬声器输出。而已不同频率的脉冲信号区分低音和高音报时。比如可以用500Hz信号进行低音报时,1kHz信号作为高音报时信号。进行报时的条件是计数器计数至所需要的时间点,因而需要实现一个比较模块,将分计数器和秒计数器的输出连至比较输入端完成比较过程。(4)分频模块在本系统中需要用到多种不同频率的脉冲信号,上至高音报时信号,下至1Hz的计时脉冲。所有这些脉冲信号均可以通过一个基准分频分频器产生。基准频率分频

6、器就是一个进制很大的计数器,利用计数器的分频功能,从不同的输出为得到所需要的脉冲信号。(5)动态显示模块 时间的显示需要用到6个数码管,如果实验板上可用的静态显示数码管有6个或6个以上则很容易实现,只需要将小时高位到秒低位Ginger6组输出按顺序锁定到6个数码管上即可。(6)闹钟模块闹钟模块要求数字钟计时到所设定的任意时间时均能驱动扬声器报时。该模块的设计应考虑到以下几个问题。1 设定的闹钟的时间应使用新的计数器进行存储,与正常的计时互不干扰。2 与正常计时状态的显示切换。可以设定一个按键,用于选择是将计时时间还是将闹钟时间状态送动态显示模块。3 应实现一个比较模块,当计时到与闹钟时间相等时

7、,则驱动扬声器鸣叫。4 闹钟响声应限定在一定时间内,比如一分钟,且在这段时间内应随时可以通过按键取消闹时状态(扬声器停止鸣叫)。将上述6个功能模块分别加以实现,再连接成为顶层原理图,编译后锁定管脚下载验证结果的正确性。整体电路连接图:各元器件连接图或VHDL程序:(1) cnt24:(2) cnt60m (3) cnt60s(4) v24jingzhilibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity v24jingzhi is port( clk,epet:in std_logic;

8、jh,jm:buffer std_logic_vector(3 downto 0);end v24jingzhi;architecture beha of v24jingzhi isbegin process(clk) begin if(rising_edge(clk) and epet=1)then if(jm=0011 and jh=0010)then jm=0000;jh=0000; else if(jm=1001)then jh=jh+1;jm=0000; else jm=jm+1; end if; end if; end if; end process;end beha;(5) v6

9、0jingzhilibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity v60jingzhi is port( clk,epet:in std_logic; jh,jm:buffer std_logic_vector(3 downto 0);end v60jingzhi;architecture beha of v60jingzhi isbegin process(clk) begin if(rising_edge(clk) and epet=1)then if(jm=1001 and jh

10、=0101)then jm=0000;jh=0000; else if(jm=1001)then jh=jh+1;jm=0000; else jm=jm+1; end if; end if; end if; end process;end beha;(6) freq_divider(7) zdbslibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity zdbs is port(mh,ml,sh,sl:in std_logic_vector(3 downto 0);sig500,sig1k:o

11、ut std_logic);end zdbs;architecture beha of zdbs isbegin sig500=1 when mh=0101and ml=1001and sh=0101and (sl=0000or sl=0010or sl=0100or sl=0110or sl=1000)else0; sig1k=1 when (mh=0000and ml=0000and sh=0000and sl=0000)else 0;end beha;(8) nzbslibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_u

12、nsigned.all;entity nzbs is port(jh,jm,nh,nm:in std_logic_vector(7 downto 0);sig1k:out std_logic);end nzbs;architecture beha of nzbs isbegin sig1k=1 when (jh=nh and jm=nm)else 0;end beha;(9) ndtsmlibrary ieee ;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; ENTITY ndtsm is port( clk,k3:i

13、n std_logic; h,m,s,nh,nm:in std_logic_vector(7 downto 0); seg7out:out std_logic_vector(6 downto 0); sel:buffer std_logic_vector(2 downto 0) );END ndtsm;ARCHITECTURE beha of ndtsm is signal key:std_logic_vector(3 downto 0); BEGIN PROCESS(clk) variable dount:std_logic_vector(2 downto 0):=000; BEGIN IF

14、(rising_edge(clk)then if(k3=0)then IF dount=101 then dount:=000; ELSE dount:=dount+1; END IF; else IF dount=011 then dount:=000; ELSE dount:=dount+1; END IF; end if; END IF; selkeykeykeykeykeykeynull; END CASE; else CASE sel IS when 000=keykeykeykeynull; END CASE; end if; END PROCESS; PROCESS (key)

15、BEGIN case key is when0000=seg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outnull; END CASE; END PROCESS; END beha;各模块连接图:(1)、计时、校时模块:(2)、分频模块:(3)、整点、闹钟报时模块:(4)、动态显示模块:五、心得体会: 通过本次数字逻辑电路的设计,我学到了很多东西,最重要的是去做好一个东西的心态,也许在你拿到题目时会觉得困难,但是只要你态度认真,一点一点去实现它,你就肯定会完成的。设计时最麻烦的就是联线了,有时候画的线和其它线重要合时会看不到,有时又会连到元器件内部难以删除,再加上电路有这么大了,显示器的界面宽度又有限,所以做起来有点麻烦,这个时候就要有足够的耐心了。从这次设计中我觉得我学到了以下东西:1.对于数字逻辑一些基本知识有了更深的了解。2.提高了对VHDL语言的应用能力。3.增强了面对困难勇于面对,勇于解决的信心。4.进一步的掌握了Quartus II开发平台的使用。5.对于时序电路的设计有了一定的深入了解。参考文献:数字逻辑电路设计(第二版) 鲍可进,赵不贿,赵念强 编著

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号