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

Subversion Repositories raytrac

[/] [raytrac/] [branches/] [fp/] [arithpack.vhd] - Diff between revs 157 and 158

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

Rev 157 Rev 158
Line 83... Line 83...
 
 
        component fadd32
        component fadd32
        port (
        port (
                clk : in std_logic;
                clk : in std_logic;
                dpc : in std_logic;
                dpc : in std_logic;
                a32 : in std_logic_vector (31 downto 0);
                a32 : in xfloat32;
                b32 : in std_logic_vector (31 downto 0);
                b32 : in xfloat32;
                c32 : out std_logic_vector (31 downto 0)
                c32 : out xfloat32
        );
        );
        end component;
        end component;
        component fmul32
        component fmul32
        port (
        port (
                clk : in std_logic;
                clk : in std_logic;
                a32 : in std_logic_vector (31 downto 0);
                a32 : in xfloat32;
                b32 : in std_logic_vector (31 downto 0);
                b32 : in xfloat32;
                p32 : out std_logic_vector (31 downto 0)
                p32 : out xfloat32
        );
        );
        end component;
        end component;
 
 
 
 
        --! Contadores para la máquina de estados.
        --! Contadores para la máquina de estados.
Line 243... Line 243...
        end component;
        end component;
        --! Bloque de memorias
        --! Bloque de memorias
        component memblock
        component memblock
        generic (
        generic (
                blocksize                                       : integer;
                blocksize                                       : integer;
                external_writeable_blocks       : integer;
 
                external_readable_blocks        : integer;
 
                external_readable_widthad       : integer;
                external_readable_widthad       : integer;
                external_writeable_widthad      : integer
                external_writeable_widthad      : integer
        );
        );
        port (
        port (
 
 
 
 
                clk,rst,dpfifo_rd,normfifo_rd,dpfifo_wr,normfifo_wr : in std_logic;
                clk,rst,dpfifo_rd,normfifo_rd,dpfifo_wr,normfifo_wr : in std_logic;
                instrfifo_rd : in std_logic;
                instrfifo_rd : in std_logic;
                resultfifo_wr: in std_logic_vector(external_readable_blocks-1 downto 0);
                resultfifo_wr: in std_logic_vector(8-1 downto 0);
                instrfifo_empty: out std_logic; ext_rd,ext_wr: in std_logic;
                instrfifo_empty: out std_logic; ext_rd,ext_wr: in std_logic;
                ext_wr_add : in std_logic_vector(external_writeable_widthad+widthadmemblock-1 downto 0);
                ext_wr_add : in std_logic_vector(external_writeable_widthad+widthadmemblock-1 downto 0);
                ext_rd_add : in std_logic_vector(external_readable_widthad-1 downto 0);
                ext_rd_add : in std_logic_vector(external_readable_widthad-1 downto 0);
                ext_d: in std_logic_vector(floatwidth-1 downto 0);
                ext_d: in std_logic_vector(floatwidth-1 downto 0);
                int_d : in std_logic_vector(external_readable_blocks*floatwidth-1 downto 0);
                int_d : in vectorblock08;
                resultfifo_full  : out std_logic_vector(3 downto 0);
                resultfifo_full  : out std_logic_vector(3 downto 0);
                ext_q,instrfifo_q : out std_logic_vector(floatwidth-1 downto 0);
                ext_q,instrfifo_q : out std_logic_vector(floatwidth-1 downto 0);
                int_q : out std_logic_vector(external_writeable_blocks*floatwidth-1 downto 0);
                int_q : out vectorblock12;
                int_rd_add : in std_logic_vector(2*widthadmemblock-1 downto 0);
                int_rd_add : in std_logic_vector(2*widthadmemblock-1 downto 0);
                dpfifo_d : in std_logic_vector(floatwidth*2-1 downto 0);
                dpfifo_d : in std_logic_vector(floatwidth*2-1 downto 0);
                normfifo_d : in std_logic_vector(floatwidth*3-1 downto 0);
                normfifo_d : in std_logic_vector(floatwidth*3-1 downto 0);
                dpfifo_q : out std_logic_vector(floatwidth*2-1 downto 0);
                dpfifo_q : out std_logic_vector(floatwidth*2-1 downto 0);
                normfifo_q : out std_logic_vector(floatwidth*3-1 downto 0)
                normfifo_q : out std_logic_vector(floatwidth*3-1 downto 0)
Line 273... Line 271...
        end component;
        end component;
        --! Bloque decodificacion DataPath Control.
        --! Bloque decodificacion DataPath Control.
        component dpc
        component dpc
        port (
        port (
                clk,rst                                 : in    std_logic;
                clk,rst                                 : in    std_logic;
                paraminput                              : in    std_logic_vector ((12*floatwidth)-1 downto 0);   --! Vectores A,B,C,D
                paraminput                              : in    vectorblock12;  --! Vectores A,B,C,D
                prd32blko                               : in    std_logic_vector ((06*floatwidth)-1 downto 0);   --! Salidas de los 6 multiplicadores.
                prd32blko                               : in    vectorblock06;  --! Salidas de los 6 multiplicadores.
                add32blko                               : in    std_logic_vector ((04*floatwidth)-1 downto 0);   --! Salidas de los 4 sumadores.
                add32blko                               : in    vectorblock04;  --! Salidas de los 4 sumadores.
                sqr32blko,inv32blko             : in    std_logic_vector (floatwidth-1 downto 0);                --! Salidas de la raiz cuadradas y el inversor.
                sqr32blko,inv32blko             : in    std_logic_vector (floatwidth-1 downto 0);                --! Salidas de la raiz cuadradas y el inversor.
                fifo32x23_q                             : in    std_logic_vector (03*floatwidth-1 downto 0);             --! Salida de la cola intermedia.
                fifo32x23_q                             : in    std_logic_vector (03*floatwidth-1 downto 0);             --! Salida de la cola intermedia.
                fifo32x09_q                             : in    std_logic_vector (02*floatwidth-1 downto 0);     --! Salida de las colas de producto punto. 
                fifo32x09_q                             : in    std_logic_vector (02*floatwidth-1 downto 0);     --! Salida de las colas de producto punto. 
                unary,crossprod,addsub  : in    std_logic;                                                                      --! Bit con el identificador del bloque AB vs CD e identificador del sub bloque (A/B) o (C/D). 
                unary,crossprod,addsub  : in    std_logic;                                                                      --! Bit con el identificador del bloque AB vs CD e identificador del sub bloque (A/B) o (C/D). 
                sync_chain_0                    : in    std_logic;                                                                      --! Señal de dato valido que se va por toda la cadena de sincronizacion.
                sync_chain_0                    : in    std_logic;                                                                      --! Señal de dato valido que se va por toda la cadena de sincronizacion.
                eoi_int                                 : in    std_logic;                                                                      --! Señal de interrupción de final de instrucci&ocaute;n.
                eoi_int                                 : in    std_logic;                                                                      --! Señal de interrupción de final de instrucci&ocaute;n.
                eoi_demuxed_int                 : out   std_logic_vector (3 downto 0);                           --! Señal de interrup&ocaute;n de final de instrucción pero esta vez va asociada a la instruccón UCA.
                eoi_demuxed_int                 : out   std_logic_vector (3 downto 0);                           --! Señal de interrup&ocaute;n de final de instrucción pero esta vez va asociada a la instruccón UCA.
                sqr32blki,inv32blki             : out   std_logic_vector (floatwidth-1 downto 0);                --! Salidas de las 2 raices cuadradas y los 2 inversores.
                sqr32blki,inv32blki             : out   std_logic_vector (floatwidth-1 downto 0);                --! Salidas de las 2 raices cuadradas y los 2 inversores.
                fifo32x26_d                             : out   std_logic_vector (03*floatwidth-1 downto 0);             --! Entrada a la cola intermedia para la normalización.
                fifo32x26_d                             : out   std_logic_vector (03*floatwidth-1 downto 0);             --! Entrada a la cola intermedia para la normalización.
                fifo32x09_d                             : out   std_logic_vector (02*floatwidth-1 downto 0);             --! Entrada a las colas intermedias del producto punto.         
                fifo32x09_d                             : out   std_logic_vector (02*floatwidth-1 downto 0);             --! Entrada a las colas intermedias del producto punto.         
                prd32blki                               : out   std_logic_vector ((12*floatwidth)-1 downto 0);   --! Entrada de los 12 factores en el bloque de multiplicación respectivamente.
                prd32blki                               : out   vectorblock12;  --! Entrada de los 12 factores en el bloque de multiplicación respectivamente.
                add32blki                               : out   std_logic_vector ((08*floatwidth)-1 downto 0);   --! Entrada de los 8 sumandos del bloque de 4 sumadores.  
                add32blki                               : out   vectorblock08;  --! Entrada de los 8 sumandos del bloque de 4 sumadores.  
                resw                                    : out   std_logic_vector (4 downto 0);                           --! Salidas de escritura y lectura en las colas de resultados.
                resw                                    : out   std_logic_vector (4 downto 0);                           --! Salidas de escritura y lectura en las colas de resultados.
                fifo32x09_w                             : out   std_logic;
                fifo32x09_w                             : out   std_logic;
                fifo32x23_w,fifo32x09_r : out   std_logic;
                fifo32x23_w,fifo32x09_r : out   std_logic;
                fifo32x23_r                             : out   std_logic;
                fifo32x23_r                             : out   std_logic;
                resf_vector                             : in    std_logic_vector(3 downto 0);                            --! Entradas de la señal de full de las colas de resultados. 
                resf_vector                             : in    std_logic_vector(3 downto 0);                            --! Entradas de la señal de full de las colas de resultados. 
                resf_event                              : out   std_logic;                                                                      --! Salida decodificada que indica que la cola de resultados de la operación que está en curso.
                resf_event                              : out   std_logic;                                                                      --! Salida decodificada que indica que la cola de resultados de la operación que está en curso.
                resultoutput                    : out   std_logic_vector ((08*floatwidth)-1 downto 0)    --! 8 salidas de resultados, pues lo máximo que podrá calcularse por cada clock son 2 vectores.
                resultoutput                    : out   vectorblock08   --! 8 salidas de resultados, pues lo máximo que podrá calcularse por cada clock son 2 vectores.
        );
        );
        end component;
        end component;
        --! Bloque Aritmetico de Sumadores y Multiplicadores (madd)
        --! Bloque Aritmetico de Sumadores y Multiplicadores (madd)
        component arithblock
        component arithblock
        port (
        port (
Line 306... Line 304...
                clk     : in std_logic;
                clk     : in std_logic;
                rst : in std_logic;
                rst : in std_logic;
 
 
                dpc : in std_logic;
                dpc : in std_logic;
 
 
                f       : in std_logic_vector (12*32-1 downto 0);
                f       : in vectorblock12;
                a       : in std_logic_vector (8*32-1 downto 0);
                a       : in vectorblock08;
 
 
                s       : out std_logic_vector (4*32-1 downto 0);
                s       : out vectorblock04;
                p       : out std_logic_vector (6*32-1 downto 0)
                p       : out vectorblock06
 
 
        );
        );
        end component;
        end component;
        --! Bloque de Raiz Cuadrada
        --! Bloque de Raiz Cuadrada
        component sqrt32
        component sqrt32
        port (
        port (
 
 
                clk     : in std_logic;
                clk     : in std_logic;
                rd32: in std_logic_vector(31 downto 0);
                rd32: in xfloat32;
                sq32: out std_logic_vector(31 downto 0)
                sq32: out xfloat32
        );
        );
        end component;
        end component;
        --! Bloque de Inversores.
        --! Bloque de Inversores.
        component invr32
        component invr32
        port (
        port (
 
 
                clk             : in std_logic;
                clk             : in std_logic;
                dvd32   : in std_logic_vector(31 downto 0);
                dvd32   : in xfloat32;
                qout32  : out std_logic_vector(31 downto 0)
                qout32  : out xfloat32
        );
        );
        end component;
        end component;
 
 
 
 
 
 
Line 469... Line 467...
                return tmp;
                return tmp;
        end function;
        end function;
 
 
        function ap_iCtrlState2string(i:iCtrlState) return string is
        function ap_iCtrlState2string(i:iCtrlState) return string is
 
 
                variable tmp:string (1 to 1024);
                variable tmp:string (1 to 9);
 
 
        begin
        begin
 
 
                case i is
                case i is
                        when WAITING_FOR_AN_EVENT =>
                        when WAITING_FOR_AN_EVENT =>
Line 481... Line 479...
                        when FIRING_INTERRUPTIONS =>
                        when FIRING_INTERRUPTIONS =>
                                tmp:="FIRE_INTx";
                                tmp:="FIRE_INTx";
                        when SUSPEND =>
                        when SUSPEND =>
                                tmp:="SUSPENDED";
                                tmp:="SUSPENDED";
                        when others =>
                        when others =>
                                tmp:="Pandora Box Opened -- Illegal iCtrlState value";
                                tmp:="ILGL__VAL";
                end case;
                end case;
 
 
                return tmp;
                return tmp;
 
 
        end function;
        end function;
Line 529... Line 527...
 
 
        end function;
        end function;
 
 
 
 
        function ap_macState2string(s:macState) return string is
        function ap_macState2string(s:macState) return string is
                variable tmp:string (1 to 1024);
                variable tmp:string (1 to 6);
        begin
        begin
                case s is
                case s is
                        when LOAD_INSTRUCTION =>
                        when LOAD_INSTRUCTION =>
                                tmp:="LD_INS";
                                tmp:="LD_INS";
                        when FLUSH_ARITH_PIPELINE =>
                        when FLUSH_ARITH_PIPELINE =>
                                tmp:="FL_ARP";
                                tmp:="FL_ARP";
                        when EXECUTE_INSTRUCTION =>
                        when EXECUTE_INSTRUCTION =>
                                tmp:="EX_INS";
                                tmp:="EX_INS";
                        when others =>
                        when others =>
                                tmp:="macStateException:HELL_ON_EARTH";
                                tmp:="HEL_ON";
                end case;
                end case;
                return tmp;
                return tmp;
        end function;
        end function;
 
 
        constant hexchars : string (1 to 16) := "0123456789ABCDEF";
        constant hexchars : string (1 to 16) := "0123456789ABCDEF";

powered by: WebSVN 2.1.0

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