文档详情

数字电路课程设计-基于DE2的数字钟设计报告

jiups****uk12
实名认证
店铺
DOC
237KB
约27页
文档ID:40259564
数字电路课程设计-基于DE2的数字钟设计报告_第1页
1/27

题目:数字钟题目:数字钟1 1 设计要求设计要求该数字钟具有如下六种功能:(1)具有‘时’ 、 ‘分’ 、 ‘秒’的十进制数字显示(小时从 00~23)的计时器(具有清零功能和设置起始时间功能) ;(2)具有手动校时、校分、校秒的功能,利用 DE2 Key 键,分别对每一个数码管进行校时(校正模式下,时钟处于停滞状态) ,校时之后的时间可以通过开关赋给 24 小时计 数器模块和倒计时模块; (3)定时与闹钟功能,能在设定的时间发出闹铃声(用开发板上红色的 LED 灯全亮来表 示) ,程序中实现闹铃 30 秒; (4)能进行零点报时,要求发出仿中央人民广播电台的整点报时信号,即从 23 时 59 分 50 秒起,每隔 2 秒钟发出一次低音“嘟”的信号,连续 5 次,最后一次要求高音“嘀”的 信号,此信号结束即达到零点(用开发板上的绿色 LED 灯亮来表示) ; (5)设计一个秒表,显示 1%秒、60 秒、手动停止,手动清零; (6)设计一个倒计时,显示小时、分钟、秒、%1 秒,可清零,可设置起始时间2 设计分析及系统方案设计系统总共有 5 个状态,分别对应设计要求中的(1)24 小时计数器(2)时钟校准(3)闹铃(4)倒计时(5)秒表程序开始利用 50MHz 的时钟分别构造 1Hz 的时钟和 100Hz 的时钟。

先用50MHz 时钟构造模 500000 计数器,用作分频产生 100HZ 信号,然后用 100HZ信号构造模 100 计数器,用作分频产生 1HZ 信号,从而构造出周期是 1 秒和0.01 秒的时钟1) 时间显示 此部分是用 1HZ 的时钟驱动秒的个位,然后通过进位关系分别带动其余 5 位时间,从而完成时间显示功能当清零位置‘0’时,时间一直显示为 0 (2) 手动校时 此部分通过三个 DE2 的 KEY 按键来实现第一个是状态转换按键,通过 它 来将状态转换到校时状态;第二个是校准位置选择按键,通过它来选择此时校准哪一位;第三个是对所选位置进行加一的按键设置好时间之后可以通过两 个开关分别将设置好的时间送到正常显示模块和倒计时模块 (3) 闹铃功能此部分通过和手动校时部分相同的操作过程来设置闹铃,系统提供一个可以打开和关闭闹铃的开关闹铃部分的信号是一个单独的信号,对该信号的设置并不影响时钟的正常运行当闹铃的小时、分钟和秒的信号分别和时钟的小时、分钟和秒的信号对应相等时,闹铃启动,进行 30 秒的闹铃提醒4) 零点报时在正常显示 24 小时的状态中,当时间信号运行到 23:59:50 时,开始零点报时,程序中以驱动绿色 LED 灯亮来代表。

5) 秒表功能 此部分由 100HZ 的时钟驱动%1 秒位,通过进位关系分别带动其余 7 位时 间完成计时功能秒表的信号是一个单独的信号,使用秒表并不影响时钟的正 常运行对秒表可以进行清零和暂停操作,通过两个开关来实现 (6)倒计时功能 此部分就是 24 小时正常显示模块的逆过程用 100HZ 的时钟驱动%1 秒的 个位,然后通过退位关系分别带动其余 7 位完成倒计时功能倒计时的信号为 独立的信号,使用倒计时并不影响时钟的正常运行倒计时设有清零位,用开 关控制 数字钟原理框图如下:3 系统以及模块硬件电路设计(1)输入信号clk0:系统时钟(:系统时钟(50MHZ)) state:状态转换按键:状态转换按键 positionselect:位置选择按键:位置选择按键 jiayi:校准、设闹钟时对所选的位进行加一的按键:校准、设闹钟时对所选的位进行加一的按键 queding:校时之后的确定开关:校时之后的确定开关 queding1:设置倒计时之后再确定开关:设置倒计时之后再确定开关 kainaozhong:闹钟开关控制:闹钟开关控制 qingling: 秒表清零开关秒表清零开关 zanting:秒表暂停开关:秒表暂停开关 qingling1: 正常显示的清零开关正常显示的清零开关 qingling2:倒计时的清零开关:倒计时的清零开关(2)输出信号输出到数码管显示:输出到数码管显示: bighour:out std_logic_vector(6 downto 0); --时针十位时针十位 smallhour:out std_logic_vector(6 downto 0); --时针个位时针个位 bigminute:out std_logic_vector(6 downto 0); --分针十位分针十位 smallminute:out std_logic_vector(6 downto 0); --分针个位分针个位 bigsecond:out std_logic_vector(6 downto 0); --秒针十位秒针十位 smallsecond:out std_logic_vector(6 downto 0); --秒针个位秒针个位 bigpercentsecond:out std_logic_vector(6 downto 0); --%1 秒十位秒十位 smallpercentsecond:out std_logic_vector(6 downto 0); --%1 秒个位秒个位 lednaozhong ::LED 代表闹铃输出代表闹铃输出 baoshi:零点报时指示灯:零点报时指示灯 1 baoshi1:零点报时指示灯:零点报时指示灯 2开发系统模式以及管脚定义如下:4 系统的 VHDL 设计--------------------------------------------------- --------------------------定义库定义库 --------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; --------------------------------------------------- --------------------------定义实体定义实体 --------------------------------------------------- entity homework is port( -----------------------------------------------------------------输入信号输入信号 --------------------------------------------- --1/系统时钟系统时钟 clk0:in std_logic; --2/状态转换按键状态转换按键 state:in std_logic; --3/校准时进行位置选择校准时进行位置选择 的按键的按键 positionselect:in std_logic; --4/校准、设闹钟时对所选的位进行加一的按键校准、设闹钟时对所选的位进行加一的按键 jiayi:in std_logic; --5/校时之后确定开关(赋给正常显示模块)校时之后确定开关(赋给正常显示模块) queding:in std_logic; --6/设置倒计时之后再确定开关设置倒计时之后再确定开关 queding1:in std_logic; --7/闹钟开关控制闹钟开关控制 kainaozhong:in std_logic; --8/秒表清零开关秒表清零开关 qingling:in std_logic; --9/秒表暂停开关秒表暂停开关 zanting:in std_logic; --10/正常显示的清零开关正常显示的清零开关 qingling1:in std_logic; --11/倒计时的清零开关倒计时的清零开关 qingling2:in std_logic; ----------------------------------------------------------------------------------------------------------输出信号输出信号 ----------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------输出到数码管显示输出到数码管显示 ----------------------------------------------------------------- bighour:out std_logic_vector(6 downto 0); --时针十位时针十位 smallhour:out std_logic_vector(6 downto 0); --时针个位时针个位 bigminute:out std_logic_vector(6 downto 0); --分针十位分针十位 smallminute:out std_logic_vector(6 downto 0); --分针个位分针个位 bigsecond:out std_logic_vector(6 downto 0); --秒针十位秒针十位 smallsecond:out std_logic_vector(6 downto 0); --秒针个位秒针个位 bigpercentsecond:out std_logic_vector(6 downto 0); --%1 秒十位秒十位 smallpercentsecond:out std_logic_vector(6 downto 0); --%1 秒个位秒个位 -------------------------------------------------------------------LED 代表闹铃输出代表闹铃输出 lednaozhong:out std_logic_vector(17 downto 0); --零点报时指示灯零点报时指示灯 1 baoshi:out std_logic_vector(7 downto 0);--零点报时指示灯零点报时指示灯 2 baoshi1:out std_logic 。

下载提示
相似文档
正为您匹配相似的精品文档