📄 keyboard_dec.vhd
字号:
--******************************************************
--
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL ;
USE IEEE.STD_LOGIC_UNSIGNED.ALL ;
--******************************************************
--
ENTITY KEYBOARD_DEC1 IS
PORT (
clk : IN STD_LOGIC ;
CLK_KEYBOARD : IN STD_LOGIC_VECTOR (1 downto 0);
C: IN STD_LOGIC_VECTOR (2 downto 0); --key code after debounce
out_numb : OUT STD_LOGIC_VECTOR(3 downto 0); -- for numb. key
out_func : OUT STD_LOGIC_VECTOR(3 downto 0); -- for func. key
flag_numb : OUT STD_LOGIC ; --flag for numb. key
flag_func : OUT STD_LOGIC --flag for func. key
);
END KEYBOARD_DEC1 ;
--******************************************************
--
ARCHITECTURE a OF KEYBOARD_DEC1 IS
signal FF : std_logic ; --FLAG OF FUNC.
signal FN : std_logic ; --FLAG OF NUMB.
signal Z : std_logic_VECTOR(4 downto 0) ; --SCAN CODE
signal F : std_logic_VECTOR(3 downto 0) ; --FOR FUNC. CODE
signal N : std_logic_VECTOR(3 downto 0) ; --FOR NUMB. CODE
BEGIN
PROCESS(clk)
begin
Z <= CLK_KEYBOARD & C ;
IF CLK'EVENT AND CLK = '1' THEN
case Z is
when "11101" => N <= "0000" ;--0
when "00011" => N <= "0001" ;--1
when "00101" => N <= "0010" ;--2
when "00110" => N <= "0011" ;--3
when "01011" => N <= "0100" ;--4
when "01101" => N <= "0101" ;--5
when "01110" => N <= "0110" ;--6
when "10011" => N <= "0111" ;--7
when "10101" => N <= "1000" ;--8
when "10110" => N <= "1001" ;--9
when others => N <= "1111" ;
end case ;
END IF ;
--****************************
IF CLK'EVENT AND CLK = '1' THEN
case Z is
when "11011" => F <= "0100" ;--*_LOCK
when "11110" => F <= "0001" ;--#_UNLOCK
when others => F <= "1000" ;
end case ;
END IF ;
end process ;
FN <= NOT ( N(3) AND N(2) AND N(1) AND N(0) ) ;
FF <= ( NOT F(3) AND F(2) AND NOT F(1) AND NOT F(0)) OR (NOT F(3) AND NOT F(2) AND NOT F(1) AND F(0) ) ;
--CONNECTION
FLAG_NUMB <= FN ;
FLAG_FUNC <= FF ;
OUT_NUMB <= N ;
OUT_FUNC <= F ;
--PROCESS (CLK)
--BEGIN
--IF CLK'EVENT AND CLK = '1' THEN
--R1 <= R0 ; R0 <= FF ;
--END IF ;
--RR2 <= R1 XOR R0 ;
--R2 <= RR2 ;
--END PROCESS ;
END a;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -