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

Subversion Repositories raytrac

[/] [raytrac/] [branches/] [fp/] [fadd32.vhd] - Diff between revs 137 and 139

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

Rev 137 Rev 139
Line 28... Line 28...
library lpm;
library lpm;
use lpm.all;
use lpm.all;
--! Esta entidad recibe dos n&uacutemeros en formato punto flotante IEEE 754, de precision simple y devuelve las mantissas signadas y corridas, y el exponente correspondiente al resultado antes de normalizarlo al formato float. 
--! Esta entidad recibe dos n&uacutemeros en formato punto flotante IEEE 754, de precision simple y devuelve las mantissas signadas y corridas, y el exponente correspondiente al resultado antes de normalizarlo al formato float. 
--!\nLas 2 mantissas y el exponente entran despues a la entidad add2 que suma las mantissas y entrega el resultado en formato IEEE 754.
--!\nLas 2 mantissas y el exponente entran despues a la entidad add2 que suma las mantissas y entrega el resultado en formato IEEE 754.
entity fadd32 is
entity fadd32 is
 
        generic (
 
                propagation_chain : string := "ON"
 
        );
        port (
        port (
                clk,dpc,ena     : in std_logic;
                clk,dpc,prop_in : in std_logic;
                a32,b32         : in std_logic_vector (31 downto 0);
                a32,b32         : in std_logic_vector (31 downto 0);
                c32                     : out std_logic_vector(31 downto 0)
                c32,prop_out            : out std_logic_vector(31 downto 0)
        );
        );
end fadd32;
end fadd32;
architecture fadd32_arch of fadd32 is
architecture fadd32_arch of fadd32 is
 
 
        component lpm_mult
        component lpm_mult
Line 65... Line 68...
        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
        signal s1ph,s6ph                                                                                                                                        : std_logic_vector(26 downto 0);
        signal s1ph,s6ph                                                                                                                                        : std_logic_vector(26 downto 0);
        signal s0a,s0b                                                                                                                                          : std_logic_vector(31 downto 0); -- Float 32 bit 
        signal s0a,s0b                                                                                                                                          : std_logic_vector(31 downto 0); -- Float 32 bit 
 
        signal sxprop : std_logic_vector(7 downto 0);
 
 
begin
begin
 
        propagation:
        process (clk,ena)
        if propagation_chain="ON" generate
 
                prop_out <= sxprop(7);
 
                process (clk)
 
                begin
 
                        if clk'event and clk='1' then
 
                                for i in 7 downto 1 loop
 
                                        sxprop(i) <= sxprop(i-1);
 
                                end loop;
 
                                sxprop(0) <= prop_in;
 
                        end if;
 
                end process;
 
        end generate propagation ;
 
        process (clk)
        begin
        begin
                if clk'event and clk='1' and ena='1' then
                if clk'event and clk='1'  then
 
 
                        --!Registro de entrada
                        --!Registro de entrada
                        s0a <= a32;
                        s0a <= a32;
                        s0b(31) <= dpc xor b32(31);     --! Importante: Integrar el signo en el operando B
                        s0b(31) <= dpc xor b32(31);     --! Importante: Integrar el signo en el operando B
                        s0b(30 downto 0) <= b32(30 downto 0);
                        s0b(30 downto 0) <= b32(30 downto 0);

powered by: WebSVN 2.1.0

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