📄 keydecoder_deb.vhd
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
entity keydecoder_deb is
port(keyin:in std_logic_vector(3 downto 0);
keydrv:in std_logic_vector(3 downto 0);
clk:in std_logic;
clk_scan:in std_logic;
keyvalue:out std_logic_vector(3 downto 0);
keypressed:out std_logic;
functionkey:out std_logic);
end keydecoder_deb;
architecture behav of keydecoder_deb is
signal temp:std_logic_vector(7 downto 0);
signal temp_pressed:std_logic;
signal q1,q2,q3,q4,q5,q6:std_logic;
signal keypressed_asy:std_logic;
begin
temp<=keydrv&keyin;
process(temp)
begin
case temp is
when "11101110"=>keyvalue<="0001";temp_pressed<='1';functionkey<='0';
when "11101101"=>keyvalue<="0010";temp_pressed<='1';functionkey<='0';
when "11101011"=>keyvalue<="0011";temp_pressed<='1';functionkey<='0';
when "11100111"=>keyvalue<="0100";temp_pressed<='1';functionkey<='0';
when "11011110"=>keyvalue<="0101";temp_pressed<='1';functionkey<='0';
when "11011101"=>keyvalue<="0110";temp_pressed<='1';functionkey<='0';
when "11011011"=>keyvalue<="0111";temp_pressed<='1';functionkey<='0';
when "11010111"=>keyvalue<="1000";temp_pressed<='1';functionkey<='0';
when "10111110"=>keyvalue<="1001";temp_pressed<='1';functionkey<='0';
when "10111101"=>keyvalue<="0000";temp_pressed<='1';functionkey<='0';
when "10111011"=>keyvalue<="1010";temp_pressed<='1';functionkey<='1';
when "10110111"=>keyvalue<="1011";temp_pressed<='1';functionkey<='1';
when "01111110"=>keyvalue<="1100";temp_pressed<='1';functionkey<='1';
when "01111101"=>keyvalue<="1101";temp_pressed<='1';functionkey<='1';
when "01111011"=>keyvalue<="1110";temp_pressed<='1';functionkey<='1';
when "01110111"=>keyvalue<="1111";temp_pressed<='1';functionkey<='1';
when others=>null;
end case;
end process;
process(clk_scan)
begin
if clk_scan'event and clk_scan='1' then
q1<=temp_pressed;
q2<=q1;
q3<=q2;
q4<=q3;
end if;
keypressed_asy<=q1 or q2 or q3 or q4;
end process;
process(clk)
begin
if clk'event and clk='1' then
q5<=keypressed_asy;
q6<=q5;
end if;
keypressed<=q5 and (not q6);
end process;
end behav;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -