Line 47... |
Line 47... |
signal s5token : std_logic_vector(2 downto 0);
|
signal s5token : std_logic_vector(2 downto 0);
|
signal s5tokena,s5tokenb,s5tokenc : std_logic;
|
signal s5tokena,s5tokenb,s5tokenc : std_logic;
|
--!TBXEND
|
--!TBXEND
|
signal s1delta : std_logic_vector(5 downto 0);
|
signal s1delta : std_logic_vector(5 downto 0);
|
signal s0delta,s1exp,s2exp,s3exp,s4exp,s5exp,s6exp,s5factor,s6factor,s7exp,s7factor : std_logic_vector(7 downto 0);
|
signal s0delta,s1exp,s2exp,s3exp,s4exp,s5exp,s6exp,s5factor,s6factor,s7exp,s7factor : std_logic_vector(7 downto 0);
|
signal s1shifter,s5factorhot9,s6factorhot9 : std_logic_vector(8 downto 0);
|
signal s1shifter,s5factorhot9,s6factorhot9,s1datab_8x,s6datab_4x : std_logic_vector(8 downto 0);
|
signal s1pl,s6pl : std_logic_vector(17 downto 0);
|
signal s1pl,s6pl,s1datab,s6datab : std_logic_vector(17 downto 0);
|
signal s6postshift,s7postshift : std_logic_vector(22 downto 0);
|
signal s6postshift,s7postshift : std_logic_vector(22 downto 0);
|
signal s1umantshift,s1umantfixed,s1postshift,s1xorslab,s2xorslab : std_logic_vector(23 downto 0);
|
signal s1umantshift,s1umantfixed,s1postshift,s1xorslab,s2xorslab : std_logic_vector(23 downto 0);
|
signal s5factorhot24 : std_logic_vector(23 downto 0);
|
signal s5factorhot24 : std_logic_vector(23 downto 0);
|
signal s2umantshift,s2mantfixed,s3mantfixed,s3mantshift,s4xorslab : std_logic_vector(24 downto 0);
|
signal s2umantshift,s2mantfixed,s3mantfixed,s3mantshift,s4xorslab : std_logic_vector(24 downto 0);
|
signal s4sresult,s5result,s6result : std_logic_vector(25 downto 0); -- Signed mantissa result
|
signal s4sresult,s5result,s6result : std_logic_vector(25 downto 0); -- Signed mantissa result
|
Line 157... |
Line 157... |
when "010" => s1shifter(8 downto 0) <= "00"¬(s1delta(5))&"000"&s1delta(5)&"00";
|
when "010" => s1shifter(8 downto 0) <= "00"¬(s1delta(5))&"000"&s1delta(5)&"00";
|
when "001" => s1shifter(8 downto 0) <= '0'¬(s1delta(5))&"00000"&s1delta(5)&'0';
|
when "001" => s1shifter(8 downto 0) <= '0'¬(s1delta(5))&"00000"&s1delta(5)&'0';
|
when others => s1shifter(8 downto 0) <= not(s1delta(5))&"0000000"&s1delta(5);
|
when others => s1shifter(8 downto 0) <= not(s1delta(5))&"0000000"&s1delta(5);
|
end case;
|
end case;
|
end process;
|
end process;
|
|
s1datab <= s1zero&s1umantshift(22 downto 06);
|
denormhighshiftermult:lpm_mult
|
denormhighshiftermult:lpm_mult
|
generic map (
|
generic map (
|
lpm_hint => "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
|
lpm_hint => "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
|
lpm_pipeline => 0,
|
lpm_pipeline => 0,
|
lpm_representation => "UNSIGNED",
|
lpm_representation => "UNSIGNED",
|
Line 169... |
Line 170... |
lpm_widthb => 18,
|
lpm_widthb => 18,
|
lpm_widthp => 27
|
lpm_widthp => 27
|
)
|
)
|
port map (
|
port map (
|
dataa => s1shifter,
|
dataa => s1shifter,
|
datab => s1zero&s1umantshift(22 downto 06),
|
datab => s1datab,
|
result => s1ph
|
result => s1ph
|
);
|
);
|
|
s1datab_8x <= s1umantshift(5 downto 0)&"000";
|
denormlowshiftermult:lpm_mult
|
denormlowshiftermult:lpm_mult
|
generic map (
|
generic map (
|
lpm_hint => "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
|
lpm_hint => "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
|
lpm_pipeline => 0,
|
lpm_pipeline => 0,
|
lpm_representation => "UNSIGNED",
|
lpm_representation => "UNSIGNED",
|
Line 184... |
Line 186... |
lpm_widthb => 9,
|
lpm_widthb => 9,
|
lpm_widthp => 18
|
lpm_widthp => 18
|
)
|
)
|
port map (
|
port map (
|
dataa => s1shifter,
|
dataa => s1shifter,
|
datab => s1umantshift(5 downto 0)&"000",
|
datab(8 downto 0) => s1datab_8x,
|
result => s1pl
|
result => s1pl
|
);
|
);
|
|
|
s1postshift(23 downto 7) <= s1ph(25 downto 9);
|
s1postshift(23 downto 7) <= s1ph(25 downto 9);
|
s1postshift(06 downto 0) <= s1ph(08 downto 2) or s1pl(17 downto 11);
|
s1postshift(06 downto 0) <= s1ph(08 downto 2) or s1pl(17 downto 11);
|
Line 251... |
Line 253... |
end case;
|
end case;
|
|
|
end process;
|
end process;
|
|
|
--! Etapa 6: Ejecutar el corrimiento para normalizar la mantissa.
|
--! Etapa 6: Ejecutar el corrimiento para normalizar la mantissa.
|
|
s6datab <= s6result(24 downto 7);
|
normhighshiftermult:lpm_mult
|
normhighshiftermult:lpm_mult
|
generic map (
|
generic map (
|
lpm_hint => "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
|
lpm_hint => "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
|
lpm_pipeline => 0,
|
lpm_pipeline => 0,
|
lpm_representation => "UNSIGNED",
|
lpm_representation => "UNSIGNED",
|
Line 263... |
Line 266... |
lpm_widthb => 18,
|
lpm_widthb => 18,
|
lpm_widthp => 27
|
lpm_widthp => 27
|
)
|
)
|
port map (
|
port map (
|
dataa => s6factorhot9,
|
dataa => s6factorhot9,
|
datab => s6result(24 downto 7),
|
datab => s6datab,
|
result => s6ph
|
result => s6ph
|
);
|
);
|
|
s6datab_4x <= s6result(06 downto 0)&"00";
|
normlowshiftermult:lpm_mult
|
normlowshiftermult:lpm_mult
|
generic map (
|
generic map (
|
lpm_hint => "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
|
lpm_hint => "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
|
lpm_pipeline => 0,
|
lpm_pipeline => 0,
|
lpm_representation => "UNSIGNED",
|
lpm_representation => "UNSIGNED",
|
Line 278... |
Line 282... |
lpm_widthb => 9,
|
lpm_widthb => 9,
|
lpm_widthp => 18
|
lpm_widthp => 18
|
)
|
)
|
port map (
|
port map (
|
dataa => s6factorhot9,
|
dataa => s6factorhot9,
|
datab => s6result(06 downto 0)&"00",
|
datab => s6datab_4x,
|
result => s6pl
|
result => s6pl
|
);
|
);
|
s6postshift(22 downto 15) <= s6ph(16 downto 09);
|
s6postshift(22 downto 15) <= s6ph(16 downto 09);
|
s6postshift(14 downto 06) <= s6ph(08 downto 00) + s6pl(17 downto 09);
|
s6postshift(14 downto 06) <= s6ph(08 downto 00) + s6pl(17 downto 09);
|
s6postshift(05 downto 00) <= s6pl(08 downto 03);
|
s6postshift(05 downto 00) <= s6pl(08 downto 03);
|