FPGA学习--按键消抖设计

[复制链接]

43

主题

241

帖子

509

积分

单晶硅锭

Rank: 3Rank: 3

积分
509
楼主
查看: 3677回复: 1 发表于 2019-8-23 13:24:53   只看该作者
这是个关于按键消抖的设计

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

1

主题

2

帖子

86

积分

一粒轻沙

Rank: 1

积分
86
沙发
发表于 2019-8-27 14:06:12   只看该作者
谢谢分享
快速回复 返回顶部 返回列表