多功能数字钟的课程设计.docx
文本预览下载声明
江苏大学 数字逻辑课程设计 多功能数字钟的设计 学院: xxxxxxxxxxxxxxx专业班级: xxxxxxxxxxxx 学号: xxxxxxxxxxxxxxxx姓名:xxxxxxxxxxxxxxxxx指导老师: xxxxxxxxxxxx 课程设计时间: xxxxxxxxx1.1 设计任务及要求(1)拥有正常的时、分、秒计时功能。(2)能利用实验板上的按键实现校时、校分及秒清零功能。(3)能利用实验板上的扬声器做整点报时。(4)有闹钟功能。(5)采用层次化设计方法进行设计。(6)完成全部电路设计后在实验板上下载,验证设计课题的正确性。1.2 总体设计框图1.3 设计方案根据总体的设计框图,将整个系统分为6个模块来实现,分别是计时模块、校时模块、整点报时模块、分频模块及闹钟模块。将6个功能模块分别加以实现,再连接生成顶层原理图,编译后锁定管脚下载验证结果的正确性。计时模块使用一个二十四进制和两个六十进制的计数器级联,构成数字钟的基本框架。二十四进制计数器用于计时,六十进制计数器用于计分和秒。只要给秒计数器一个1Hz的时钟脉冲,则可以进行正常计时。分计数器以秒计数器的进位作为计数脉冲,小时计数器以分计数器的进位作为计数脉冲。校时模块此模块要求实现校时、校分及秒清零功能。可以选择实验板上的3个脉冲按键进行锁定。注意点:校分时,分计数器的计数不应对小时位产生影响,因而需要屏蔽此时分计数器的进位信号以防止小时计数器计数。按键“抖动”消除“抖动”是指一次按键是的弹跳现象,用D触发器进行消抖。因为D触发器为边沿触发,在除去时钟边沿到来前一瞬间之外的绝大部分时间都不接受输入,自然消除了抖动。计时采用1Hz的脉冲驱动计数器计数,而校对时间时应该选用相对较高频率的信号驱动计数器以达到快速校对时间的目的。且两种计数脉冲之间需要进行相应的选择切换。整点报时模块要求:计时到59分50秒时,每两秒(52、54、56、58秒)一次低音报时,整点时进行高音报时。分频模块此模块用来获得多个不同频率的脉冲信号。所有需要的脉冲信号都可以通过一个基准频率分频器生成。基准频率分频器就是一个进制很大的计数器,利用计数器的分频功能从不同的输出位得到所需要的脉冲信号。动态现实模块时间的显示要用到8个数码管(为了方便,此次设计采用8个数码管,小时与分钟,分钟与秒之间用横杆分隔开来)。在动态方式下,所有的数码管对应同一组七段码。利用人的视觉缺陷,让扫描频率大于24Hz(人的视觉暂留频率)就可以是显示效果相对稳定,扫描频率越高,显示越稳定。闹钟模块要求数字钟计时到所设定的任意时间时均能驱动扬声器报时。设计时注意:设定闹钟的时间应使用新的计数器进行存储,与正常的计时互不干扰。设计一个按键完成与正常计时状态显示切换。实现一个比较模块,当计时与闹时相等时,驱动扬声器报时。闹钟相声应限定在一个范围之内。2.1 VHDL设计与仿真(1)计时模块24进制计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt24 isport(clk:in std_logic; ql,qh:out std_logic_vector(3 downto 0); tc:out std_logic); --进位信号end cnt24;architecture one of cnt24 isbegin process(clk) variable qli,qhi:std_logic_vector(3 downto 0); begin if clkevent and clk=1 then qli:=qli+1; tc=0; if qli=1010 then qhi:=qhi+1; qli:=0000; end if; if (qhi=0010)and(qli=0100) then tc=1; qhi:=0000; qli:=0000; end if; end if; ql=qli; --低位 qh=qhi; --高位 end process; end one; 仿真图60进制计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt60 is port( clk,clr:in std_logic; qh,ql:out std_logic_vector(3 downto 0); tc:out std_logic); --进位信号 end cnt60; architecture one of cnt60 is b
显示全部