欢迎访问九江学院电子信息工程学院网站!

当前位置: 首页   >   资源下载   >   学习资料   >   正文

FPGA学习--按键消抖设计

作者:    信息来源:    发布时间: 2014-04-19

LIBRARY IEEE;                     
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_Arith.ALL;
USE IEEE.STD_LOGIC_Unsigned.ALL;

ENTITY debounce IS
GENERIC(KEY_WIDTH:Integer:=8);
PORT(
clk: IN  STD_LOGIC;           --系统时钟输入
key_in: IN STD_LOGIC_VECTOR(KEY_WIDTH-1 DOWNTO 0); --外部按键输入
key_out:OUT STD_LOGIC_VECTOR(KEY_WIDTH-1 DOWNTO 0)  --按键消抖输出
);
END;

ARCHITECTURE one OF debounce IS
SIGNAL dout1,dout2,dout3:STD_LOGIC_VECTOR(KEY_WIDTH-1 DOWNTO 0);
BEGIN
key_out<=dout1 OR dout2 OR dout3;--按键消抖输出
PROCESS(clk)
BEGIN
 IF RISING_EDGE(clk)THEN
  dout1<=key_in;
  dout2<=dout1;
  dout3<=dout2;
 END IF;
END PROCESS;
END;

消抖电路的采样时钟要实际应用可以灵活改变,因为按键触发的时间一般为几百毫秒,干扰毛剌脉宽一般为几百微秒到几毫秒,所以采样时钟的周期一般为几毫秒。

 

 Copyright© 2020 九江学院电子信息工程学院版权所有

联系电话:0792-8314446