Project

General

Profile

438 markw
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;

ENTITY config_regs_veronica IS
PORT (
CLK: in std_logic;
RESET_N: in std_logic;

SEM_IN: in std_logic;
WINDOW_ADDRESS: out std_logic;
BANK_HALF_SELECT: out std_logic;

687 markw
SEM_WRITE : out std_logic;
SEM_VALUE : out std_logic;

438 markw
DATA_IN: in std_logic_vector(7 downto 0);
DATA_OUT: out std_logic_vector(7 downto 0);
RW_N: in std_logic
);
END config_regs_veronica;


ARCHITECTURE vhdl OF config_regs_veronica IS
signal window_address_next : std_logic;
signal window_address_reg : std_logic;

signal bank_half_next : std_logic;
signal bank_half_reg : std_logic;

begin
process(clk,reset_n)
begin
if (reset_n='0') then
window_address_reg <= '0';
bank_half_reg <= '1';
elsif (clk'event and clk='1') then
window_address_reg <= window_address_next;
bank_half_reg <= bank_half_next;
end if;
end process;

process(rw_n,window_address_reg,bank_half_reg,data_in)
begin
window_address_next <= window_address_reg;
bank_half_next <= bank_half_reg;
687 markw
sem_write <= '0';
sem_value <= '0'; -- Not important
438 markw
if (rw_n='0') then
window_address_next <= data_in(6);
bank_half_next <= data_in(5);
687 markw
sem_write <= '1';
sem_value <= not(data_in(7));
438 markw
end if;
end process;

data_out <= not(sem_in)&window_address_reg&bank_half_reg&"11111";
window_address <= window_address_reg;
bank_half_select <= bank_half_reg;

end vhdl;