Что-то не как опрос клавиатуры не работает в мониторе. Напоминаю что наверное используется не реализованный опрос, когда все выводы ВВ55 предназначенные для клавиатуры программируются на ввод. Пересечение клавиши - два нуля, соответствующие строке и столбцу нажатой клавиши. Вот выдержки кода:
Код:
...
if res_n = '0' then
	metod <= "00";
...
elsif (u7rd = '1') then   -- запись в порты клавиатуры						
if a_buff (1 downto 0) = "00" then	-- порт А клавиатуры
   if metod = "00" then
	dataI <= scan_out0 (7 downto 0);	-- код ответа
   else
	dataI <= scan_out (7 downto 0);	-- код ответа
   end if;
end if;										
if a_buff (1 downto 0) = "01" then	-- порт В клавиатуры
   if metod = "00" then
	dataI <= scan_out0 (13 downto 8) & not shift & '0';	-- код ответа
   else
	dataI <= scan_out (5 downto 0) & not shift & '0';	-- код ответа
   end if;
end if;
if a_buff (1 downto 0) = "10" then		-- порт С клавиатуры
   if metod = "00" then
	dataI <= "0000" & scan_out0 (17 downto 14);	-- код ответа
   else
	dataI <= "0000" & scan_out (11 downto 8);-- код ответа
    end if;
end if;
...
spetskey:spetskeyboard				
port map(
...
metod => metod,-- метод опроса								
sp_kb_out0 => scan_out0,	-- код ответа для метода №0
...
Драйвер клавиатуры:
Код:
always @(posedge clk)
begin
if (reset)
   case (metod)
0:
   begin
	sp_kb_out0_ <= 18'h00;
   end	
...
else
   begin
      if (strobe)		    
	case (metod)
	0:
	begin		    
		case (sp_kb[7:0])	
			9'h005:	sp_kb_out0_ <= 18'b011101111111111111; //F1
			9'h006:	sp_kb_out0_ <= 18'b101101111111111111; //F2
			9'h004:	sp_kb_out0_	<= 18'b110101111111111111; //F3
			9'h00c:	sp_kb_out0_	<= 18'b111001111111111111; //F4
			9'h003:	sp_kb_out0_	<= 18'b111101111101111111; //F5
			9'h00b:	sp_kb_out0_ <= 18'b111101111110111111; //F6
			9'h083:	sp_kb_out0_	<= 18'b111101111111011111; //F7
			9'h00a:	sp_kb_out0_	<= 18'b111101111111101111; //F8
			9'h001:	sp_kb_out0_	<= 18'b111101111111110111; //F9
			9'h009:	sp_kb_out0_	<= 18'b111101111111111011; //ЧФ
			9'h078:	sp_kb_out0_ <= 18'b111101111111111101; //БФ
			9'h007:	sp_kb_out0_ <= 18'b111101111111111110; //СТР
... и так далее на все 12х6 клавиш
Принцип прост: при считывании с одного из портов ВВ55 считывается код с двумя нулями, соответствующий скан-коду PS/2 клавиатуры.