Line 63... |
Line 63... |
|
|
--! Constante: cuarto de periodo del reloj.
|
--! Constante: cuarto de periodo del reloj.
|
constant tclk4: time := tclk/4;
|
constant tclk4: time := tclk/4;
|
|
|
--! Path del directorio donde se encuentra
|
--! Path del directorio donde se encuentra
|
constant memoryPath: string := "../../../MinGW/MSys/1.0/home/julian/code/testbench/trunk/sqrtdiv/";
|
--constant memoryPath: string := "../../../MinGW/MSys/1.0/home/julian/code/testbench/trunk/sqrtdiv/";
|
--constant memoryPath: string := "X:/Tesis/Workspace/hw/rt_lib/arith/src/trunk/sqrtdiv/"
|
--constant memoryPath: string := "X:/Tesis/Workspace/hw/rt_lib/arith/src/trunk/sqrtdiv/"
|
|
constant memoryPath: string := "";
|
--! Generacion de Clock y de Reset.
|
--! Generacion de Clock y de Reset.
|
component clock_gen
|
component clock_gen
|
generic (tclk : time := tclk);
|
generic (tclk : time := tclk);
|
port (clk,rst : out std_logic);
|
port (clk,rst : out std_logic);
|
end component;
|
end component;
|
Line 243... |
Line 243... |
zero : out std_logic
|
zero : out std_logic
|
);
|
);
|
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 funcsqrt
|
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;
|
awidth : integer := 9;
|
qwidth : integer := 18
|
qwidth : integer := 18
|
);
|
);
|
Line 255... |
Line 255... |
ad0,ad1 : in std_logic_vector (awidth-1 downto 0) := (others => '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(qwidth-1 downto 0)
|
q0,q1 : out std_logic_vector(qwidth-1 downto 0)
|
);
|
);
|
end component;
|
end component;
|
|
--! SqrtDic 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 funcinvr
|
|
generic (
|
|
memoryfilepath : string :="X:/Tesis/Workspace/hw/rt_lib/arith/src/trunk/sqrtdiv/meminvr.mif";
|
|
awidth : integer := 9;
|
|
qwidth : integer := 18
|
|
);
|
|
port (
|
|
ad0 : in std_logic_vector (awidth-1 downto 0) := (others => '0');
|
|
clk : in std_logic;
|
|
q0 : out std_logic_vector(qwidth-1 downto 0)
|
|
);
|
|
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.
|
|
|
component shifter2xstage is
|
component shifter2xstage is
|
generic (
|
generic (
|