首页 VHDL状态机按键消抖

VHDL状态机按键消抖

举报
开通vip

VHDL状态机按键消抖library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity debounce_FSM is generic (fclk : integer :=50000000); port( n_rst : in std_logic; clk : in std_logic; key_in : in std_logic; pulse : out std_logic --output single pulse...

VHDL状态机按键消抖
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity debounce_FSM is generic (fclk : integer :=50000000); port( n_rst : in std_logic; clk : in std_logic; key_in : in std_logic; pulse : out std_logic --output single pulse ); end debounce_FSM; architecture rtl of debounce_FSM is type m_state is( idle, delay, output, key_up ); signal cs,ns: m_state; signal key_reg : std_logic; constant n : integer :=fclk/100; --100Hz,means to delay 10 ms signal delay_cnt : integer range 0 to n-1; begin --three section FSM --timing sequence part of FSM process(n_rst,clk) begin if(n_rst='0')then cs<=idle; elsif(clk'event and clk='1')then cs<=ns; end if; end process; --combination part of FSM process(cs,key_in,delay_cnt) begin case (cs) is when idle => if(key_in='0')then ns<=delay; --when key is down else ns<=idle; end if; when delay => if(delay_cnt=n-1)then ns<=output; else ns<=delay; end if; when output => ns<=key_up; when key_up => if(key_in='1')then --waiting key being up ns<=idle; else ns<=key_up; end if; when others => ns<=idle; end case; end process; --register output part of FSM process(n_rst,clk) begin if(n_rst='0')then key_reg <='0'; delay_cnt<=0; elsif(clk'event and clk='1')then case (ns) is when idle => key_reg <='0';delay_cnt<=0; when delay => key_reg <='0';delay_cnt<=delay_cnt+1; when output => if(key_in='0')then key_reg <='1'; else key_reg <='0'; end if; delay_cnt<=delay_cnt; when key_up => key_reg <='0';delay_cnt<=0; when others => key_reg <='0';delay_cnt<=0; end case; end if; end process; pulse<=key_reg; end rtl;
本文档为【VHDL状态机按键消抖】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_594886
暂无简介~
格式:doc
大小:16KB
软件:Word
页数:0
分类:互联网
上传时间:2019-08-24
浏览量:18