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
|