大神帮忙看看这个ps2键盘码获得程序为什么不成功?
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY driver_ps2_keyboard IS
PORT(ps2clk:IN STD_LOGIC;
ps2data:IN STD_LOGIC;
reset:IN STD_LOGIC;
key_code:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END ENTITY;
ARCHITECTURE behavioral OF driver_ps2_keyboard IS
SIGNAL temp:STD_LOGIC_VECTOR(10 DOWNTO 0);
SIGNAL counter:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(reset,ps2clk,ps2data)
BEGIN
IF(reset='0') THEN
counter<=(others=>'0');
temp<=(others=>'0');
key_code<=(others=>'0');
ELSIF(FALLING_EDGE(ps2clk)) THEN
temp<=ps2data&temp(10 DOWNTO 1);
counter<=counter+1;
IF(counter="1011") THEN
key_code<=temp(8 DOWNTO 1);
counter<=(OTHERS=>'0');
temp<=(others=>'0');
END IF;
END IF;
END PROCESS;
END ARCHITECTURE behavioral;
测试方法是使用八个指示灯代替输出数据键盘二进制8位码,但是连续按个键人时候出现8次一个轮回,而且每次数据都不一样。高手指教,谢谢。
页:
[1]