江苏大学数字逻辑课程设计数字时钟.doc_第1页
江苏大学数字逻辑课程设计数字时钟.doc_第2页
江苏大学数字逻辑课程设计数字时钟.doc_第3页
江苏大学数字逻辑课程设计数字时钟.doc_第4页
江苏大学数字逻辑课程设计数字时钟.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

JIANGSU NIVERSITY课程设计报告学院:计算机科学与通信工程班级:网络工程姓名:学号:指导老师:报告日期:2016年1月15日目 录.设计目的1.设计内容1.设计原理1.具体实现2(1)顶层图2(2)代码21.24进制:22. 60进制:33.动态显示:44. 分频器:55. 二路选择器:66.整点报时:77.闹钟设置:88.alarmcmp:99.消抖:9.心得体会10.设计目的 设计一个拥有:正常的时分秒计数功能,实现校时校分清零的功能,利用扬声器实现整点报时和闹钟功能的多功能数字钟。.设计内容 整个系统分成七个模块进行:计时模块、校时模块、整点报时模块、分频模块、动态扫描模块,动态显示模块、闹钟模块。l、能进行正常的时、分、秒计时功能,分别由6个数码显示24小时、60分钟的计数器显示。2、能利用实验系统上的按钮实现“校时”、“校分”功能;3、能利用扬声器做整点报时:4、定时闹钟功能5、用层次化设计方法设计该电路,用硬件描述语言编写各个功能模块。6、报时功能。报时功能用功能仿真的仿真验证,可通过观察有关波形确认电路设计是否正确。.设计原理1 计时模块:使用一个二十四进制和两个六十进制计数器级联,构成数字钟的基本框架。二十四进制用于计时,六十进制用于计分和计秒。给秒计数器一个1hz的时钟脉冲,分计数器以秒计数器的进位作为计数脉冲,时计数器以分计数器的进位作为计数脉冲。2 校时模块:分别按下校时键和校分键,计数器增至所需时分数,按下清零键,秒计数器归零。此处注意事项:按键“抖动”消除。利用触发器,如D触发器,利用D触发器边沿触发的特性,在除去时钟边沿来之前一瞬间之外的绝大部分时间都不能接受输入,从而实现“消抖”。校分时,分计数器计数不应对小时位产生影响,因而需要屏蔽此时分计数器的进位信号。需要设计二路选择器对于正常计数以及校时进行选择。3 整点报时模块:计时到59分50秒,每两秒一次低音报时,整点进行高音报时,将报时信号接到实验板上的扬声器输出。、4 分频模块:通过不同进制的计数将1khz的时钟脉冲分频出不同频率的时钟脉冲,以实现系统对多频率时钟信号的需求。5动态显示模块:利用6个数码管,将时分秒按照高低位输出到数码管上。其中扫描频率超过人眼视觉暂留频率就可以实现六个管同时显示的视觉效果。6 闹钟模块:需要新的计数器进行定时闹钟信号的存储,与正常计时状态实现切换,设计一个比较模块使闹钟和计时相等时,开始鸣叫,同时需要一个按键能够控制闹钟的开关。.具体实现(1)顶层图图一:顶层图(2)代码1.24进制:时计数器:模块图如图。24进制无进位计数器,当计数信号计到23后再检测到计数信号时会自动归零。带清零,clk输入为分秒进位相与的结果。qh为十位,ql为个位。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt24 isport(clk:in std_logic; qh,ql:out std_logic_vector(3 downto 0); tc:out std_logic);end cnt24;architecture one of cnt24 is begin process(clk) variable iql,iqh:std_logic_vector(3 downto 0):=0000; begin if clkevent and clk=1 then iql:=iql+1; if iql=1010 then iqh:=iqh+1; iql:=0000; end if; if (iqh=0010)and(iql=0100) then iqh:=0000; iql:=0000; end if; end if; ql=iql; qh=iqh; end process; end one; 2. 60进制: 秒计数器模块设计:六十进制带进位计数器,可清零,clk输入信号为1Hz脉冲,当ql计满9后qh增加1,当ql满9且qh记满5,ql、qh同时归零,co输出为高电平。qh为十位ql为个位。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt60 is port(clk,clr:in std_logic; ql,qh:buffer std_logic_vector(3 downto 0); tc:out std_logic );end cnt60;architecture behavor of cnt60 isbegin tc=0 when(clk=1 and ql=0000 and qh=0110) else 1; process(clk,clr,ql,qh)variable iql,iqh:std_logic_vector(3 downto 0); begin if(clr=0or (iql=0000 and iqh=0110)then iql:=0000; iqh:=0000; else if(clkevent and clk=1)then iql:=iql+1; if(iql=1010)then iql:=0000; iqh:=qh+1; end if; end if;end if;ql=iql;qh=iqh;end process;END behavor;分计数器同上。注:不同之处为分的clk输入信号为秒的进位信号。3.动态显示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY dtsm is port( clk:in std_logic; h:in std_logic_vector(7 downto 0); m:in std_logic_vector(7 downto 0); s:in std_logic_vector(7 downto 0); seg7out:out std_logic_vector(6 downto 0); sel:buffer std_logic_vector(2 downto 0) );END dtsm;ARCHITECTURE beha of dtsm is signal key:std_logic_vector(3 downto 0); BEGIN PROCESS(clk) variable dount:std_logic_vector(2 downto 0):=000; BEGIN IF(rising_edge(clk)then IF dount=111 then dount:=000; ELSE dount:=dount+1; END IF; END IF; selkeykeykeykeykeykeykeykeynull; END CASE; END PROCESS; PROCESS (key) BEGIN case key is when0000=seg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outnull; END CASE; END PROCESS; END beha;4. 分频器:模块图如图。由四个分频器构成,输入信号in_clk为1024Hz脉冲信号。把输入的1024Hz信号分频为四个脉冲信号,即1Hz的秒脉冲,4Hz的校时、校分脉冲,64Hz的消抖脉冲,以及512Hz的蜂鸣器低音输入。:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY freq_divider IS PORT(clk : IN STD_LOGIC; hz1 : OUT STD_LOGIC; hz4 : OUT STD_LOGIC; hz64 : OUT STD_LOGIC; hz512 : OUT STD_LOGIC);END freq_divider;ARCHITECTURE rtl OF freq_divider IS SIGNAL count : STD_LOGIC_VECTOR(9 DOWNTO 0);BEGIN PROCESS(clk) BEGIN IF (clkevent and clk=1) THEN IF(count=1111111111) THEN Count 0); ELSE Count = count +1; END IF ; END IF ; END PROCESS; hz512 = count(0); hz64 = count(3); hz4 = count(7); hz1 = count(9);END rtl;5. 二路选择器:模块图如图。用以进行正常计时和校时/分的选择。alarm为经过消抖的校时/分信号。当按键未曾按下时,即校时/分信号没有到来时,二选一选择器会选择输出a(正常计时输入)信号,否则当alarm按键按下时输出y为校时/分输入信号4Hz。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity sel2 isport(sel:in std_logic; ip: in std_logic; a,b:out std_logic);end sel2;architecture beh of sel2 isbegin process(sel) begin if(sel=0)then a=ip; else b=ip; end if; end process;end beh;6.整点报时:整点报时及闹时:模块图如图在59分52秒、54秒、56秒、58秒给扬声器赋以低音512Hz信号,在00分00秒给扬声器赋以高音1024Hz信号,当系统时间与闹铃时间相同时给扬声器赋以高音1024Hz信号。闹时时间为一分钟。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity zdbs isport(mh,ml,sh,sl:in std_logic_vector(3 downto 0); sig500,sig1k: out std_logic);end zdbs;architecture behavior of zdbs isbegin sig500=1 when mh=0101and ml=1001and sh=0101and( sl=0000or sl=0010 or sl=0100or sl=0110or sl=1000) else 0;sig1k=1 when mh=0000and ml=0000and sh=0000and sl=0000 else 0;end behavior;7.闹钟设置:闹钟时间的设定:模块图如图。由开关K1选择闹钟和时间。由S1、S2脉冲键调节时、分。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity alarmset isport(sel:in std_logic; hclo,mclo,sclo,halr,malr,salr: in std_logic_vector(7 downto 0); h,s,m:out std_logic_vector(7 downto 0);end alarmset;architecture beh of alarmset isbegin process(sel) begin if(sel=0)then h=hclo; m=mclo; s=sclo; else h=halr; m=malr; s=00000000; end if; end process;end beh;8.alarmcmp:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity alarmcmp isport( h,m,halr,malr: in std_logic_vector(7 downto 0); stop:in std_logic; sig:out std_logic); end alarmcmp;architecture beh of alarmcmp is begin process(h,m,halr,malr,stop)begin if stop=

温馨提示

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

评论

0/150

提交评论