文档详情

基于FPGA语音数字时钟系统.doc

发布:2018-08-21约1.22万字共23页下载文档
文本预览下载声明
基于FPGA的语音数字时钟系统设计 设计要求: 计时功能:这是这个计时器设计的基本功能,每隔一分钟记一次时间并在屏幕上显示出当前时间。 闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器会发出报时声音。 设置新的计时器时间:用户用数字键0~9输入新的时间,然后按下TIME健确认。 设置新的闹钟时间:用户用数字键0~9输入新的闹钟时间,然后按下ALARM健确认。 显示所设置的闹钟时间:在正常记时显示状态下,用户直接按下ALARM健,则显示器上显示已经设置好的闹钟时间。 2.设计思路: 控制器命名为Alarm_controller,外部端口 各个端口定义: Clk外部时钟信号 Reset复位信号 Alarm_botton闹钟信号,当其为高电平时,表示用户按下 Time_botton时间信号,当其为高电平时,表示用户按下 Key键盘信号,当其为高电平时,表示用户按下0~9 Load_new_a读取新的闹钟时间,高电平有效 Load_new_c控制设置新的时间,高电平有效 Show_new_time读取并显示新的时间,高电平有效 Show_a当Show_new_time为低电平时,根据Show_a控制当前是显示闹钟时间还是时钟时间 根据端口的设置以及控制要求,设定如下5个状态 S0:闹钟正常计数状态 S1:键盘输入状态,当用户按下键盘,即进入此状态,当一段时间后用户没有按下Alarm或者Time确认,则自动返回S0状态 S2:设定闹钟状态,当用户按完键盘,按下Alarm键时进入此状态 S3:设定时间状态,当用户按完键盘,按下Time键时进入此状态 S4:显示闹钟时间,当用户直接按下Alarm键时,进入此状态 在S4状态下,用户按下Alarm键时钟即显示闹钟时间,经过一段延时之后,时钟从新恢复S0状态。 以下是程序流程表 当前状态 控制输入 下一状态 控制输出 S0 Key=’1’ S1 Show_new_time=’1’ Alarm_botton=’1’ S2 Show_a=’1’ else S0 Null S1 Key=’1’ S1 Show_new_time=’1’ Alarm_botton=’1’ S2 Load_new_a=’1’ Time_botton=’1’ S3 Load_new_c=’1’ 超时 是 S0 Null 否 S1 Show_new_time=’1’ S2 Alarm_botton=’1’ S2 Load_new_a=’1’ else S0 Null S3 Time_botton=’1’ S3 Load_new_c=’1’ else S0 Null S4 Alarm_botton=’1’ S4 Show_a 超时 是 S0 Null 否 S4 Show_a并等待 程序: 程序包P_alarm封装定义 library IEEE; use IEEE.std_logic_1164.all; package P_alarm is subtype t_digital is integer range 0 to 7; subtype t_short is integer range 0 to 65535; type t_clock_time is array(3 downto 0) of T_digital; type t_display is array(3 downto 0) of Std_logic_vector(6 downto 0); type seg7 is array(0 to 7) of Std_logic_vector(6 downto 0); constant Seven_seg:seg7:=(,--0 ,--1 ,--2 ,--3 ,--4 ,--5 ,--6 ,--7 ,--8 ,--9); end package P_alarm;--程序包体封装结束 library IEEE; use IEEE.std_logic_1164.all; use WORK.P_alarm.all; ENTITY Alarm_contorller is port(Key,Alarm_botton,Time_botton,
显示全部
相似文档