OpenCores
URL https://opencores.org/ocsvn/mlite/mlite/trunk

Subversion Repositories mlite

[/] [mlite/] [trunk/] [vhdl/] [pipeline.vhd] - Diff between revs 82 and 96

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 82 Rev 96
Line 39... Line 39...
        mem_source     : in  mem_source_type;
        mem_source     : in  mem_source_type;
        a_source       : in  a_source_type;
        a_source       : in  a_source_type;
        b_source       : in  b_source_type;
        b_source       : in  b_source_type;
        c_source       : in  c_source_type;
        c_source       : in  c_source_type;
        c_bus          : in  std_logic_vector(31 downto 0);
        c_bus          : in  std_logic_vector(31 downto 0);
        take_branch    : in  std_logic;
 
        take_branchD   : out std_logic;
 
        pause_any      : in  std_logic;
        pause_any      : in  std_logic;
        pause_pipeline : out std_logic);
        pause_pipeline : out std_logic);
end; --entity pipeline
end; --entity pipeline
 
 
architecture logic of pipeline is
architecture logic of pipeline is
Line 57... Line 55...
--When operating in three stage pipeline mode, the following signals
--When operating in three stage pipeline mode, the following signals
--are delayed by one clock cycle:  a_bus, b_bus, alu/shift/mult_func,
--are delayed by one clock cycle:  a_bus, b_bus, alu/shift/mult_func,
--c_source, and rd_index.
--c_source, and rd_index.
pipeline3: process(clk, reset, a_bus, b_bus, alu_func, shift_func, mult_func,
pipeline3: process(clk, reset, a_bus, b_bus, alu_func, shift_func, mult_func,
      rd_index, rd_index_reg, pause_any, pause_reg,
      rd_index, rd_index_reg, pause_any, pause_reg,
      take_branch, rs_index, rt_index,
      rs_index, rt_index,
      pc_source, mem_source, a_source, b_source, c_source, c_source_reg,
      pc_source, mem_source, a_source, b_source, c_source, c_source_reg,
      reg_dest, reg_dest_reg, c_bus)
      reg_dest, reg_dest_reg, c_bus)
   variable pause_mult_clock : std_logic;
   variable pause_mult_clock : std_logic;
begin
begin
   if (pc_source /= from_inc4 and pc_source /= from_opcode25_0) or
   if (pc_source /= from_inc4 and pc_source /= from_opcode25_0) or
Line 71... Line 69...
   else
   else
      pause_mult_clock := '0';
      pause_mult_clock := '0';
   end if;
   end if;
 
 
   pause_pipeline <= pause_mult_clock and pause_reg;
   pause_pipeline <= pause_mult_clock and pause_reg;
   take_branchD <= take_branch and not pause_any;
 
   rd_indexD <= rd_index_reg;
   rd_indexD <= rd_index_reg;
 
 
   if c_source_reg = c_from_alu then
   if c_source_reg = c_from_alu then
      reg_destD <= c_bus;
      reg_destD <= c_bus;
   else
   else

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.