Line 118... |
Line 118... |
signal shift_funcD : shift_function_type;
|
signal shift_funcD : shift_function_type;
|
signal mult_func : mult_function_type;
|
signal mult_func : mult_function_type;
|
signal mult_funcD : mult_function_type;
|
signal mult_funcD : mult_function_type;
|
signal branch_func : branch_function_type;
|
signal branch_func : branch_function_type;
|
signal take_branch : std_logic;
|
signal take_branch : std_logic;
|
signal take_branchD : std_logic;
|
|
signal a_source : a_source_type;
|
signal a_source : a_source_type;
|
signal b_source : b_source_type;
|
signal b_source : b_source_type;
|
signal c_source : c_source_type;
|
signal c_source : c_source_type;
|
signal pc_source : pc_source_type;
|
signal pc_source : pc_source_type;
|
signal mem_source : mem_source_type;
|
signal mem_source : mem_source_type;
|
Line 140... |
Line 139... |
begin --architecture
|
begin --architecture
|
|
|
pause_any <= (mem_pause or pause_ctrl) or (pause_mult or pause_pipeline);
|
pause_any <= (mem_pause or pause_ctrl) or (pause_mult or pause_pipeline);
|
pause_non_ctrl <= (mem_pause or pause_mult) or pause_pipeline;
|
pause_non_ctrl <= (mem_pause or pause_mult) or pause_pipeline;
|
pause_bank <= (mem_pause or pause_ctrl or pause_mult) and not pause_pipeline;
|
pause_bank <= (mem_pause or pause_ctrl or pause_mult) and not pause_pipeline;
|
nullify_op <= '1' when pc_source = from_lbranch and take_branchD = '0' else
|
nullify_op <= '1' when pc_source = from_lbranch and take_branch = '0' else '0';
|
'0';
|
|
c_bus <= c_alu or c_shift or c_mult;
|
c_bus <= c_alu or c_shift or c_mult;
|
reset <= '1' when reset_in = '1' or reset_reg /= "1111" else '0';
|
reset <= '1' when reset_in = '1' or reset_reg /= "1111" else '0';
|
|
|
--synchronize reset and interrupt pins
|
--synchronize reset and interrupt pins
|
intr_proc: process(clk, reset_in, reset_reg, intr_in, intr_enable,
|
intr_proc: process(clk, reset_in, reset_reg, intr_in, intr_enable,
|
Line 172... |
Line 170... |
end process;
|
end process;
|
|
|
u1_pc_next: pc_next PORT MAP (
|
u1_pc_next: pc_next PORT MAP (
|
clk => clk,
|
clk => clk,
|
reset_in => reset,
|
reset_in => reset,
|
take_branch => take_branchD,
|
take_branch => take_branch,
|
pause_in => pause_any,
|
pause_in => pause_any,
|
pc_new => c_bus(31 downto 2),
|
pc_new => c_bus(31 downto 2),
|
opcode25_0 => opcode(25 downto 0),
|
opcode25_0 => opcode(25 downto 0),
|
pc_source => pc_source,
|
pc_source => pc_source,
|
pc_out => pc,
|
pc_out => pc,
|
Line 286... |
Line 284... |
shift_funcD <= shift_func;
|
shift_funcD <= shift_func;
|
mult_funcD <= mult_func;
|
mult_funcD <= mult_func;
|
rd_indexD <= rd_index;
|
rd_indexD <= rd_index;
|
|
|
reg_destD <= reg_dest;
|
reg_destD <= reg_dest;
|
take_branchD <= take_branch;
|
|
pause_pipeline <= '0';
|
pause_pipeline <= '0';
|
end generate; --pipeline2
|
end generate; --pipeline2
|
|
|
pipeline3: if pipeline_stages >= 3 generate
|
pipeline3: if pipeline_stages >= 3 generate
|
--When operating in three stage pipeline mode, the following signals
|
--When operating in three stage pipeline mode, the following signals
|
Line 320... |
Line 317... |
mem_source => mem_source,
|
mem_source => mem_source,
|
a_source => a_source,
|
a_source => a_source,
|
b_source => b_source,
|
b_source => b_source,
|
c_source => c_source,
|
c_source => c_source,
|
c_bus => c_bus,
|
c_bus => c_bus,
|
take_branch => take_branch,
|
|
take_branchD => take_branchD,
|
|
pause_any => pause_any,
|
pause_any => pause_any,
|
pause_pipeline => pause_pipeline);
|
pause_pipeline => pause_pipeline);
|
end generate; --pipeline3
|
end generate; --pipeline3
|
|
|
end; --architecture logic
|
end; --architecture logic
|