DEBOUNCE.VHD
上传用户:dgjihui88
上传日期:2013-07-23
资源大小:43k
文件大小:1k
源码类别:

VHDL/FPGA/Verilog

开发平台:

MultiPlatform

  1. --debounce.vhd keypress debounce
  2. library ieee ;
  3. use ieee.std_logic_1164.all;
  4. use ieee.std_logic_unsigned.all;
  5. entity debounce is
  6. port(
  7.   key_pressed : in std_logic;--key_pressed?
  8.   clk : in std_logic;--clock for synchrony
  9.   scan_f : in std_logic;--1khz clock
  10.   key_valid : out std_logic);--key_valid?
  11. end debounce;
  12. architecture behavior of debounce is
  13. begin
  14.   debounce:process(clk,scan_f,key_pressed)
  15.     variable dbnq : std_logic_vector(5 downto 0);
  16.   begin
  17.     if (key_pressed='1') then
  18.       dbnq:="111111";--unkey_pressed,counter reset at 63
  19.     elsif (clk'event and clk='1') then
  20.       if scan_f='1' then
  21.         if dbnq/=1 then
  22.           dbnq:=dbnq-1;--key_pressed not enough long time 
  23.         end if;        --counter still subtract one
  24.       end if;
  25.     end if;
  26.     if dbnq=2 then
  27.       key_valid<='1';--key_valid after key_pressed 1/63k second
  28.      else
  29.       key_valid<='0';--key_invalid
  30.     end if;
  31.   end process;
  32. end behavior;