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

Subversion Repositories raytrac

[/] [raytrac/] [trunk/] [arithpack.vhd] - Diff between revs 73 and 74

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

Rev 73 Rev 74
Line 51... Line 51...
 
 
        --! TestBenchState
        --! TestBenchState
        type tbState is (abcd,axb,cxd,stop);
        type tbState is (abcd,axb,cxd,stop);
 
 
        --! Constante con el nivel lógico de reset.
        --! Constante con el nivel lógico de reset.
        constant rstMasterValue : std_logic := '1';
        constant rstMasterValue : std_logic := '0';
 
 
        --! Constante: periodo del reloj, para una frecuencia de 50 MHz 
        --! Constante: periodo del reloj, para una frecuencia de 50 MHz 
        constant tclk : time := 20 ns;
        constant tclk : time := 20 ns;
 
 
        --! Constante: medio periodo de reloj.
        --! Constante: medio periodo de reloj.
Line 242... Line 242...
        end component;
        end component;
 
 
        --! SqrtDiv Unit::func, func, es una memoria que almacena alguna funci'on en el rango de [1,2). Los valores de la funci'on evaluada en este rango se encuentran almacenados en una memoria ROM que seleccione el desarrollador. 
        --! SqrtDiv Unit::func, func, es una memoria que almacena alguna funci'on en el rango de [1,2). Los valores de la funci'on evaluada en este rango se encuentran almacenados en una memoria ROM que seleccione el desarrollador. 
        component  func
        component  func
        generic (
        generic (
                memoryfilepath : string :="X:/Tesis/Workspace/hw/rt_lib/arith/src/trunk/sqrtdiv/memsqrt.mif"
                memoryfilepath : string :="X:/Tesis/Workspace/hw/rt_lib/arith/src/trunk/sqrtdiv/memsqrt.mif";
 
                awidth : integer := 9;
 
                qwidth : integer := 18
        );
        );
        port (
        port (
                ad0,ad1 : in std_logic_vector (8 downto 0);
                ad0,ad1 : in std_logic_vector (awidth-1 downto 0) := (others => '0');
                clk : in std_logic;
                clk : in std_logic;
                q0,q1 ; : out std_logic_vector(17 downto 0)
                q0,q1   : out std_logic_vector(qwidth-1 downto 0)
        );
        );
        end component;
        end component;
        --! SqrtDiv Unit::shifter2xstage, esta unidad funciona tal cual la unidad shifter, pero al doble de la velocidad. El problema es que la entidad entrega dos valores de N: exp es un std_logic_vector la primera mitad entregar'a exp0 y la mitad mas significativa ser'a exp1. 
        --! SqrtDiv Unit::shifter2xstage, esta unidad funciona tal cual la unidad shifter, pero al doble de la velocidad. El problema es que la entidad entrega dos valores de N: exp es un std_logic_vector la primera mitad entregar'a exp0 y la mitad mas significativa ser'a exp1. 
        --! De estos dos valores no signados, el valor que representa a N es el mayor de los 2. As'i mismo ocurre con las mantissas. Si el exp0 es mayor que exp1 se escoge add0 en vez de add1 y viceversa.
        --! De estos dos valores no signados, el valor que representa a N es el mayor de los 2. As'i mismo ocurre con las mantissas. Si el exp0 es mayor que exp1 se escoge add0 en vez de add1 y viceversa.
 
 
Line 264... Line 266...
                data    : in std_logic_vector (width-1 downto 0);
                data    : in std_logic_vector (width-1 downto 0);
                exp             : out std_logic_vector (2*integer(ceil(log(real(width),2.0)))-1 downto 0);
                exp             : out std_logic_vector (2*integer(ceil(log(real(width),2.0)))-1 downto 0);
                add             : out std_logic_vector (2*address_width-1 downto 0);
                add             : out std_logic_vector (2*address_width-1 downto 0);
                zero    : out std_logic
                zero    : out std_logic
        );
        );
end shifter2xstage;
        end component;
 
 
 
        component RLshifter
 
        generic (
 
                shiftFunction   : string  := "SQUARE_ROOT";
 
                mantissa_width  : integer := 18;
 
                iwidth                  : integer := 32;
 
                owidth                  : integer := 16
 
 
 
        );
 
        port (
 
                exp             : in std_logic_vector (integer(ceil(log(real(iwidth),2.0)))-1 downto 0);
 
                mantis  : in std_logic_vector (mantissa_width-1 downto 0);
 
                result  : out std_logic_vector (owidth-1 downto 0)
 
        );
 
        end component;
end package;
end package;
 
 
--! Funciones utilitarias, relacionadas sobre todo con el testbench
--! Funciones utilitarias, relacionadas sobre todo con el testbench
package body arithpack is
package body arithpack is
 
 

powered by: WebSVN 2.1.0

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