Line 23... |
Line 23... |
--! Biblioteca de definicion de senales y tipos estandares, comportamiento de operadores aritmeticos y logicos.
|
--! Biblioteca de definicion de senales y tipos estandares, comportamiento de operadores aritmeticos y logicos.
|
library ieee;
|
library ieee;
|
--! Paquete de definicion estandard de logica.
|
--! Paquete de definicion estandard de logica.
|
use ieee.std_logic_1164.all;
|
use ieee.std_logic_1164.all;
|
|
|
|
--use ieee.std_logic_unsigned.conv_integer;
|
|
|
|
|
--! Biblioteca de definicion de memorias de altera
|
--! Biblioteca de definicion de memorias de altera
|
library altera_mf;
|
library altera_mf;
|
--! Paquete para manejar memorias internas tipo M9K
|
--! Paquete para manejar memorias internas tipo M9K
|
use altera_mf.all;
|
use altera_mf.all;
|
|
|
--! Biblioteca de modulos parametrizados.
|
--! Biblioteca de modulos parametrizados.
|
library lpm;
|
library lpm;
|
use lpm.all;
|
use lpm.all;
|
|
|
|
--! Package de entrada y salida de texto.
|
|
use std.textio.all;
|
|
|
|
|
|
|
--! Package con las definiciones de constantes y entidades, que conformaran el Rt Engine. Tambien con algunas descripciones para realizar test bench.
|
--! Package con las definiciones de constantes y entidades, que conformaran el Rt Engine. Tambien con algunas descripciones para realizar test bench.
|
|
|
--! En general el package cuenta con entidades para instanciar, multiplicadores, sumadores/restadores y un decodificador de operaciones.
|
--! En general el package cuenta con entidades para instanciar, multiplicadores, sumadores/restadores y un decodificador de operaciones.
|
package arithpack is
|
package arithpack is
|
|
|
Line 42... |
Line 51... |
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 := '1';
|
|
|
|
--! Constante: periodo del reloj;
|
|
constant tclk : time := 20 ns;
|
|
constant tclk2: time := tclk/2;
|
|
constant tclk4: time := tclk/4;
|
|
|
|
|
--! Generacion de Clock y de Reset.
|
--! Generacion de Clock y de Reset.
|
component clock_gen
|
component clock_gen
|
generic (tclk : time := 20 ns);
|
generic (tclk : time := tclk);
|
port (clk,rst : out std_logic);
|
port (clk,rst : out std_logic);
|
end component;
|
end component;
|
|
|
--! Ray Trac: Implementacion del Rt Engine
|
--! Ray Trac: Implementacion del Rt Engine
|
component raytrac
|
component raytrac
|
Line 180... |
Line 195... |
result : out std_logic_vector (width-1 downto 0);
|
result : out std_logic_vector (width-1 downto 0);
|
cout : out std_logic
|
cout : out std_logic
|
);
|
);
|
end component;
|
end component;
|
|
|
|
|
|
procedure hexwrite_0(l:inout line; h: in std_logic_vector);
|
|
|
end package;
|
end package;
|
|
|
No newline at end of file
|
No newline at end of file
|
|
package body arithpack is
|
|
--! Funciones utilitarias, relacionadas sobre todo con el testbench
|
|
constant hexchars : string (1 to 16) := "0123456789ABCDEF";
|
|
|
|
procedure hexwrite_0(l:inout line;h:in std_logic_vector) is
|
|
variable index_high,index_low,acc : integer;
|
|
begin
|
|
for i in (h'high)/4 downto 0 loop
|
|
index_low:=i*4;
|
|
if (index_low+3)>h'high then
|
|
index_high := h'high;
|
|
else
|
|
index_high := i*4+3;
|
|
end if;
|
|
write(l,hexchars(1+ieee.std_logic_unsigned.conv_integer(h(index_high downto index_low))));
|
|
end loop;
|
|
end procedure;
|
|
end package body arithpack;
|
|
|
No newline at end of file
|
No newline at end of file
|