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

Subversion Repositories raytrac

[/] [raytrac/] [trunk/] [uf.vhd] - Diff between revs 67 and 77

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

Rev 67 Rev 77
Line 49... Line 49...
                        carry_logic : string := "CLA"
                        carry_logic : string := "CLA"
        );
        );
        port (
        port (
                opcode          : in std_logic; --! Entrada que dentro de la arquitectura funciona como selector de la operación que se lleva a cabo en la primera etapa de sumadores/restadores. 
                opcode          : in std_logic; --! Entrada que dentro de la arquitectura funciona como selector de la operación que se lleva a cabo en la primera etapa de sumadores/restadores. 
                m0f0,m0f1,m1f0,m1f1,m2f0,m2f1,m3f0,m3f1,m4f0,m4f1,m5f0,m5f1 : in std_logic_vector(17 downto 0); --! Entradas que van conectadas a los multiplicadores en la primera etapa de la descripción.  
                m0f0,m0f1,m1f0,m1f1,m2f0,m2f1,m3f0,m3f1,m4f0,m4f1,m5f0,m5f1 : in std_logic_vector(17 downto 0); --! Entradas que van conectadas a los multiplicadores en la primera etapa de la descripción.  
                cpx,cpy,cpz,dp0,dp1 : out std_logic_vector(31 downto 0); --! Salidas donde se registran los resultados de las operaciones aritméticas: cpx,cpy,cpz ser´n los componentes del vector que da por resultado el producto cruz entre los vectores AxB ó CxD.  
                cpx,cpy,cpz,dp0,dp1,kvx0,kvy0,kvz0,kvx1,kvy1,kvz1 : out std_logic_vector(31 downto 0); --! Salidas donde se registran los resultados de las operaciones aritméticas: cpx,cpy,cpz ser´n los componentes del vector que da por resultado el producto cruz entre los vectores AxB ó CxD. kvx0, kvy0, kvz0, kvx1, kvy1, kvz1 es el resultado de los multiplicadores   
                clk,rst         : in std_logic --! Las entradas de control usuales.  
                clk,rst         : in std_logic --! Las entradas de control usuales.  
        );
        );
end uf;
end uf;
 
 
architecture uf_arch of uf is
architecture uf_arch of uf is
Line 98... Line 98...
                clock   => clk,
                clock   => clk,
                dataa   => stage0mf00,
                dataa   => stage0mf00,
                datab   => stage0mf01,
                datab   => stage0mf01,
                result  => stage0p0
                result  => stage0p0
        );
        );
 
        kvx0 <= stage0p0;
        --! Multiplicador 1
        --! Multiplicador 1
        m1 : lpm_mult
        m1 : 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 =>  2,
                lpm_pipeline =>  2,
Line 117... Line 117...
                clock   => clk,
                clock   => clk,
                dataa   => stage0mf10,
                dataa   => stage0mf10,
                datab   => stage0mf11,
                datab   => stage0mf11,
                result  => stage0p1
                result  => stage0p1
        );
        );
 
        kvy0 <= stage0p1;
 
 
        --! Multiplicador 2
        --! Multiplicador 2
        m2 : lpm_mult
        m2 : lpm_mult
        generic map (
        generic map (
                lpm_hint =>  "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
                lpm_hint =>  "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
Line 136... Line 137...
                clock   => clk,
                clock   => clk,
                dataa   => stage0mf20,
                dataa   => stage0mf20,
                datab   => stage0mf21,
                datab   => stage0mf21,
                result  => stage0p2
                result  => stage0p2
        );
        );
 
        kvz0 <= stage0p2;
 
 
        --! Multiplicador 3
        --! Multiplicador 3
        m3 : lpm_mult
        m3 : lpm_mult
        generic map (
        generic map (
                lpm_hint =>  "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
                lpm_hint =>  "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
Line 155... Line 157...
                clock   => clk,
                clock   => clk,
                dataa   => stage0mf30,
                dataa   => stage0mf30,
                datab   => stage0mf31,
                datab   => stage0mf31,
                result  => stage0p3
                result  => stage0p3
        );
        );
 
        kvx1 <= stage0p3;
        --! Multiplicador 4
        --! Multiplicador 4
        m4 : lpm_mult
        m4 : 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 =>  2,
                lpm_pipeline =>  2,
Line 174... Line 176...
                clock   => clk,
                clock   => clk,
                dataa   => stage0mf40,
                dataa   => stage0mf40,
                datab   => stage0mf41,
                datab   => stage0mf41,
                result  => stage0p4
                result  => stage0p4
        );
        );
 
        kvy1 <= stage0p4;
 
 
        --! Multiplicador 5
        --! Multiplicador 5
        m5 : lpm_mult
        m5 : lpm_mult
        generic map (
        generic map (
                lpm_hint =>  "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
                lpm_hint =>  "DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=9",
Line 193... Line 196...
                clock   => clk,
                clock   => clk,
                dataa   => stage0mf50,
                dataa   => stage0mf50,
                datab   => stage0mf51,
                datab   => stage0mf51,
                result  => stage0p5
                result  => stage0p5
        );
        );
 
        kvz1 <= stage0p5;
 
 
 
 
        useIeee:
        useIeee:
        if use_std_logic_signed="YES" generate
        if use_std_logic_signed="YES" generate
                -- Adder Instantiation (sTaGe 1)
                -- Adder Instantiation (sTaGe 1)
Line 216... Line 219...
                stage1a1 <= stage1p2-stage1p3;  -- This is always going to be a substraction
                stage1a1 <= stage1p2-stage1p3;  -- This is always going to be a substraction
 
 
                -- Adder Instantiation (Stage 2)
                -- Adder Instantiation (Stage 2)
                stage2a3 <= stage2a0+stage2p2;
                stage2a3 <= stage2a0+stage2p2;
                stage2a4 <= stage2p3+stage2a2;
                stage2a4 <= stage2p3+stage2a2;
 
 
        end generate useIeee;
        end generate useIeee;
        dontUseIeee:
        dontUseIeee:
        if use_std_logic_signed="NO" generate
        if use_std_logic_signed="NO" generate
                --! Adder 0, 16 bit carry lookahead low adder.
                --! Adder 0, 16 bit carry lookahead low adder.
                a0low : adder
                a0low : adder

powered by: WebSVN 2.1.0

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