欢迎来到天天文库
浏览记录
ID:29945877
大小:152.00 KB
页数:12页
时间:2018-12-25
《江苏大学数字逻辑课程设计数字时钟》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、JIANGSUNIVERSITY课程设计报告学院:计算机科学与通信工程班级:网络工程姓名:学号:指导老师:报告日期 :2016年1月15日目录Ⅰ.设计目的1Ⅱ.设计内容1Ⅲ.设计原理1Ⅳ.具体实现2(1)顶层图2(2)代码21.24进制:22.60进制:33.动态显示:44.分频器:55.二路选择器:66.整点报时:77.闹钟设置:88.alarmcmp:99.消抖:9Ⅴ.心得体会10Ⅰ.设计目的设计一个拥有:正常的时分秒计数功能,实现校时校分清零的功能,利用扬声器实现整点报时和闹钟功能的多功能数字钟。Ⅱ.设计内容整个系统分成七个模块进行:计时模块、校时模块、整点报时模块、
2、分频模块、动态扫描模块,动态显示模块、闹钟模块。l、能进行正常的时、分、秒计时功能,分别由6个数码显示24小时、60分钟的计数器显示。2、能利用实验系统上的按钮实现“校时”、“校分”功能;3、能利用扬声器做整点报时:4、定时闹钟功能5、用层次化设计方法设计该电路,用硬件描述语言编写各个功能模块。6、报时功能。报时功能用功能仿真的仿真验证,可通过观察有关波形确认电路设计是否正确。Ⅲ.设计原理1计时模块:使用一个二十四进制和两个六十进制计数器级联,构成数字钟的基本框架。二十四进制用于计时,六十进制用于计分和计秒。给秒计数器一个1hz的时钟脉冲,分计数器以秒计数器的进位作为计数脉
3、冲,时计数器以分计数器的进位作为计数脉冲。2校时模块:分别按下校时键和校分键,计数器增至所需时分数,按下清零键,秒计数器归零。此处注意事项:①按键“抖动”消除。利用触发器,如D触发器,利用D触发器边沿触发的特性,在除去时钟边沿来之前一瞬间之外的绝大部分时间都不能接受输入,从而实现“消抖”。②校分时,分计数器计数不应对小时位产生影响,因而需要屏蔽此时分计数器的进位信号。③需要设计二路选择器对于正常计数以及校时进行选择。3整点报时模块:计时到59分50秒,每两秒一次低音报时,整点进行高音报时,将报时信号接到实验板上的扬声器输出。、94分频模块:通过不同进制的计数将1khz的时钟
4、脉冲分频出不同频率的时钟脉冲,以实现系统对多频率时钟信号的需求。5动态显示模块:利用6个数码管,将时分秒按照高低位输出到数码管上。其中扫描频率超过人眼视觉暂留频率就可以实现六个管同时显示的视觉效果。6闹钟模块:需要新的计数器进行定时闹钟信号的存储,与正常计时状态实现切换,设计一个比较模块使闹钟和计时相等时,开始鸣叫,同时需要一个按键能够控制闹钟的开关。Ⅳ.具体实现(1)顶层图图一:顶层图(2)代码1.24进制:时计数器:模块图如图。24进制无进位计数器,当计数信号计到23后再检测到计数信号时会自动归零。带清零,clk输入为分秒进位相与的结果。qh为十位,ql为个位。libr
5、aryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycnt24is9port(clk:instd_logic;qh,ql:outstd_logic_vector(3downto0);tc:outstd_logic);endcnt24;architectureoneofcnt24isbeginprocess(clk)variableiql,iqh:std_logic_vector(3downto0):="0000";beginifclk'eventandclk='1'theniql:=
6、iql+1;ifiql="1010"theniqh:=iqh+1;iql:="0000";endif;if(iqh="0010")and(iql="0100")theniqh:="0000";iql:="0000";endif;endif;ql<=iql;qh<=iqh;endprocess;endone;2.60进制:秒计数器模块设计:六十进制带进位计数器,可清零,clk输入信号为1Hz脉冲,当ql计满9后qh增加1,当ql满9且qh记满5,ql、qh同时归零,co输出为高电平。qh为十位ql为个位。libraryieee;useieee.std_logic_1164.a
7、ll;useieee.std_logic_unsigned.all;entitycnt60isport(clk,clr:instd_logic;ql,qh:bufferstd_logic_vector(3downto0);tc:outstd_logic);9endcnt60;architecturebehavorofcnt60isbegintc<='0'when(clk='1'andql="0000"andqh="0110")else'1';process(clk,clr,ql,qh)variableiql,iqh
此文档下载收益归作者所有