1、 多功能数字钟的设计与实现多功能数字钟的设计与实现 学院名称学院名称: 计算机学院计算机学院 专业班级专业班级: 通信工程通信工程 学生姓名学生姓名: 学生学号学生学号: 指导老师指导老师: 2012 年年 6 月月 25 日日 1 一、一、 设计任务及要求:设计任务及要求: (1) 拥有正常的时、分、秒计时功能。 (2) 能利用实验板上的按键实现校时、校分及秒清零功能。 (3) 能利用实验板上的扬声器做整点报时。 (4) 闹钟功能。 (5) 在 QUARTUS 中采用层次化设计方法进行设计。 (6) 完成全部电路设计后在实验板上下载,验证设计课题的正确性。 二、二、 多功能数字钟的总体设计方
2、案多功能数字钟的总体设计方案 根据总体设计框图,可以将整个系统分成 6 个模块来实现,分别是计时模块、校时模块、整点报时模块, 分频模块,动态显示模块,闹钟模块。 设计总图: 1. 计时模块计时模块 该模块的设计相对简单,使用一个二十四进制和两个六十进制计数器级联,构成数字钟的基本框架。二十 四进制的计数器用于计时,六十进制计数器用于计分和计秒。只要给秒计数器一个 1Hz 的时钟脉冲,则可以进 行正常计时。分计数器以秒计数器的进位作为计数脉冲,小时计数器以分计数器的进位作为计数脉冲。 2 clkql30 qh30 tc cnt24 inst clk clr ql30 qh30 tc cnt60
3、 inst1 NOT inst15 VCC jm30 jm74 jh30 jh74 (24 进制计数器构成时计数器,60 进制计数器构成的秒、分计数器) 24 进制的仿真图: 3 60 进制的仿真图 以下是计时模块设计 VHDL 语言: (1)library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt24 is port(clk:in std_logic; ql,qh:out std_logic_vector(3 downto 0); tc:out std_logic); end
4、cnt24; architecture one of cnt24 is begin process(clk) variable iql,iqh:std_logic_vector(3 downto 0); begin if clkevent and clk=1 then iql:=iql+1; if iql=“1010“ then iqh:=iqh+1; iql:=“0000“; end if; 4 if (iqh=“0010“)and(iql=“0100“) then tcseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7outseg7o
5、utseg7outseg7outseg7outseg7outseg7outseg7outseg7outnull; END CASE; END PROCESS; END beha; 10 6、闹钟模块、闹钟模块 clkql30 qh30 tc cnt24 inst22 AND2 inst23 clk clr ql30 qh30 tc cnt60 inst24 AND2 inst25 VCC halr30 halr74 malr30 malr74 hz4 hz4 ahinput aminput (通过 24 进制计数器置入时信号,通过 60 进制计数器置入分信号) sel hclo70 mclo7
6、0 sclo70 halr70 malr70 salr70 h70 s70 m70 alarmset inst18 jh70 jm70 h70 s70 js70 halr70 malr70 m70 js70 selalarm (时钟闹钟信号选择模块) 以下是时钟闹钟信号选择模块设计的 VHDL 语言: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity alarmset is port(sel:in std_logic; hclo,mclo,sclo,halr,malr,salr: in std_logic_vector(7