基于FPGA的语音数字时钟系统 联系客服

发布时间 : 星期六 文章基于FPGA的语音数字时钟系统更新完毕开始阅读b9ffc0889989680203d8ce2f0066f5335a816784

百度文库

基于FPGA的语音数字时钟系统设计

1. 设计要求:

(1) 计时功能:这是这个计时器设计的基本功能,每隔一分钟记一次时间并在屏幕上显示出当前时间。

(2) 闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器会发出报时声音。

(3) 设置新的计时器时间:用户用数字键0~9输入新的时间,然后按下TIME健确认。

(4) 设置新的闹钟时间:用户用数字键0~9输入新的闹钟时间,然后按下ALARM健确认。

(5) 显示所设置的闹钟时间:在正常记时显示状态下,用户直接按下ALARM健,则显示器上显示已经设置好的闹钟时间。 2.设计思路:

控制器命名为Alarm_controller,外部端口

各个端口定义: (1) Clk外部时钟信号

1

百度文库

(2) Reset复位信号

(3) Alarm_botton闹钟信号,当其为高电平时,表示用户按下 (4) Time_botton时间信号,当其为高电平时,表示用户按下 (5) Key键盘信号,当其为高电平时,表示用户按下0~9 (6) Load_new_a读取新的闹钟时间,高电平有效 (7) Load_new_c控制设置新的时间,高电平有效 (8) Show_new_time读取并显示新的时间,高电平有效

(9) Show_a当Show_new_time为低电平时,根据Show_a控制当前是显示闹钟时间还是时钟时间

根据端口的设置以及控制要求,设定如下5个状态 S0:闹钟正常计数状态

S1:键盘输入状态,当用户按下键盘,即进入此状态,当一段时间后用户没有按下Alarm或者Time确认,则自动返回S0状态 S2:设定闹钟状态,当用户按完键盘,按下Alarm键时进入此状态 S3:设定时间状态,当用户按完键盘,按下Time键时进入此状态 S4:显示闹钟时间,当用户直接按下Alarm键时,进入此状态 在S4状态下,用户按下Alarm键时钟即显示闹钟时间,经过一段延时之后,时钟从新恢复S0状态。 以下是程序流程表

当前状态 S0 2

控制输入 Key=’1’ Alarm_botton=’1’ else Key=’1’ Alarm_botton=’1’ 下一状态 S1 S2 S0 S1 S2 控制输出 Show_new_time<=’1’ Show_a<=’1’ Null Show_new_time<=’1’ Load_new_a<=’1’ 百度文库

S1 Time_botton=’1’ 超时 S2 S3 S4 是 否 Alarm_botton=’1’ else Time_botton=’1’ else Alarm_botton=’1’ 超时 是 否 S3 S0 S1 S2 S0 S3 S0 S4 S0 S4 Load_new_c<=’1’ Null Show_new_time<=’1’ Load_new_a<=’1’ Null Load_new_c<=’1’ Null Show_a Null Show_a并等待 程序:

程序包P_alarm封装定义 library IEEE; use 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:=(\ \ \ \ \ \ \ \

3

百度文库

\ \end package P_alarm;--程序包体封装结束 library IEEE;

use Alarm_contorller is

port(Key,Alarm_botton,Time_botton,clk,reset:in std_logic; Load_new_a,Load_new_c,Show_new_time,Show_a:out std_logic);

end Alarm_controller;

ARCHITECTURE art of Alarm_controller is type t_state is(s0,s1,s2,s3,s4);--5种工作状态 constant key_timeout:t_short:=900;--键盘延时时间

constant show_alarm_timeout:t_short:=900;--alarm jian yan shi 900ns signal curr_state:t_state;--zhuang tai ji dang qian zhuang tai wei signal next_state:t_state;--zhuang tai ji xia yi gong zuo wei signal counter_k:t_state;--jian pan

signal enable_count_k:std_logic;--jian pan chao shi yun xu signal count_k_end:std_logic;--jian pan chao shi signal counter_a:t_short;--alarm jian

signal enable_count_a:std_logic;--alarm jian chao shi yun xu signal count_a_end:std_logic;--alarm jian chao shi jie shu begin

4