电子钟与闹铃设计:VHDL实现的多功能数字钟

版权申诉
0 下载量 110 浏览量 更新于2024-06-27 收藏 92KB DOC 举报
本资源是一份关于VHDL课程设计的详细文档,涉及电子钟和闹钟系统的实现。设计目标包括实时显示小时、分钟和秒,具备手动校时功能,以及按时和闹铃功能。系统由多个模块构成,如CNT60_A_SEC、CNT60_A_MIN和CNT24_A_HOUR,分别负责不同时间单位的计数和显示。其中,CNT60_A_SEC负责秒的计数和显示,并触发整点报时的"嘟"、"嘀"声音;CNT60_A_MIN进一步处理分钟计数,并增加闹铃触发;CNT24_A_HOUR则对小时进行24进制计数,同时管理闹铃声音。 顶层文件包含了关键的输入信号,如clk_1khz和clk_1hz,前者为闹铃模块提供1kHz时钟信号,用于控制闹铃声音的变化,后者作为计时模块的基础时钟,每秒计数一次。用户可以通过key_slt、key_alarm、sec_set、min_set和hour_set等按键来选择设置对象、校时或定时,这些按键输出脉冲信号。 设计中还特别强调了两个时钟信号的使用,即1Hz和1kHz,它们确保系统的时钟和闹钟功能正常运作。此外,PWM_OUT模块负责生成PWM信号,根据不同的触发条件,如秒、分、时的变化,输出"嘟"、"嘀"和闹铃的声音。 该文档详细描述了每个模块的功能和接口,适合学习VHDL编程的学生进行实践操作,深入理解数字时钟系统的设计和实现原理。通过这份资料,学生可以掌握如何使用VHDL语言来构建复杂的时钟系统,并且了解实际工程中的组件交互和功能设计。
2023-02-27 上传
数字钟的设计 一、系统功能概述 (一)、系统实现的功能: 1、具有"时"、"分"、"秒"的十进制数字显示(小时从00 ~ 23)。 2、具有手动校时、校分、校秒的功能。 3、有定时和闹钟功能,能够在设定的时间发出闹铃声。 4、能进行整点报时。从59分50秒起,每隔2秒发一次低音"嘟"的信号,连续5次,最 后一次为高音"嘀"的信号。 (二)、各项设计指标: 1、显示部分采用的6个LED显示器,从高位至低位分别显示时、分、秒。 2、有一个设置调闹钟定时时间、正常时间的按钮,选择调的对象。 3、有三个按钮分别调时、分、秒的时间。 4、有一个按钮用作开启/关闭闹铃。 5、另外需要两个时钟信号来给系统提供脉冲信号,使时钟和闹钟正常工作,分别为 1Hz、1kHz的脉冲。 二、系统组成以及系统各部分的设计 1、系统结构描述 //要求:系统(或顶层文件)结构描述,各个模块(或子程序)的功能描述; 1. 系统的顶层文件: 1. 顶层文件图:(见下页) 2. 各模块的解释: (1)、7个输入量clk_1khz、clk_1hz、key_slt、key_alarm、sec_set、min_set、 hour_set: 其中clk_1khz为闹铃模块提供时钟,处理后能产生"嘟"、"嘀"和变化的闹铃声音 ;clk_1hz为计时模块提供时钟信号,每秒计数一次;key_slt选择设置对象:定时或 正常时间;key_alarm能够开启和关闭闹铃;sec_set、min_set、hour_set用于设置 时间或定时,与key_slt相关联。各按键输出为脉冲信号。 (2)、CNT60_A_SEC模块: 这个模块式将clk_1hz这个时钟信号进行60进制计数,并产生一个分钟的触发信号 。该模块能将当前计数值实时按BCD码的格式输出。将该输出接到两位LED数码后能时 时显示秒的状态。通过alarm_clk可以选择设置对象为时间还是定时值。在设置时间 模式上,key上的一个输入脉冲可以将clk的输入信号加一。在设置定时模式上,key 上的脉冲只修改定时值,不影响时间脉冲clk的状态。 同时该模块具有两个输出口out_do、out_di来触发整点报时的"嘟"、"嘀"声音。 (3)、CNT60_A_MIN模块: 这个模块式将CNT60_A_SEC的输出信号进行60进制计数,并产生一个时位的触发信 号。该模块能将当前计数值实时按BCD码的格式输出。将该输出接到两位LED数码后能 时时显示分的状态。通过alarm_clk可以选择设置对象为时间还是定时值。在设置时 间模式上,key上的一个输入脉冲可以将clk的输入信号加一。在设置定时模式上,k ey上的脉冲只修改定时值,不影响时间脉冲clk的状态。 同时该模块具有三个输出口out_do、out_di、out_alarm来触发整点报时的"嘟"、 "嘀"、闹铃声音。 (4)、CNT24_A_HOUR模块: 这个模块式将CNT60_A_MIN的输出信号做24进制计数。该模块能将当前计数值实时 按BCD码的格式输出。将该输出接到两位LED数码后能时时显示时的状态。通过alarm _clk可以选择设置对象为时间还是定时值。在设置时间模式上,key上的一个输入脉 冲可以将clk的输入信号加一。在设置定时模式上,key上的脉冲只修改定时值,不影 响时间脉冲clk的状态。 同时该模块具有一个输出口out_alarm来触发整点报时的闹铃声音。 (5)、PWM_OUT模块: 该模块为PWM产生模块,通过EN可开启和关闭PWM输出。模块根据CLK信号二分频产 生的高低音,并组合,能输出三种声音状态——"嘟"、"嘀"、闹铃。而该三种声音要被 秒、分、时的输出触发才能输出PWM。 2. 系统各个模块的VHDL程序: (1)、CNT60_A_SEC模块: 程序源代码如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt60_a_sec is port( clk,clr,enb: in std_logic;-- clk:时钟输入信号,clr:清零端,enb:使能端 key: in std_logic; --输入按键脉冲,调整闹铃定时或时间 alarm_clk: in std_logic;--1:alarm 0:clk -- 设置模式选择:闹铃调节模式、时间调节模式 qout_sl: out std_logic_vector(3 downto 0); --显示输出秒的低位 qout_sh: out std_logic_vector(3 downto 0);--显示输出秒的高位 co: out std_logic; --进位输出,触发分计