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

Subversion Repositories ion

[/] [ion/] [trunk/] [vhdl/] [mips_mult.vhdl] - Diff between revs 12 and 21

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

Rev 12 Rev 21
Line 119... Line 119...
      a_neg, b_neg, sum, sign_reg, mode_reg, negate_reg,
      a_neg, b_neg, sum, sign_reg, mode_reg, negate_reg,
      count_reg, aa_reg, bb_reg, upper_reg, lower_reg)
      count_reg, aa_reg, bb_reg, upper_reg, lower_reg)
      variable count : std_logic_vector(2 downto 0);
      variable count : std_logic_vector(2 downto 0);
   begin
   begin
      count := "001";
      count := "001";
 
      -- @ion Old asynchronous reset converted to synchronous, for consistency
 
      -- (Code indenting mangled by the new 'if' level)
 
      --if reset_in = '1' then
 
      if rising_edge(clk) then
      if reset_in = '1' then
      if reset_in = '1' then
         mode_reg <= '0';
         mode_reg <= '0';
         negate_reg <= '0';
         negate_reg <= '0';
         sign_reg <= '0';
         sign_reg <= '0';
         sign2_reg <= '0';
         sign2_reg <= '0';
         count_reg <= "000000";
         count_reg <= "000000";
         aa_reg <= ZERO;
         aa_reg <= ZERO;
         bb_reg <= ZERO;
         bb_reg <= ZERO;
         upper_reg <= ZERO;
         upper_reg <= ZERO;
         lower_reg <= ZERO;
         lower_reg <= ZERO;
      elsif rising_edge(clk) then
      --elsif rising_edge(clk) then
 
      else
         case mult_func is
         case mult_func is
            when MULT_WRITE_LO =>
            when MULT_WRITE_LO =>
               lower_reg <= a;
               lower_reg <= a;
               negate_reg <= '0';
               negate_reg <= '0';
            when MULT_WRITE_HI =>
            when MULT_WRITE_HI =>
Line 227... Line 232...
               end if; --count
               end if; --count
 
 
         end case;
         end case;
 
 
      end if;
      end if;
 
      end if;
 
 
   end process;
   end process;
 
 
end; --architecture logic
end; --architecture logic
 
 
Line 246... Line 252...
-- as @note1 but with no apparent improvement in synthesis results.
-- as @note1 but with no apparent improvement in synthesis results.
--
--
-- @note3 : pause_out active until operation complete
-- @note3 : pause_out active until operation complete
-- The original Plasma module allowed the pipeline and the multiplier to run
-- The original Plasma module allowed the pipeline and the multiplier to run
-- concurrently until the multiplier result was needed, and only then the
-- concurrently until the multiplier result was needed, and only then the
-- pipeline was stalled.
-- pipeline was stalled if the mul/div operation had not finished yet.
-- We want to make sure we can abort a mul/div so for the time being we stall 
-- We want to make sure we can abort a mul/div so for the time being we stall 
-- until the operation is complete.
-- until the operation is complete.
-- note that if we later want to change this, the parent module will need 
-- I *think* that's what the libraries and the toolchain assume anyway.
 
-- Note that if we later want to change this, the parent module will need 
-- changes too (logic for p1_muldiv_running).
-- changes too (logic for p1_muldiv_running).
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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