原创 VHDL按键写法(含按键消抖和弹起检测)

2012-1-29 12:54 8082 20 21 分类: FPGA/CPLD
作者:horizon_fei
     以前用FPGA做了个电子钟,在网上找按键的代码,但是找到的都没有松手检测,对于按下会自加的操作,往往按一下会加很多次,于是自己设计了这个按键的写法,根据我自己的实际经验,本代码检测准确,按下一个只执行一次操作。代码如下:
 

PROCESS(clk,rst)
 variable keys   : integer range 0 to 100000;--按键消抖变量
begin
 if(rst='0')then
  ";
 elsif(clk'event and clk='1')then
  if(key(2)='0')then
   if(keys=100000 and key(2)='0')then
    key_c<='1';
    keys:=0;
   else
    keys:=keys+1;
   end if;
  end if;
  if(key_c='1' and key(2)='1')then
   if(keys=100000 and key(2)='1')then
    key_c<='0';
    keys:=0;
    if(key_state="101")then
     key_state<="000";
    else
     key_state<=key_state+1;
    end if;
   else
    keys:=keys+1;
   end if;
  end if;
 end if;
end PROCESS;

 
晶振频率为50M,只要稍作修改就可以直接使用了。

文章评论1条评论)

登录后参与讨论

用户377235 2013-12-6 10:08

这个好,我以前都是直接分频计数时钟来着
相关推荐阅读
用户245909 2012-02-06 12:44
高速信号采集USB2.0传输系统设计
作者:herizon_fei      之前做一个项目,需要对微弱光信号进行较高速(采样率1M)的8位信号采集,然后将数据传输到PC,交由上位机进行处理。这里将大概结构分享给大家。    ...
用户245909 2012-01-29 13:01
(转载)cypress公司USB固件程序hex转iic
在cypress开发包的安装目录下有一个工具 Cypress\USB\Bin\Hex2Bix.exe,并且在Util目录下有他的源代码。你可以用这个工具进行hex到iic文件的转换。     ...
用户245909 2012-01-29 12:59
slavefifo读命令写数据状态机简述
作者:horizon_fei slavefifo模式是cy7c68013芯片的一种常用模式,是将ezusb芯片作为从设备高速写入或读取的重要方式。在此处,我使用FPGA作为主控制器...
用户245909 2011-12-17 10:08
Quartus II 9.1 and NIOS II 9.1 on Windows 7 (转载)
I am sharing my personal experience here. I have been using Quartus II 9.1 and NIOS II IDE 9.1 on ...
我要评论
1
20
关闭 站长推荐上一条 /2 下一条