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

Subversion Repositories raytrac

[/] [raytrac/] [trunk/] [uf.vhd] - Diff between revs 13 and 14

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

Rev 13 Rev 14
Line 21... Line 21...
use work.arithpack.all;
use work.arithpack.all;
 
 
entity uf is
entity uf is
        port (
        port (
                opcode          : in std_logic;
                opcode          : in std_logic;
                m0f0,m0f1,m1f0m1f1,m2f0,m2f1,m3f0,m3f1,m4f0,m4f1,m5f0,m5f1 : in std_logic_vector(17 downto 0);
                m0f0,m0f1,m1f0,m1f1,m2f0,m2f1,m3f0,m3f1,m4f0,m4f1,m5f0,m5f1 : in std_logic_vector(17 downto 0);
                cpx,cpy,cpz,dp0,dp1 : out std_logic_vector(31 downto 0);
                cpx,cpy,cpz,dp0,dp1 : out std_logic_vector(31 downto 0);
                clk,rst         : in std_logic
                clk,rst         : in std_logic
        );
        );
end uf;
end uf;
 
 
Line 33... Line 33...
 
 
        -- Stage 0 signals
        -- Stage 0 signals
 
 
        signal s0mf00,s0mf01,s0mf10,s0mf11,s0mf20,s0mf21,s0mf30,s0mf31,s0mf40,s0mf41,s0mf50,s0mf51 : std_logic_vector(17 downto 0);
        signal s0mf00,s0mf01,s0mf10,s0mf11,s0mf20,s0mf21,s0mf30,s0mf31,s0mf40,s0mf41,s0mf50,s0mf51 : std_logic_vector(17 downto 0);
        signal s0p0,s0p1, s0p2, s0p3, s0p4, s0p5 : std_logic_vector(31 downto 0);
        signal s0p0,s0p1, s0p2, s0p3, s0p4, s0p5 : std_logic_vector(31 downto 0);
        signal s0opcode;
        signal s0opcode : std_logic;
 
 
        --Stage 1 signals 
        --Stage 1 signals 
 
 
        signal s1p0, s1p1, s1p2, s1p3, s1p4, s1p5 : std_logic_vector (31 downto 0);
        signal s1p0, s1p1, s1p2, s1p3, s1p4, s1p5 : std_logic_vector (31 downto 0);
        signal s1a0, s1a1, s1a2 : std_logic_vector (31 downto 0);
        signal s1a0, s1a1, s1a2 : std_logic_vector (31 downto 0);
        signal s1opcode;
        signal s1opcode : std_logic;
 
 
        -- Some support signals
        -- Some support signals
        signal s1_internalCarry : std_logic_vector(2 downto 0);
        signal s1_internalCarry : std_logic_vector(2 downto 0);
        signal s2_internalCarry : std_logic_vector(1 downto 0);
        signal s2_internalCarry : std_logic_vector(1 downto 0);
 
 
Line 55... Line 55...
 
 
begin
begin
 
 
        -- Multiplicator Instantiation (StAgE 0)
        -- Multiplicator Instantiation (StAgE 0)
 
 
        m0 : r_a18_b18_smul_sc32_r
        m0 : r_a18_b18_smul_c32_r
        port map (
        port map (
                aclr    => rst,
                aclr    => rst,
                clock   => clk,
                clock   => clk,
                dataa   => s0mf00,
                dataa   => s0mf00,
                datab   => s0mf01,
                datab   => s0mf01,
                result  => s0p0
                result  => s0p0
        );
        );
        m1 : r_a18_b18_smul_sc32_r
        m1 : r_a18_b18_smul_c32_r
        port map (
        port map (
                aclr    => rst,
                aclr    => rst,
                clock   => clk,
                clock   => clk,
                dataa   => s0mf10,
                dataa   => s0mf10,
                datab   => s0mf11,
                datab   => s0mf11,
                result  => s0p1
                result  => s0p1
        );
        );
        m2 : r_a18_b18_smul_sc32_r
        m2 : r_a18_b18_smul_c32_r
        port map (
        port map (
                aclr    => rst,
                aclr    => rst,
                clock   => clk,
                clock   => clk,
                dataa   => s0mf20,
                dataa   => s0mf20,
                datab   => s0mf21,
                datab   => s0mf21,
                result  => s0p2
                result  => s0p2
        );
        );
        m3 : r_a18_b18_smul_sc32_r
        m3 : r_a18_b18_smul_c32_r
        port map (
        port map (
                aclr    => rst,
                aclr    => rst,
                clock   => clk,
                clock   => clk,
                dataa   => s0mf30,
                dataa   => s0mf30,
                datab   => s0mf31,
                datab   => s0mf31,
                result  => s0p3
                result  => s0p3
        );
        );
        m4 : r_a18_b18_smul_sc32_r
        m4 : r_a18_b18_smul_c32_r
        port map (
        port map (
                aclr    => rst,
                aclr    => rst,
                clock   => clk,
                clock   => clk,
                dataa   => s0mf40,
                dataa   => s0mf40,
                datab   => s0mf41,
                datab   => s0mf41,
                result  => s0p4
                result  => s0p4
        );
        );
        m5 : r_a18_b18_smul_sc32_r
        m5 : r_a18_b18_smul_c32_r
        port map (
        port map (
                aclr    => rst,
                aclr    => rst,
                clock   => clk,
                clock   => clk,
                dataa   => s0mf50,
                dataa   => s0mf50,
                datab   => s0mf51,
                datab   => s0mf51,
Line 109... Line 109...
        -- Adder Instantiation (sTaGe 1)
        -- Adder Instantiation (sTaGe 1)
 
 
        --Adder 0, low adder 
        --Adder 0, low adder 
        a0low : adder
        a0low : adder
        generic map (
        generic map (
                w => 16,
                16,"CLA","YES"  --Carry Look Ahead Logic (More Gates Used, But Less Time)
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                                                --Yes instantiate Xor gates stage in the adder so we can substract on the opcode signal command.
                subtractor_selector     => "YES"        --Yes instantiate Xor gates stage in the adder so we can substract on the opcode signal command.
 
        )
        )
        port map        (
        port map        (
                a => s1p0(15 downto 0),
                a => s1p0(15 downto 0),
                b => s1p1(15 downto 0),
                b => s1p1(15 downto 0),
                s => s1opcode,
                s => s1opcode,
Line 126... Line 125...
        --Adder 0, high adder
        --Adder 0, high adder
        a0high : adder
        a0high : adder
        generic map (
        generic map (
                w => 16,
                w => 16,
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                subtractor_selector     => "YES"        --Yes instantiate Xor gates stage in the adder so we can substract on the opcode signal command.
                substractor_selector    => "YES"        --Yes instantiate Xor gates stage in the adder so we can substract on the opcode signal command.
        )
        )
        port map        (
        port map        (
                a => s1p0(31 downto 16),
                a => s1p0(31 downto 16),
                b => s1p1(31 downto 16),
                b => s1p1(31 downto 16),
                s => s1opcode,
                s => s1opcode,
Line 141... Line 140...
        --Adder 1, low adder 
        --Adder 1, low adder 
        a1low : adder
        a1low : adder
        generic map (
        generic map (
                w => 16,
                w => 16,
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                subtractor_selector     => "YES"        --Yes instantiate Xor gates stage in the adder so we can substract on the opcode signal command.
                substractor_selector    => "YES"        --Yes instantiate Xor gates stage in the adder so we can substract on the opcode signal command.
        )
        )
        port map        (
        port map        (
                a => s1p2(15 downto 0),
                a => s1p2(15 downto 0),
                b => s1p3(15 downto 0),
                b => s1p3(15 downto 0),
                s => s1opcode,
                s => s1opcode,
Line 156... Line 155...
        --Adder 1, high adder
        --Adder 1, high adder
        a1high : adder
        a1high : adder
        generic map (
        generic map (
                w => 16,
                w => 16,
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                subtractor_selector     => "YES"        --Yes instantiate Xor gates stage in the adder so we can substract on the opcode signal command.
                substractor_selector    => "YES"        --Yes instantiate Xor gates stage in the adder so we can substract on the opcode signal command.
        )
        )
        port map        (
        port map        (
                a => s1p2(31 downto 16),
                a => s1p2(31 downto 16),
                b => s1p3(31 downto 16),
                b => s1p3(31 downto 16),
                s => s1opcode,
                s => s1opcode,
                ci => s1_internalCarry(1),
                ci => s1_internalCarry(1),
                result => s1a1(31 downto 16),
                result => s1a1(31 downto 16),
                cout => open
                cout => open
        );
        );
        --Adder 2, low adder 
        --Adder 2, low adder 
        a1low : adder
        a2low : adder
        generic map (
        generic map (
                w => 16,
                w => 16,
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                subtractor_selector     => "YES"        --Yes instantiate Xor gates stage in the adder so we can substract on the opcode signal command.
                substractor_selector    => "YES"        --Yes instantiate Xor gates stage in the adder so we can substract on the opcode signal command.
        )
        )
        port map        (
        port map        (
                a => s1p4(15 downto 0),
                a => s1p4(15 downto 0),
                b => s1p5(15 downto 0),
                b => s1p5(15 downto 0),
                s => s1opcode,
                s => s1opcode,
                ci => '0',
                ci => '0',
                result => s1a2(15 downto 0),
                result => s1a2(15 downto 0),
                cout => s1_internalCarry(2)
                cout => s1_internalCarry(2)
        );
        );
        --Adder 2, high adder
        --Adder 2, high adder
        a1high : adder
        a2high : adder
        generic map (
        generic map (
                w => 16,
                w => 16,
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                subtractor_selector     => "YES"        --Yes instantiate Xor gates stage in the adder so we can substract on the opcode signal command.
                substractor_selector    => "YES"        --Yes instantiate Xor gates stage in the adder so we can substract on the opcode signal command.
        )
        )
        port map        (
        port map        (
                a => s1p4(31 downto 16),
                a => s1p4(31 downto 16),
                b => s1p5(31 downto 16),
                b => s1p5(31 downto 16),
                s => s1opcode,
                s => s1opcode,
Line 204... Line 203...
        --Adder 3, low adder 
        --Adder 3, low adder 
        a3low : adder
        a3low : adder
        generic map (
        generic map (
                w => 16,
                w => 16,
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                subtractor_selector     => "NO"         --No Just Add.
                substractor_selector    => "NO"         --No Just Add.
        )
        )
        port map        (
        port map        (
                a => s2a0(15 downto 0),
                a => s2a0(15 downto 0),
                b => s2p2(15 downto 0),
                b => s2p2(15 downto 0),
                s => open,
                s => '0',
                ci => '0',
                ci => '0',
                result => s2a3(15 downto 0),
                result => s2a3(15 downto 0),
                cout => s2_internalCarry(0)
                cout => s2_internalCarry(0)
        );
        );
        --Adder 3, high adder
        --Adder 3, high adder
        a3high : adder
        a3high : adder
        generic map (
        generic map (
                w => 16,
                w => 16,
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                subtractor_selector     => "NO"         --No Just Add.
                substractor_selector    => "NO"         --No Just Add.
        )
        )
        port map        (
        port map        (
                a => s2a0(31 downto 16),
                a => s2a0(31 downto 16),
                b => s2p2(31 downto 16),
                b => s2p2(31 downto 16),
                s => open,
                s => '0',
                ci => s2_internalCarry(0),
                ci => s2_internalCarry(0),
                result => s2a3(31 downto 16),
                result => s2a3(31 downto 16),
                cout => open
                cout => open
        );
        );
        --Adder 4, low adder 
        --Adder 4, low adder 
        a4low : adder
        a4low : adder
        generic map (
        generic map (
                w => 16,
                w => 16,
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                subtractor_selector     => "NO"         --No Just Add.
                substractor_selector    => "NO"         --No Just Add.
        )
        )
        port map        (
        port map        (
                a => s2p3(15 downto 0),
                a => s2p3(15 downto 0),
                b => s2a2(15 downto 0),
                b => s2a2(15 downto 0),
                s => open,
                s => '0',
                ci => '0',
                ci => '0',
                result => s2a4(15 downto 0),
                result => s2a4(15 downto 0),
                cout => s2_internalCarry(1)
                cout => s2_internalCarry(1)
        );
        );
        --Adder 4, high adder
        --Adder 4, high adder
        a4high : adder
        a4high : adder
        generic map (
        generic map (
                w => 16,
                w => 16,
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                carry_logic             => "CLA",       --Carry Look Ahead Logic (More Gates Used, But Less Time)
                subtractor_selector     => "NO"         --No Just Add.
                substractor_selector    => "NO"         --No Just Add.
        )
        )
        port map        (
        port map        (
                a => s2p3(31 downto 16),
                a => s2p3(31 downto 16),
                b => s2a2(31 downto 16),
                b => s2a2(31 downto 16),
                s => open,
                s => '0',
                ci => s2_internalCarry(1),
                ci => s2_internalCarry(1),
                result => s2a4(31 downto 16),
                result => s2a4(31 downto 16),
                cout => open
                cout => open
        );
        );
 
 
Line 296... Line 295...
        -- Looking into the design the stage 1 to stage 2 are the sequences pipe stages that must be controlled in this particular HDL.
        -- Looking into the design the stage 1 to stage 2 are the sequences pipe stages that must be controlled in this particular HDL.
        uf_seq: process (clk,rst)
        uf_seq: process (clk,rst)
        begin
        begin
 
 
                if rst=rstMasterValue then
                if rst=rstMasterValue then
                        s0opcode        <= (others => '0');
                        s0opcode        <= '0';
                        s1opcode        <= (others => '0');
                        s1opcode        <= '0';
 
 
                        s2a2 <= (others => '0');
                        s2a2 <= (others => '0');
                        s2p3 <= (others => '0');
                        s2p3 <= (others => '0');
                        s2p2 <= (others => '0');
                        s2p2 <= (others => '0');
                        s2a0 <= (others => '0');
                        s2a0 <= (others => '0');

powered by: WebSVN 2.1.0

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