Line 12... |
Line 12... |
entity lxp32_cpu is
|
entity lxp32_cpu is
|
generic(
|
generic(
|
DBUS_RMW: boolean;
|
DBUS_RMW: boolean;
|
DIVIDER_EN: boolean;
|
DIVIDER_EN: boolean;
|
MUL_ARCH: string;
|
MUL_ARCH: string;
|
START_ADDR: std_logic_vector(29 downto 0)
|
START_ADDR: std_logic_vector(31 downto 0)
|
);
|
);
|
port(
|
port(
|
clk_i: in std_logic;
|
clk_i: in std_logic;
|
rst_i: in std_logic;
|
rst_i: in std_logic;
|
|
|
Line 40... |
Line 40... |
|
|
architecture rtl of lxp32_cpu is
|
architecture rtl of lxp32_cpu is
|
|
|
signal fetch_word: std_logic_vector(31 downto 0);
|
signal fetch_word: std_logic_vector(31 downto 0);
|
signal fetch_next_ip: std_logic_vector(29 downto 0);
|
signal fetch_next_ip: std_logic_vector(29 downto 0);
|
|
signal fetch_current_ip: std_logic_vector(29 downto 0);
|
signal fetch_valid: std_logic;
|
signal fetch_valid: std_logic;
|
signal fetch_jump_ready: std_logic;
|
signal fetch_jump_ready: std_logic;
|
|
|
signal decode_ready: std_logic;
|
signal decode_ready: std_logic;
|
signal decode_valid: std_logic;
|
signal decode_valid: std_logic;
|
Line 59... |
Line 60... |
signal decode_cmd_div_mod: std_logic;
|
signal decode_cmd_div_mod: std_logic;
|
signal decode_cmd_cmp: std_logic;
|
signal decode_cmd_cmp: std_logic;
|
signal decode_cmd_jump: std_logic;
|
signal decode_cmd_jump: std_logic;
|
signal decode_cmd_negate_op2: std_logic;
|
signal decode_cmd_negate_op2: std_logic;
|
signal decode_cmd_and: std_logic;
|
signal decode_cmd_and: std_logic;
|
signal decode_cmd_or: std_logic;
|
|
signal decode_cmd_xor: std_logic;
|
signal decode_cmd_xor: std_logic;
|
signal decode_cmd_shift: std_logic;
|
signal decode_cmd_shift: std_logic;
|
signal decode_cmd_shift_right: std_logic;
|
signal decode_cmd_shift_right: std_logic;
|
|
|
signal decode_jump_type: std_logic_vector(3 downto 0);
|
signal decode_jump_type: std_logic_vector(3 downto 0);
|
Line 87... |
Line 87... |
|
|
signal interrupt_valid: std_logic;
|
signal interrupt_valid: std_logic;
|
signal interrupt_vector: std_logic_vector(2 downto 0);
|
signal interrupt_vector: std_logic_vector(2 downto 0);
|
signal interrupt_ready: std_logic;
|
signal interrupt_ready: std_logic;
|
signal interrupt_return: std_logic;
|
signal interrupt_return: std_logic;
|
signal interrupts_enabled: std_logic_vector(7 downto 0);
|
|
signal interrupts_blocked: std_logic_vector(7 downto 0);
|
|
|
|
begin
|
begin
|
|
|
fetch_inst: entity work.lxp32_fetch(rtl)
|
fetch_inst: entity work.lxp32_fetch(rtl)
|
generic map(
|
generic map(
|
Line 107... |
Line 105... |
lli_dat_i=>lli_dat_i,
|
lli_dat_i=>lli_dat_i,
|
lli_busy_i=>lli_busy_i,
|
lli_busy_i=>lli_busy_i,
|
|
|
word_o=>fetch_word,
|
word_o=>fetch_word,
|
next_ip_o=>fetch_next_ip,
|
next_ip_o=>fetch_next_ip,
|
|
current_ip_o=>fetch_current_ip,
|
valid_o=>fetch_valid,
|
valid_o=>fetch_valid,
|
ready_i=>decode_ready,
|
ready_i=>decode_ready,
|
|
|
jump_valid_i=>execute_jump_valid,
|
jump_valid_i=>execute_jump_valid,
|
jump_dst_i=>execute_jump_dst,
|
jump_dst_i=>execute_jump_dst,
|
Line 122... |
Line 121... |
clk_i=>clk_i,
|
clk_i=>clk_i,
|
rst_i=>rst_i,
|
rst_i=>rst_i,
|
|
|
word_i=>fetch_word,
|
word_i=>fetch_word,
|
next_ip_i=>fetch_next_ip,
|
next_ip_i=>fetch_next_ip,
|
|
current_ip_i=>fetch_current_ip,
|
valid_i=>fetch_valid,
|
valid_i=>fetch_valid,
|
jump_valid_i=>execute_jump_valid,
|
jump_valid_i=>execute_jump_valid,
|
ready_o=>decode_ready,
|
ready_o=>decode_ready,
|
|
|
interrupt_valid_i=>interrupt_valid,
|
interrupt_valid_i=>interrupt_valid,
|
Line 151... |
Line 151... |
cmd_div_mod_o=>decode_cmd_div_mod,
|
cmd_div_mod_o=>decode_cmd_div_mod,
|
cmd_cmp_o=>decode_cmd_cmp,
|
cmd_cmp_o=>decode_cmd_cmp,
|
cmd_jump_o=>decode_cmd_jump,
|
cmd_jump_o=>decode_cmd_jump,
|
cmd_negate_op2_o=>decode_cmd_negate_op2,
|
cmd_negate_op2_o=>decode_cmd_negate_op2,
|
cmd_and_o=>decode_cmd_and,
|
cmd_and_o=>decode_cmd_and,
|
cmd_or_o=>decode_cmd_or,
|
|
cmd_xor_o=>decode_cmd_xor,
|
cmd_xor_o=>decode_cmd_xor,
|
cmd_shift_o=>decode_cmd_shift,
|
cmd_shift_o=>decode_cmd_shift,
|
cmd_shift_right_o=>decode_cmd_shift_right,
|
cmd_shift_right_o=>decode_cmd_shift_right,
|
|
|
jump_type_o=>decode_jump_type,
|
jump_type_o=>decode_jump_type,
|
Line 187... |
Line 186... |
cmd_div_mod_i=>decode_cmd_div_mod,
|
cmd_div_mod_i=>decode_cmd_div_mod,
|
cmd_cmp_i=>decode_cmd_cmp,
|
cmd_cmp_i=>decode_cmd_cmp,
|
cmd_jump_i=>decode_cmd_jump,
|
cmd_jump_i=>decode_cmd_jump,
|
cmd_negate_op2_i=>decode_cmd_negate_op2,
|
cmd_negate_op2_i=>decode_cmd_negate_op2,
|
cmd_and_i=>decode_cmd_and,
|
cmd_and_i=>decode_cmd_and,
|
cmd_or_i=>decode_cmd_or,
|
|
cmd_xor_i=>decode_cmd_xor,
|
cmd_xor_i=>decode_cmd_xor,
|
cmd_shift_i=>decode_cmd_shift,
|
cmd_shift_i=>decode_cmd_shift,
|
cmd_shift_right_i=>decode_cmd_shift_right,
|
cmd_shift_right_i=>decode_cmd_shift_right,
|
|
|
jump_type_i=>decode_jump_type,
|
jump_type_i=>decode_jump_type,
|
Line 219... |
Line 217... |
|
|
jump_valid_o=>execute_jump_valid,
|
jump_valid_o=>execute_jump_valid,
|
jump_dst_o=>execute_jump_dst,
|
jump_dst_o=>execute_jump_dst,
|
jump_ready_i=>fetch_jump_ready,
|
jump_ready_i=>fetch_jump_ready,
|
|
|
interrupt_return_o=>interrupt_return,
|
interrupt_return_o=>interrupt_return
|
interrupts_enabled_o=>interrupts_enabled,
|
|
interrupts_blocked_o=>interrupts_blocked
|
|
);
|
);
|
|
|
scratchpad_inst: entity work.lxp32_scratchpad(rtl)
|
scratchpad_inst: entity work.lxp32_scratchpad(rtl)
|
port map(
|
port map(
|
clk_i=>clk_i,
|
clk_i=>clk_i,
|
Line 245... |
Line 241... |
clk_i=>clk_i,
|
clk_i=>clk_i,
|
rst_i=>rst_i,
|
rst_i=>rst_i,
|
|
|
irq_i=>irq_i,
|
irq_i=>irq_i,
|
|
|
interrupts_enabled_i=>interrupts_enabled,
|
|
interrupts_blocked_i=>interrupts_blocked,
|
|
|
|
interrupt_valid_o=>interrupt_valid,
|
interrupt_valid_o=>interrupt_valid,
|
interrupt_vector_o=>interrupt_vector,
|
interrupt_vector_o=>interrupt_vector,
|
interrupt_ready_i=>interrupt_ready,
|
interrupt_ready_i=>interrupt_ready,
|
interrupt_return_i=>interrupt_return
|
interrupt_return_i=>interrupt_return,
|
|
|
|
sp_waddr_i=>sp_waddr,
|
|
sp_we_i=>sp_we,
|
|
sp_wdata_i=>sp_wdata
|
);
|
);
|
|
|
end architecture;
|
end architecture;
|
|
|
No newline at end of file
|
No newline at end of file
|