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

Subversion Repositories raytrac

[/] [raytrac/] [branches/] [fp/] [fadd32.vhd] - Diff between revs 155 and 157

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

Rev 155 Rev 157
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"&not(s1delta(5))&"000"&s1delta(5)&"00";
                        when "010" =>  s1shifter(8 downto 0) <= "00"&not(s1delta(5))&"000"&s1delta(5)&"00";
                        when "001" =>  s1shifter(8 downto 0) <= '0'&not(s1delta(5))&"00000"&s1delta(5)&'0';
                        when "001" =>  s1shifter(8 downto 0) <= '0'&not(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);

powered by: WebSVN 2.1.0

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