generic (
SIM : boolean := false;
DISABLE_FLATTEN : boolean := false;
- EX1_BYPASS : boolean := true
+ EX1_BYPASS : boolean := true;
+ ALT_RESET_ADDRESS : std_ulogic_vector(63 downto 0) := (others => '0')
);
port (
- clk : in std_logic;
- rst : in std_logic;
+ clk : in std_ulogic;
+ rst : in std_ulogic;
+ -- Alternate reset (0xffff0000) for use by DRAM init fw
+ alt_reset : in std_ulogic;
+
+ -- Wishbone interface
wishbone_insn_in : in wishbone_slave_out;
wishbone_insn_out : out wishbone_master_out;
fetch1_0: entity work.fetch1
generic map (
- RESET_ADDRESS => (others => '0')
+ RESET_ADDRESS => (others => '0'),
+ ALT_RESET_ADDRESS => ALT_RESET_ADDRESS
)
port map (
clk => clk,
rst => core_rst,
+ alt_reset_in => alt_reset,
stall_in => fetch1_stall_in,
flush_in => flush,
stop_in => dbg_core_stop,
rst => rst,
system_clk => clk,
uart0_rxd => '0',
- uart0_txd => open
+ uart0_txd => open,
+ alt_reset => '0'
);
clk_process: process
entity fetch1 is
generic(
- RESET_ADDRESS : std_logic_vector(63 downto 0) := (others => '0')
+ RESET_ADDRESS : std_logic_vector(63 downto 0) := (others => '0');
+ ALT_RESET_ADDRESS : std_logic_vector(63 downto 0) := (others => '0')
);
port(
clk : in std_ulogic;
stall_in : in std_ulogic;
flush_in : in std_ulogic;
stop_in : in std_ulogic;
+ alt_reset_in : in std_ulogic;
-- redirect from execution unit
e_in : in Execute1ToFetch1Type;
v_int := r_int;
if rst = '1' then
- v.nia := RESET_ADDRESS;
+ if alt_reset_in = '1' then
+ v.nia := ALT_RESET_ADDRESS;
+ else
+ v.nia := RESET_ADDRESS;
+ end if;
v_int.stop_state := RUNNING;
elsif e_in.redirect = '1' then
v.nia := e_in.redirect_nia;
-- UART0 signals:
uart0_txd : out std_ulogic;
- uart0_rxd : in std_ulogic
+ uart0_rxd : in std_ulogic;
+ alt_reset : in std_ulogic
);
end entity soc;
processor: entity work.core
generic map(
SIM => SIM,
- DISABLE_FLATTEN => DISABLE_FLATTEN_CORE
+ DISABLE_FLATTEN => DISABLE_FLATTEN_CORE,
+ ALT_RESET_ADDRESS => (15 downto 0 => '0', others => '1')
)
port map(
clk => system_clk,
rst => rst,
+ alt_reset => alt_reset,
wishbone_insn_in => wishbone_icore_in,
wishbone_insn_out => wishbone_icore_out,
wishbone_data_in => wishbone_dcore_in,