77范文网 - 专业文章范例文档资料分享平台

VHDL设计的12进制可调时钟带闹铃功能 - 图文(2)

来源:网络收集 时间:2019-04-23 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

process(sc_c,add_min) --此进程是进行60分计时 variable cnt_60m_v:integer range 0 to 59 ; --存放分计时的中间变量,最后传到分输出端cnt_60m begin

if(pause='0') then

selector_min<=sc_c; --当计时/ 调整信号为0时正常计时,否则按键调整时间 else

selector_min<=add_min; end if;

if(selector_min 'event and selector_min='1') then if(cnt_60m_v=59) then cnt_60m_v:=0;

min_c<='1'; --分的进位信号 else

cnt_60m_v:=cnt_60m_v+1; min_c<='0'; end if; end if;

cnt_60m<=cnt_60m_v; --将计数的中间变量传给分输出端 end process;

process(min_c,selector_hour) --此进程是进行12小时计时 variable cnt_12h_v:integer range 0 to 11; --存放时的中间变量,最后传到分输出端cnt_60h begin

if(pause='0') then

selector_hour<=min_c; else

selector_hour<=add_hour; end if;

if(selector_hour 'event and selector_hour='1') then if(cnt_12h_v=11) then cnt_12h_v:=0; else

cnt_12h_v:=cnt_12h_v+1; end if; end if;

cnt_12h<=cnt_12h_v; end process;

end architecture one;

(3)、设置闹铃时间模块

library ieee; --设置闹铃时间,定时闹铃 use ieee.std_logic_1164.all;

entity setalarmtime is

port(set_alarm,set_sc,set_min,set_hour:in std_logic; sc_data,min_data: out integer range 0 to 59; hour_data:out integer range 0 to 11); end entity ;

architecture one of setalarmtime is begin

process(set_sc)

variable set_sc_data:integer range 0 to 59; --定义局部变量 begin

if(set_alarm='1') then

if(set_sc 'event and set_sc='1') then if(set_sc_data=59)then set_sc_data:=0; else

set_sc_data:=set_sc_data+1; --设置秒 end if; end if; end if;

sc_data<=set_sc_data; --秒设置好赋值给输出端 end process;

process(set_min)

variable set_min_data:integer range 0 to 59; begin

if(set_alarm='1') then

if(set_min 'event and set_min='1') then if(set_min_data=59)then set_min_data:=0; else

set_min_data:=set_min_data+1; --设置分 end if;

end if; end if;

min_data<=set_min_data; --分设置好赋值给输出端 end process;

process(set_hour)

variable set_hour_data:integer range 0 to 11; begin

if(set_alarm='1') then

if(set_hour 'event and set_hour='1') then if(set_hour_data=11)then set_hour_data:=0; else

set_hour_data:=set_hour_data+1; --设置时 end if; end if; end if;

hour_data<=set_hour_data; --时设置好赋值给输出端 end process; end architecture one;

(4)、闹铃模块

library ieee;--闹铃模块,时间相等则开始闹铃 use ieee.std_logic_1164.all;

entity alarm is

port(sc,min:in integer range 0 to 59;

hour:in integer range 0 to 11; --正常计时的时分秒 set_sc,set_min:in integer range 0 to 59;

set_hour:in integer range 0 to 11; --设置闹铃时间的时分秒 clear_alarm:in std_logic; --停止闹铃信号 flag_1s:in std_logic; --1hz信号

alarm_start:out bit; --开始闹铃信号 alarm_end:out bit; --结束闹铃信号 flag_alarm:out bit); --闹铃标志信号 end entity;

architecture one of alarm is

signal flag_alarm_start:bit; --定义开始闹铃信号

signal flag_alarm_end:bit; --定义结束闹铃信号 begin

process(sc,min,hour) begin

if(flag_1s 'event and flag_1s='1') then

if(sc=set_sc and min=set_min hour=set_hour) then

flag_alarm_start<=not flag_alarm_start; --如果正常计时的时间和

设置的闹铃时间相等时开始闹铃

else

flag_alarm_start<='0'; --如果时间不相等则不闹铃 end if; end if;

alarm_start<=flag_alarm_start; 将信号赋值给输出端 end process;

process(clear_alarm) begin if(clear_alarm 'event and clear_alarm='1') then flag_alarm_end<=not flag_alarm_end; --如果停止闹铃

信号到来则停止闹铃

end if;

alarm_end<=flag_alarm_end; end process;

process(flag_alarm_start,flag_alarm_end) begin

flag_alarm<=flag_alarm_start xor flag_alarm_end; end process; end architecture one;

(5)、二选一模块

library ieee; --选择正常计时时间或者设置闹铃时间 use ieee.std_logic_1164.all;

entity two_sel_one is

port(selector:in std_logic;--选择信号

sc,min:in integer range 0 to 59;

hour: in integer range 0 to 11;--正常计时时间输入端 set_sc,set_min:in integer range 0 to 59;

set_hour:in integer range 0 to 11; --设置闹铃时间的输入端 sc_out,min_out: out integer range 0 to 59;

hour_out:out integer range 0 to 11);--二选一选择后输出 end entity ;

architecture one of two_sel_one is begin

process(sc,min,hour,set_sc,set_min,set_hour) begin

if(selector='0') then sc_out<=sc; min_out<=min;

hour_out<=hour;--如果选择信号为0时,输出的是正常计时时间 else

sc_out<=set_sc; min_out<=set_min;

hour_out<=set_hour; --如果选择信号为1时,输出的是设置的闹铃

时间

end if; end process; end architecture one;

(6)、显示模块

library ieee; --此程序是将时分秒的十位和个位数分开并且转换成段码,还有

位选

use ieee.std_logic_1164.all;

entity display is

port(sc_data:in integer range 0 to 59; min_data:in integer range 0 to 59; hour_data:in integer range 0 to 11;

flag_1khz:in std_logic; --1khz的位选信号 Q:out std_logic_vector(7 downto 0); --接数码管的段码引脚 S:out std_logic_vector(7 downto 0)); --接数码管的位选引脚 end entity display;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库VHDL设计的12进制可调时钟带闹铃功能 - 图文(2)在线全文阅读。

VHDL设计的12进制可调时钟带闹铃功能 - 图文(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/620483.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: