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

Subversion Repositories raytrac

[/] [raytrac/] [branches/] [fp/] [dpc.vhd] - Diff between revs 167 and 171

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

Rev 167 Rev 171
Line 85... Line 85...
        --!TBXSTART:ARITHMETIC_RESULTS
        --!TBXSTART:ARITHMETIC_RESULTS
        signal sresult                                          : vectorblock08;
        signal sresult                                          : vectorblock08;
        signal sprd32blk                                        : vectorblock06;
        signal sprd32blk                                        : vectorblock06;
        signal sadd32blk                                        : vectorblock04;
        signal sadd32blk                                        : vectorblock04;
        signal ssqr32blk,sinv32blk                      : xfloat32;
        signal ssqr32blk,sinv32blk                      : xfloat32;
 
        signal snormfifo_q,snormfifo_d          : vectorblock03;
        --!TBXEND
        --!TBXEND
 
 
        signal snormfifo_q,snormfifo_d          : vectorblock03;
 
 
 
        --!TBXSTART:SYNC_CHAIN
        --!TBXSTART:SYNC_CHAIN
        signal ssync_chain                                      : std_logic_vector(28 downto 1);
        signal ssync_chain                                      : std_logic_vector(25 downto 1);
        --!TBXEND
 
        signal sres567w,sres123w,sres2w         : std_logic;
        signal sres567w,sres123w,sres2w         : std_logic;
        signal sres0w,sres4w                            : std_logic;
        signal sres0w,sres4w                            : std_logic;
 
        --!TBXEND
 
 
        --! Entradas de la señal de full de las colas de resultados. 
        --! Entradas de la señal de full de las colas de resultados. 
        signal sres567f,sres123f                        : std_logic;
        signal sres567f,sres123f                        : std_logic;
        signal sres24f,sres0f                           : std_logic;
        signal sres24f,sres0f                           : std_logic;
 
 
Line 109... Line 109...
        --! Cadena de sincronización: 29 posiciones.
        --! Cadena de sincronización: 29 posiciones.
        sync_chain_proc:
        sync_chain_proc:
        process(clk,rst,sync_chain_0)
        process(clk,rst,sync_chain_0)
        begin
        begin
                if rst=rstMasterValue then
                if rst=rstMasterValue then
                        ssync_chain(28 downto 1) <= (others => '0');
                        ssync_chain(25 downto 1) <= (others => '0');
                elsif clk'event and clk='1' then
                elsif clk'event and clk='1' then
                        for i in 28 downto 2 loop
                        for i in 25 downto 2 loop
                                ssync_chain(i) <= ssync_chain(i-1);
                                ssync_chain(i) <= ssync_chain(i-1);
                        end loop;
                        end loop;
                        ssync_chain(1) <= sync_chain_0;
                        ssync_chain(1) <= sync_chain_0;
                end if;
                end if;
        end process sync_chain_proc;
        end process sync_chain_proc;
 
 
        --! Escritura en las colas de resultados y escritura/lectura en las colas intermedias mediante cadena de resultados.
        --! Escritura en las colas de resultados y escritura/lectura en las colas intermedias mediante cadena de resultados.
        fifo32x09_w <= ssync_chain(5);
        fifo32x09_w <= ssync_chain(5);
        fifo32x23_w <= ssync_chain(1);
        fifo32x23_w <= ssync_chain(1);
        fifo32x09_r <= ssync_chain(14);
        fifo32x09_r <= ssync_chain(12);
        fifo32x23_r <= ssync_chain(25);
        fifo32x23_r <= ssync_chain(21);
 
 
 
 
        resw    <= sres567w&sres4w&sres123w&sres2w&sres0w;
        resw    <= sres567w&sres4w&sres123w&sres2w&sres0w;
        sync_chain_comb:
        sync_chain_comb:
        process (ssync_chain,addsub,crossprod,unary)
        process (ssync_chain,addsub,crossprod,unary)
Line 136... Line 136...
                        --!Desconectar los canales de Suma, Resta, Producto Punto y Producto Cruz
                        --!Desconectar los canales de Suma, Resta, Producto Punto y Producto Cruz
                        sres123w <= '0';
                        sres123w <= '0';
                        sres2w <= '0';
                        sres2w <= '0';
                        sres4w <= '0';
                        sres4w <= '0';
 
 
                        --! Producto Escalar, Normalizaci&oacute;n o Magnitusd 
                        --! Producto Escalar, Normalizaci&oacute;n o Magnitud 
                        sres567w <= ssync_chain(4) and crossprod and addsub;
                        sres567w <= ssync_chain(4) and crossprod and addsub;
                        sres0w <= ssync_chain(23) and not(addsub) and not(crossprod);
                        sres0w <= ssync_chain(19) and not(addsub) and not(crossprod);
 
 
                elsif addsub='1' then
                elsif addsub='1' then
 
 
                        --! Desconectar los canales de Normalizaci&oacute;n, Producto Escalar, Producto Punto C.D y Magnitud    
                        --! Desconectar los canales de Normalizaci&oacute;n, Producto Escalar, Producto Punto C.D y Magnitud    
                        sres567w <= '0';
                        sres567w <= '0';
                        sres0w <= '0';
                        sres0w <= '0';
                        sres4w <= '0';
                        sres4w <= '0';
 
 
 
 
                        --! Suma o Resta.
                        --! Suma o Resta.
                        sres123w <= ssync_chain(9);
                        sres123w <= ssync_chain(7);
                        sres2w <= ssync_chain(9);
                        sres2w <= ssync_chain(7);
 
 
                else
                else
 
 
                        --! Desconectar la escritura en los canales de Normalizaci&oacute;n, Producto Escalar, Suma, Resta y Magnitud.
                        --! Desconectar la escritura en los canales de Normalizaci&oacute;n, Producto Escalar, Suma, Resta y Magnitud.
                        sres567w <= '0';
                        sres567w <= '0';
                        sres0w <= '0';
                        sres0w <= '0';
 
 
                        --! Producto Punto o Cruz.
                        --! Producto Punto o Cruz.
                        sres2w <= (ssync_chain(22) and not(crossprod)) or (ssync_chain(13) and crossprod);
                        sres2w <= (ssync_chain(18) and not(crossprod)) or (ssync_chain(11) and crossprod);
                        sres4w <= ssync_chain(22) and not(crossprod);
                        sres4w <= ssync_chain(17) and not(crossprod);
                        sres123w <= ssync_chain(13) and crossprod;
                        sres123w <= ssync_chain(11) and crossprod;
 
 
                end if;
                end if;
        end process sync_chain_comb;
        end process sync_chain_comb;
 
 
 
 
Line 175... Line 175...
        add32blki       <= ssumando;
        add32blki       <= ssumando;
        resultoutput<= sresult;
        resultoutput<= sresult;
 
 
 
 
        stuff04:
        stuff04:
        for i in 02 downto 1 generate
        for i in aa downto a1 generate
                sadd32blk(i)  <= add32blko(i);
                sadd32blk(i)  <= add32blko(i);
        end generate stuff04;
        end generate stuff04;
 
 
 
 
        stuff03:
        stuff03:
Line 201... Line 201...
                        sprd32blk  <= prd32blko;
                        sprd32blk  <= prd32blko;
                end if;
                end if;
        end process;
        end process;
        --! Los productos del multiplicador 2 y 3, ya registrados dentro de dpc van a la cola intermedia del producto punto (fifo32x09_d)
        --! Los productos del multiplicador 2 y 3, ya registrados dentro de dpc van a la cola intermedia del producto punto (fifo32x09_d)
        --! Los unicos resultados de sumandos que de nuevo entran al DataPathControl (observar la pesta&ntilde;a del documento de excel) 
        --! Los unicos resultados de sumandos que de nuevo entran al DataPathControl (observar la pesta&ntilde;a del documento de excel) 
 
 
        fifo32x09_d <= sprd32blk(p3)&sprd32blk(p2);
        fifo32x09_d <= sprd32blk(p3)&sprd32blk(p2);
 
 
        register_adder0_and_inversor_output:
        register_adder0_and_inversor_output:
        process (clk)
        process (clk)
        begin
        begin
                if clk'event and clk='1' then
                if clk'event and clk='1' then
                        sadd32blk(a0) <= add32blko(a0);
                        sadd32blk(a0) <= add32blko(a0);
                        sadd32blk(aa) <= add32blko(aa);
 
                        sinv32blk <= inv32blko;
                        sinv32blk <= inv32blko;
                end if;
                end if;
        end process;
        end process;
 
 
 
 
Line 221... Line 220...
        --! Raiz Cuadrada.
        --! Raiz Cuadrada.
        ssqr32blk <= sqr32blko;
        ssqr32blk <= sqr32blko;
 
 
        --! Colas de salida de los distintos resultados;
        --! Colas de salida de los distintos resultados;
        sresult(0) <= ssqr32blk;
        sresult(0) <= ssqr32blk;
        sresult(1) <= sadd32blk(a0);
        sresult(1) <= add32blko(a0);
        sresult(2) <= sadd32blk(a1);
        sresult(2) <= sadd32blk(a1);
        sresult(3) <= sadd32blk(a2);
        sresult(3) <= sadd32blk(a2);
        sresult(4) <= sadd32blk(aa);
        sresult(4) <= sadd32blk(aa);
        sresult(5) <= sprd32blk(p3);
        sresult(5) <= prd32blko(p3);
        sresult(6) <= sprd32blk(p4);
        sresult(6) <= prd32blko(p4);
        sresult(7) <= sprd32blk(p5);
        sresult(7) <= prd32blko(p5);
 
 
        --! Cola de normalizacion
        --! Cola de normalizacion
        snormfifo_d(qx) <= sparaminput(ax);
        snormfifo_d(qx) <= sparaminput(ax);
        snormfifo_d(qy) <= sparaminput(ay);
        snormfifo_d(qy) <= sparaminput(ay);
        snormfifo_d(qz) <= sparaminput(az);
        snormfifo_d(qz) <= sparaminput(az);
 
 
 
 
 
 
        --! La entrada al inversor SIEMPRE viene con la salida de la raiz cuadrada
        --! La entrada al inversor SIEMPRE viene con la salida de la raiz cuadrada
        inv32blki <= sqr32blko;
        inv32blki <= ssqr32blk;
        --! La entrada de la ra&iacute;z cuadrada SIEMPRE viene con la salida del sumador 1.
        --! La entrada de la ra&iacute;z cuadrada SIEMPRE viene con la salida del sumador 1.
        sqr32blki <= sadd32blk(a1);
        sqr32blki <= sadd32blk(a1);
 
 
 
 
 
 
Line 377... Line 376...
                        ssumando(s0) <= sprd32blk(p0);
                        ssumando(s0) <= sprd32blk(p0);
                        ssumando(s1) <= sprd32blk(p1);
                        ssumando(s1) <= sprd32blk(p1);
                        if crossprod='0' then
                        if crossprod='0' then
                                ssumando(s2) <= sadd32blk(a0);
                                ssumando(s2) <= sadd32blk(a0);
                                ssumando(s3) <= sdpfifo_q(dpfifoab);
                                ssumando(s3) <= sdpfifo_q(dpfifoab);
                        else
                        elsif unary='0' then
                                ssumando(s2) <= sprd32blk(p2);
                                ssumando(s2) <= sprd32blk(p2);
                                ssumando(s3) <= sprd32blk(p3);
                                ssumando(s3) <= sprd32blk(p3);
 
                        else
 
                                ssumando(s2) <= sadd32blk(a0);
 
                                ssumando(s3) <= sdpfifo_q(dpfifoab);
 
 
                        end if;
                        end if;
                        ssumando(s4) <= sprd32blk(p4);
                        ssumando(s4) <= sprd32blk(p4);
                        ssumando(s5) <= sprd32blk(p5);
                        ssumando(s5) <= sprd32blk(p5);
                end if;
                end if;
        end process;
        end process;

powered by: WebSVN 2.1.0

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