|
LIBRARY ieee;
|
|
USE ieee.std_logic_1164.all;
|
|
USE ieee.numeric_std.all;
|
|
use IEEE.STD_LOGIC_MISC.all;
|
|
|
|
ENTITY atari_address_decoder IS
|
|
PORT (
|
|
s4_n : in std_logic;
|
|
s5_n : in std_logic;
|
|
ctl_n : in std_logic;
|
|
addr_in: in std_logic_vector(12 downto 0);
|
|
bus_request: in std_logic;
|
|
|
|
bank_half_select : in std_logic;
|
|
bank_select : in std_logic;
|
|
|
|
config_select : out std_logic;
|
|
sram_select : out std_logic;
|
|
sram_address : out std_logic_vector(16 downto 0)
|
|
);
|
|
END atari_address_decoder;
|
|
|
|
ARCHITECTURE vhdl OF atari_address_decoder IS
|
|
signal addr_valid : std_logic;
|
|
begin
|
|
|
|
sram_address(16) <= '1';
|
|
sram_address(15 downto 14) <= bank_select&bank_half_select;
|
|
sram_address(13) <= s4_n and not(s5_n);
|
|
sram_address(12 downto 0) <= addr_in;
|
|
|
|
sram_select <= bus_request and not(s4_n and s5_n);
|
|
addr_valid <= '1' when addr_in(7 downto 0)=x"c0" else '0';
|
|
config_select <= bus_request and not(ctl_n) and addr_valid;
|
|
|
|
end vhdl;
|