Line 40... |
Line 40... |
architecture fmul32_arch of fmul32 is
|
architecture fmul32_arch of fmul32 is
|
|
|
|
|
|
|
--Stage 0 signals
|
--Stage 0 signals
|
|
signal s0dataa_alfa,s0dataa_beta,s0dataa_gama,s0datab : std_logic_vector(17 downto 0);
|
--!TBXSTART:MULT_STAGE0
|
--!TBXSTART:MULT_STAGE0
|
signal s0sga,s0sgb,s0zrs : std_logic;
|
signal s0sga,s0sgb,s0zrs : std_logic;
|
signal s0exp : std_logic_vector(7 downto 0);
|
signal s0exp : std_logic_vector(7 downto 0);
|
signal s0uma,s0umb : std_logic_vector(22 downto 0);
|
signal s0uma,s0umb : std_logic_vector(22 downto 0);
|
signal s0ac : std_logic_vector(35 downto 0);
|
signal s0ac : std_logic_vector(35 downto 0);
|
Line 98... |
Line 99... |
end process;
|
end process;
|
|
|
--! Combinatorial Gremlin Etapa 0 : multiplicacion de la mantissa, suma de los exponentes y multiplicación de los signos.
|
--! Combinatorial Gremlin Etapa 0 : multiplicacion de la mantissa, suma de los exponentes y multiplicación de los signos.
|
|
|
--! Multipliers
|
--! Multipliers
|
|
s0dataa_alfa <= s0zrs&s0uma(22 downto 6);
|
|
s0datab <= s0zrs&s0umb(22 downto 6);
|
mult18x18ac:lpm_mult
|
mult18x18ac: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 109... |
Line 112... |
lpm_widtha => 18,
|
lpm_widtha => 18,
|
lpm_widthb => 18,
|
lpm_widthb => 18,
|
lpm_widthp => 36
|
lpm_widthp => 36
|
)
|
)
|
port map (
|
port map (
|
dataa => s0zrs&s0uma(22 downto 6),
|
dataa => s0dataa_alfa,
|
datab => s0zrs&s0umb(22 downto 6),
|
datab => s0datab,
|
result => s0ac
|
result => s0ac
|
);
|
);
|
|
s0dataa_beta <= s0zrs&s0uma(22 downto 6);
|
mult18x6ad:lpm_mult
|
mult18x6ad: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 124... |
Line 128... |
lpm_widtha => 18,
|
lpm_widtha => 18,
|
lpm_widthb => 6,
|
lpm_widthb => 6,
|
lpm_widthp => 24
|
lpm_widthp => 24
|
)
|
)
|
port map (
|
port map (
|
dataa => s0zrs&s0uma(22 downto 6),
|
dataa => s0dataa_beta,
|
datab => s0umb(5 downto 0),
|
datab => s0umb(5 downto 0),
|
result => s0ad
|
result => s0ad
|
);
|
);
|
|
s0dataa_gama <= s0zrs&s0umb(22 downto 6);
|
mult18x6bc:lpm_mult
|
mult18x6bc: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 139... |
Line 144... |
lpm_widtha => 18,
|
lpm_widtha => 18,
|
lpm_widthb => 6,
|
lpm_widthb => 6,
|
lpm_widthp => 24
|
lpm_widthp => 24
|
)
|
)
|
port map (
|
port map (
|
dataa => s0zrs&s0umb(22 downto 6),
|
dataa => s0dataa_gama,
|
datab => s0uma(5 downto 0),
|
datab => s0uma(5 downto 0),
|
result => s0bc
|
result => s0bc
|
);
|
);
|
|
|
--! Exponent Addition
|
--! Exponent Addition
|