Для затравки выкладываю пример:
двунаправленный порт FF (условно, конечно), проц его читает и туда пишет;
Если для записи и чтения порты разные, но номер одинаковый, то в процессах пишем в один сигнал, читаем из другого (его нужно добавить).
Код:-- ПЛИС <-> Z80 чтение-запись порта, например, FF port ( signal iAddrZXbus : in std_logic_vector (15 downto 0); signal ioDataZXbus : inout std_logic_vector (7 downto 0); signal iIorqZXbus : in std_logic; signal iRdZXbus : in std_logic; signal iWrZXbus : in std_logic; signal iM1ZXbus : in std_logic; -- добавить, чтобы не срабатывал при подтв.прерывания signal iResetZXbus : in std_logic; signal iFZXBus : in std_logic ) -- тактовый 14 МГц signal sIoWr : std_logic; signal sIoRd : std_logic; signal A1,A2 : std_logic; signal sFF : std_logic_vector (7 downto 0); sIoWr <= iIorqZXbus or iWrZXbus; sIoRd <= iIorqZXbus or iRdZXbus; process (iFZXbus) begin if iReset = '0' then ioDataZXbus <= (others => 'Z'); elsif rising_edge(iFZXbus) then A1 <= sIoWr; A2 <= not A1; if sIoRd = '0' and iAddrZXbus = x"00FF" then ioDataZXbus <= sFF; else ioDataZXbus <= (others => 'Z'); end if; if (A1 or A2) = '0' and iAddrZXbus = x"00FF" then sFF <= ioDataZXbus; end if; end if; end;




ZXM-Phoenix rev.01 2048K, VG93 hw emulator
Ответить с цитированием