多功能数字钟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验十一多功能数字钟
一、实验目的
1.学习系统设计方法;
2. 设计并实现一个数字钟。
二、设计要求
1.正常模式时,采用24小时制。不但显示时、分、秒,而且有上、下午显示。用A表示上午,P表示下午。
2.手动校准电路。按动时校准键HOUR,将电路置于校时状态,则计时电路可用手动方式校准,每接一下校时键,时钟计数器加1;按动分方式键MINT,将电路置于校分状态,以同样方式手动校分。
3.整点报时。仿中央人民广播电台整点报时信号,从59分50秒起每隔2秒钟发出一次低音(512Hz)“嘟”信号(信号鸣叫持续时间1秒,间隙1秒,连续5次,到达整点(00分00秒时),发一次高音(1024 HZ)“哒”信号(信号持续时间l秒。
4.闹时功能。接下置闹方式键CKSET,使电路工作于预置状态,此时显示器与时钟脱开,而与预置计数器相连,利用前面手动校时、校分方式进行预置,预置后回到正常模式。当计时计至预置的时间时,蜂鸣器发出闹钟信号,时间为一分钟,闹铃信号可以用开关键CLOSE“止闹”。正常情况下此开关键释放。
三、设计提示
1.数字钟的功能实际上是对秒信号计数。实验板上可提供不同
的时钟信号,分频后可产生秒时钟。数字钟在结构上可分为两个部分:计数器和显示器。计数器又可分为秒计数器、分计数器和小时计数器。秒计数器和分钟计数器由6进制和10进制计数器构成,小时计数器较复杂,需要设计一个24(或12)个状态的状态机实现。显示电路用6位扫描数码显示器,它的扫描时钟可以使用1KHz或10kHz时钟。分钟和小时的调整用两个按键开关实现。秒输入信号用底板上时钟信号分频后得到。
2.闹铃信号与准点报时信号可取自实验板上的振荡信号1024Hz 和2048 Hz。
3.校时、校分信号可用实验板上的振荡信号128Hz分频到8Hz 后做为快速调整时钟输入。校时时每按一次键可以伴以短促的音响。
4.时、分、秒显示之间,可利用数码管中的小数点区分,在正常计时情况下,分、秒之间的小数点也可闪动。
5.设计方框图如下图所示:
附录十:多功能数字钟设计的VHDL描述
1、通用计数器的VHDL描述
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY counter IS
GENERIC( count_value: INTEGER:=9);
PORT
(clk,clr,en : IN STD_LOGIC;
co : OUT STD_LOGIC;
count : OUT INTEGER RANGE 0 TO count_value); END counter;
ARCHITECTURE a OF counter IS
SIGNAL cnt : INTEGER RANGE 0 TO count_value; BEGIN
PROCESS (clk)
BEGIN
IF clr = '1' THEN
cnt <= 0;
ELSIF (clk'EVENT AND clk = '1') THEN
IF en = '1' THEN
IF cnt = count_value THEN
cnt <= 0;
ELSE
cnt <= cnt + 1;
END IF;
END IF;
END IF;
END PROCESS;
co<=’1’ when cnt= count_value and en = ‘1’ else ‘0’;
count <= cnt;
END a;
2、数字钟的VHDL描述
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
entity TIMER is
PORT(
scanclk,reset_in,adj_h_in,adj_m_in,set,close: in std_logic;
led_out: out std_logic_vector(6 downto 0);
scan_out: out integer range 0 to 5;
sound_out: out std_logic;
point_out: out std_logic );
end entity;
architecture rtl of TIMER IS
signal scan: integer range 0 to 5;
signal clk1s: std_logic;
signal sound,sound1,sound2,sound3: std_logic;
signal reset,adj_h,adj_m: std_logic;
signal c_h_en, c_mh_en, c_ml_en, c_sh_en : std_logic;
signal c_h_en1, c_ml_en1 : std_logic;
signal c_mh_en1 : std_logic;
signal s_h_en, s_mh_en, s_ml_en : std_logic;
signal enable,disable: std_logic;
signal s_mh,c_mh,mh,sh: integer range 0 to 5;