VHDL实现按键消抖

目录

问题描述:

代码:


问题描述:

在使用FPGA开发一些需要按键输入的项目时,对于按键信号的处理必不可少,我们在使用普通机械按键,当按键按下和松开将出现以下不稳定波形

按键消抖通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。


代码:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY key IS

  PORT(
  key_in:in std_logic;--按键
  clk:in std_logic;--时钟频率,此处pin连接clk
  key_out:out std_logic--代表key_out按键,若为1,表示按键按下,若为0,表示按键未按下
  );
  end entity;
  
  ARCHITECTURE one OF key IS
  signal count:integer;--计数
  begin
  process(clk)
  begin
  if(clk'event and clk='1') then--上升沿
		if(key_in='0') then--按键初始为1
			count<=count+1;
			if(count=2000) then--对应现实20ms
				key_out<='1';--判断是否有一段持续20ms的'0'状态,若有即代表按下
			else
				key_out<='0';--若无代表没按下
			end if;
		else
			count<=0;
		end if;
	end if;
	end process;
    end one;

下载完整工程项目请到:VHDL实现按键消抖完整项目-嵌入式文档类资源-CSDN文库


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vizio<

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值