Пока читаю только один ряд клавы. Разбираюсь что мешает читать другие. Такое очучение, что в scan_in поступает число не из единиц с одним нулём, а чтото другое...
---------- Post added at 20:17 ---------- Previous post was at 20:14 ----------
Пока логичней кажется такое:
process(clock,keybsel,mreq_n,wr_n,dataO,a_buff)
begin
if (clock'event and clock='1') then
if (keybsel='1' and mreq_n='0' and wr_n='0') then
case a_buff (1 downto 0) is
when "00" =>
porta <= dataO;
metod <= '0';
when "01" =>
portb <= dataO;
metod <= '1';
when "10" =>
portc <= dataO;
metod <= '0';
when "11" =>
portr <= dataO;
end case;
end if;
end if;
end process;
scan_in<=(portc(3 downto 0) & porta) when (metod='0') else ("111111" & portb (7 downto 2));