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

Subversion Repositories raytrac

[/] [raytrac/] [branches/] [fp/] [fmul32.vhd] - Diff between revs 118 and 121

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

Rev 118 Rev 121
Line 1... Line 1...
------------------------------------------------
------------------------------------------------
--! @file mul2.vhd
--! @file fmul32.vhd
--! @brief RayTrac Mantissa Multiplier  
--! @brief RayTrac Mantissa Multiplier  
--! @author Julián Andrés Guarín Reyes
--! @author Julián Andrés Guarín Reyes
--------------------------------------------------
--------------------------------------------------
 
 
 
 
-- RAYTRAC (FP BRANCH)
-- RAYTRAC (FP BRANCH)
-- Author Julian Andres Guarin
-- Author Julian Andres Guarin
-- mmp.vhd
-- fmul32.vhd
-- This file is part of raytrac.
-- This file is part of raytrac.
-- 
-- 
--     raytrac is free software: you can redistribute it and/or modify
--     raytrac is free software: you can redistribute it and/or modify
--     it under the terms of the GNU General Public License as published by
--     it under the terms of the GNU General Public License as published by
--     the Free Software Foundation, either version 3 of the License, or
--     the Free Software Foundation, either version 3 of the License, or
Line 20... Line 20...
--     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--     GNU General Public License for more details.
--     GNU General Public License for more details.
-- 
-- 
--     You should have received a copy of the GNU General Public License
--     You should have received a copy of the GNU General Public License
--     along with raytrac.  If not, see <http://www.gnu.org/licenses/>
--     along with raytrac.  If not, see <http://www.gnu.org/licenses/>
 
 
 
 
library ieee;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
 
use ieee.std_logic_unsigned.all;
use ieee.std_logic_unsigned.all;
 
entity fmul32 is
entity mul2 is
 
        port (
        port (
                clk             : in std_logic;
                clk             : in std_logic;
                a32,b32         : in std_logic_vector(31 downto 0);
                a32,b32         : in std_logic_vector(31 downto 0);
                p32                     : out std_logic_vector(31 downto 0)
                p32                     : out std_logic_vector(31 downto 0)
 
 
        );
        );
end mul2;
end fmul32;
 
architecture fmul32_arch of fmul32 is
architecture mul2_arch of mul2 is
 
 
 
 
 
        component lpm_mult
        component lpm_mult
        generic (
        generic (
                lpm_hint                        : string;
                lpm_hint                        : string;
Line 62... Line 57...
 
 
 
 
 
 
        signal s0sga,s0sgb,s0zrs,s1sgr,s2sgr:std_logic;
        signal s0sga,s0sgb,s0zrs,s1sgr,s2sgr:std_logic;
        signal s0exa,s0exb,s1exp,s2exp:std_logic_vector(7 downto 0);
        signal s0exa,s0exb,s1exp,s2exp:std_logic_vector(7 downto 0);
        signal s0exp : std_logic_vector(8 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 s0ad,s0bc,s1ad,s1bc:std_logic_vector(23 downto 0);
        signal s0ad,s0bc,s1ad,s1bc:std_logic_vector(23 downto 0);
        signal s0ac:std_logic_vector(35 downto 0);
        signal s0ac:std_logic_vector(35 downto 0);
 
 
 
 
Line 89... Line 84...
                        --! Etapa 0 multiplicacion de la mantissa, suma de los exponentes y multiplicaci&oacute;n de los signos.
                        --! Etapa 0 multiplicacion de la mantissa, suma de los exponentes y multiplicaci&oacute;n de los signos.
                        s1sgr <= s0sga xor s0sgb;
                        s1sgr <= s0sga xor s0sgb;
                        s1ad <= s0ad;
                        s1ad <= s0ad;
                        s1bc <= s0bc;
                        s1bc <= s0bc;
                        s1ac <= s0ac;
                        s1ac <= s0ac;
                        s1exp <= s0exp(7 downto 0);
                        s1exp <= s0exp;
 
 
                        --! Etapa 1 Sumas parciales
                        --! Etapa 1 Sumas parciales
                        s2umu <= s1umu(35 downto 11);
                        s2umu <= s1umu(35 downto 11);
                        s2sgr <= s1sgr;
                        s2sgr <= s1sgr;
                        s2exp <= s1exp;
                        s2exp <= s1exp;
Line 122... Line 117...
        generic map ("DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",0,"UNSIGNED","LPM_MULT",18,6,24)
        generic map ("DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",0,"UNSIGNED","LPM_MULT",18,6,24)
        port    map (s0zrs&s0umb(22 downto 6),s0uma(5 downto 0),s0bc);
        port    map (s0zrs&s0umb(22 downto 6),s0uma(5 downto 0),s0bc);
 
 
        --! Exponent Addition 
        --! Exponent Addition 
        process (s0sga,s0sgb,s0exa,s0exb)
        process (s0sga,s0sgb,s0exa,s0exb)
                variable i8s0exa,i8s0exb: integer range 0 to 255;
 
        begin
        begin
                i8s0exa:=conv_integer(s0exa);
 
                i8s0exb:=conv_integer(s0exb);
                if s0exa=x"00" or s0exb=x"00" then
                if i8s0exa = 0 or i8s0exb = 0  then
 
                        s0exp <= (others => '0');
                        s0exp <= (others => '0');
                        s0zrs <= '0';
                        s0zrs <= '0';
                else
                else
                        s0zrs<='1';
                        s0zrs<='1';
                        s0exp <= conv_std_logic_vector(i8s0exb+i8s0exa+129,9);
                        s0exp <= s0exa+s0exb+x"81";
                end if;
                end if;
        end process;
        end process;
 
 
        --! Etapa 1: Suma parcial de la multiplicacion. Suma del exponente      
        --! Etapa 1: Suma parcial de la multiplicacion. Suma del exponente      
        process(s1ac,s1ad,s1bc)
        process(s1ac,s1ad,s1bc)
Line 146... Line 140...
 
 
 
 
 
 
 
 
 
 
end mul2_arch;
 
 No newline at end of file
 No newline at end of file
 
end fmul32_arch;
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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