Project

General

Profile

« Previous | Next » 

Revision 687

Added by markw over 7 years ago

Veronica should be able to change the semaphore too.

View differences:

ultimate_cart/veronica/config_regs_6502.vhd
BANK_HALF_SELECT: out std_logic;
BANK_SELECT: out std_logic;
ENABLE_65816: out std_logic;
SEM_WRITE_65816 : in std_logic;
SEM_VALUE_65816 : in std_logic;
DATA_IN: in std_logic_vector(7 downto 0);
DATA_OUT: out std_logic_vector(7 downto 0);
RW_N: in std_logic
......
end if;
end process;
process(data_in,rw_n,sem_reg,banka_enable_reg,bank8_enable_reg,bank_half_reg,bank_select_reg,enable_65816_reg)
process(data_in,rw_n,sem_reg,banka_enable_reg,bank8_enable_reg,bank_half_reg,bank_select_reg,enable_65816_reg,sem_write_65816,sem_value_65816)
begin
sem_next <= sem_reg;
banka_enable_next <= banka_enable_reg;
......
bank_select_next <= data_in(1);
enable_65816_next <= data_in(0);
end if;
if (sem_write_65816='1') then
sem_next <= sem_value_65816;
end if;
end process;
data_out <= sem_reg&'1'&banka_enable_reg&bank8_enable_reg&bank_half_reg&'1'&bank_select_reg&enable_65816_reg;
ultimate_cart/veronica/config_regs_veronica.vhd
WINDOW_ADDRESS: out std_logic;
BANK_HALF_SELECT: out std_logic;
SEM_WRITE : out std_logic;
SEM_VALUE : out std_logic;
DATA_IN: in std_logic_vector(7 downto 0);
DATA_OUT: out std_logic_vector(7 downto 0);
RW_N: in std_logic
......
begin
window_address_next <= window_address_reg;
bank_half_next <= bank_half_reg;
sem_write <= '0';
sem_value <= '0'; -- Not important
if (rw_n='0') then
window_address_next <= data_in(6);
bank_half_next <= data_in(5);
sem_write <= '1';
sem_value <= not(data_in(7));
end if;
end process;
ultimate_cart/veronica/veronica.vhd
-- Some unknown inputs
abort : in std_logic; -- another interrupt (active low)
be : in std_logic; -- bus enable (active high)
err_i : in std_logic; -- set to 0 in example
rty_i : in std_logic; -- set to 0 in example
err_i : in std_logic; -- set to 1 in example
rty_i : in std_logic; -- set to 1 in example
-- Some unknown outputs
vpa : out std_logic; -- valid program address
......
signal atari_bank_half_select : std_logic;
signal atari_config_data : std_logic_vector(7 downto 0);
-- common config
-- common config
signal common_bank_select : std_logic;
-- semaphora
signal common_sem : std_logic;
signal common_bank_select : std_logic;
signal veronica_sem_write : std_logic;
signal veronica_sem_value : std_logic;
-- cart driving
signal cart_bus_data_out : std_logic_vector(7 downto 0);
......
sem_in => common_sem,
window_address => veronica_window_address,
bank_half_select => veronica_bank_half_select,
sem_write => veronica_sem_write,
sem_value => veronica_sem_value,
data_in => veronica_write_data,
data_out => veronica_config_data,
......
bank_half_select => atari_bank_half_select,
bank_select => common_bank_select,
enable_65816 => veronica_reset,
sem_write_65816 => veronica_sem_write,
sem_value_65816 => veronica_sem_value,
data_in => atari_write_data,
data_out => atari_config_data,

Also available in: Unified diff