📄 key.vhd
字号:
library ieee;
use ieee.std_logic_1164.all;
entity key is
port(
clk : in std_logic;
line: in std_logic_vector(3 downto 0);
row: out std_logic_vector(3 downto 0);
key_num: out std_logic_vector(3 downto 0);
int:out std_logic
);
end key;
architecture a of key is
signal key_num_temp: std_logic_vector(3 downto 0);
signal state1:std_logic_vector(1 downto 0);
begin
process(clk)
begin
if(clk 'event and clk='1')then
row<="0000";
if (line/="1111") then
int<='1';
case state1 is
when "00"=>
row<="1110";
case line is
when "0111"=>key_num_temp<="0011";
when "1011"=>key_num_temp<="0111";
when "1101"=>key_num_temp<="1011";
when "1110"=>key_num_temp<="1111";
when others=>key_num_temp<="1111";
end case;
state1<="01";
when "01"=>
row<="1101";
case line is
when "0111"=>key_num_temp<="0010";
when "1011"=>key_num_temp<="0110";
when "1101"=>key_num_temp<="1010";
when "1110"=>key_num_temp<="1110";
when others=>key_num_temp<="1111";
end case;
state1<="10";
when "10"=>
row<="1011";
case line is
when "0111"=>key_num_temp<="0000";
when "1011"=>key_num_temp<="0100";
when "1101"=>key_num_temp<="1000";
when "1110"=>key_num_temp<="1100";
when others=>key_num_temp<="1111";
end case;
state1<="11";
when "11"=>
row<="0111";
case line is
when "0111"=>key_num_temp<="0001";
when "1011"=>key_num_temp<="0101";
when "1101"=>key_num_temp<="1001";
when "1110"=>key_num_temp<="1101";
when others=>key_num_temp<="1111";
end case;
state1<="00";
end case;
else int<='0';
key_num_temp<=key_num_temp;
end if;
end if;
end process;
key_num<=key_num_temp;
end a;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -