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

Subversion Repositories raytrac

[/] [raytrac/] [trunk/] [raytrac.vhd] - Diff between revs 16 and 18

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

Rev 16 Rev 18
Line 31... Line 31...
use work.arithpack.all;
use work.arithpack.all;
 
 
--! La entidad raytrac es la top en la jerarquia de descripcion del RtEngine.\nRaytrac entity is the top one on the RtEngine description hierarchy.
--! La entidad raytrac es la top en la jerarquia de descripcion del RtEngine.\nRaytrac entity is the top one on the RtEngine description hierarchy.
 
 
--! RayTrac es basicamente una entidad que toma las entradas de cuatro vectores: A,B,C,D y las entradas opcode y addcode.
--! RayTrac es basicamente una entidad que toma las entradas de cuatro vectores: A,B,C,D y las entradas opcode y addcode.
--! En el momento de la carga se llevaran a cabo las siguientes operaciones:
--! En el momento de la carga se llevaran a cabo las siguientes operaciones: \n
--! \n\tProducto Punto => Si opcode es 0:\n\n\tA.B y C.D, los valores apareceran en las salidas DP0 y DP1. El tiempo transcurrido desde la carga de las entradas hasta la salida del resultado sera 4 clocks. 
--! - Producto Cruz (opcode = 1):
--! \n\tProducto Cruz  => Si opcode es 1:\n\n\tAxB si addcode es 0, CxD si addcode es 1, las componentes del vector resultante apareceran en CPX,CPY,CPZ 3 clocks, despues de la carga. 
--! - Cross Product (opcode = 1):
 
--! \n\n
 
--! \t Los resultados apareceran 3 clocks despues de la carga de los operadores y el codigo operacion
 
--! \n\n  
 
--! <table>
 
--! <tr>
 
--! <th></th>
 
--! <th></th><th>addcode=0</th><th></th>
 
--! </tr>
 
--! <tr>
 
--! <th>Opcode 1</th>
 
--! <td>CPX <= AxB<B> i</B></td>
 
--! <td>CPY <= AxB<B> j</B></td>
 
--! <td>CPZ <= AxB<B> k</B></td>
 
--! </tr>
 
--! </table>
 
--! \n
 
--! <table>
 
--! <tr>
 
--! <th></th>
 
--! <th></th><th>addcode=1</th><th></th>
 
--! </tr>
 
--! <tr>
 
--! <th>Opcode 1</th>
 
--! <td>CPX <= CxD<B> i</B></td>
 
--! <td>CPY <= CxD<B> j</B></td>
 
--! <td>CPZ <= CxD<B> k</B></td>
 
--! </tr>
 
--! </table>
 
--! \n
 
--! - Producto Punto (opcode = 0):
 
--! - Dot Product (opcode = 0):
 
--! \n\n
 
--! \t Los resultados se encontraran en DP0 y DP1 4 clocks despues de la carga. 
 
--! <table>
 
--! <tr>
 
--! <th></th><th>addcode, ignorar</th> 
 
--! </tr>
 
--! <tr>
 
--! <th>opcode=0</th><td> DP0 = A.B, DP1 = C.D</td>
 
--! </tr>
 
--! </table>
 
 
 
 
 
--!  - Producto Cruz  => Si opcode es 1:
 
--!  - AxB si addcode es 0, CxD si addcode es 1, las componentes del vector resultante apareceran en CPX,CPY,CPZ 3 clocks, despues de la carga. \n 
--! \n\nLos componentes instanciados en la descripcion conforman un pipeline de hasta 4 etapas. Por lo tanto es posible cargar vectores (A,B,C,D) y codigos de operacion (opcode y addcode) clock tras clock.   
--! \n\nLos componentes instanciados en la descripcion conforman un pipeline de hasta 4 etapas. Por lo tanto es posible cargar vectores (A,B,C,D) y codigos de operacion (opcode y addcode) clock tras clock.   
--! \n The RayTrac entity basically takes the inputs of 4 vectors: A,B,C,D and the opcode and addcode inputs.
--! \n The RayTrac entity basically takes the inputs of 4 vectors: A,B,C,D and the opcode and addcode inputs.
--! When this inputs are loaded, it will take place the following operations:
--! When this inputs are loaded, it will take place the following operations:
--! \n\tDot Product   => If opcode is 0:\n\n\tA.B and C.D, the resulting values will appear in the DP0 and DP1 outputs. The time taken once the inputs are loaded to the output of the results will be of 4 clocks.
--! \n\tDot Product   => If opcode is 0:\n\n\tA.B and C.D, the resulting values will appear in the DP0 and DP1 outputs. The time taken once the inputs are loaded to the output of the results will be of 4 clocks.
--! \n\tCross Product => If opcode is 1:\n\n\tAxB if addcode is 0, CxD if addcode es 1. The components of the resulting vector will appear in CPX,CPY,CPZ 3 clocks, after the input loading.
--! \n\tCross Product => If opcode is 1:\n\n\tAxB if addcode is 0, CxD if addcode es 1. The components of the resulting vector will appear in CPX,CPY,CPZ 3 clocks, after the input loading.
Line 54... Line 99...
 
 
 
 
        );
        );
end raytrac;
end raytrac;
 
 
 
--! Arquitectura general del RayTrac. \n RayTrac general architecture.
 
 
 
--! La Arquitectura general de RayTrac se consiste en 3 componentes esenciales:
 
--! - Etapa de registros para la carga de los operadores y el codigo de operacion.
 
--! - Etapa combinatoria para la seleccion de operadores, dependiendo del codigo de operacion.
 
--! - Etapa aritmetica del calculo del producto punto o el producto cruz segun el caso. 
 
 
architecture raytrac_arch of raytrac is
architecture raytrac_arch of raytrac is
        signal SA,SB,SC,SD                      : std_logic_vector(18*3-1 downto 0);
        signal SA,SB,SC,SD                      : std_logic_vector(18*3-1 downto 0);
        signal sopcode,saddcode         : std_logic;
        signal sopcode,saddcode         : std_logic;
        signal smf00,smf01,smf10,smf11,smf20,smf21,smf30,smf31,smf40,smf41,smf50,smf51  : std_logic_vector(17 downto 0);
        signal smf00,smf01,smf10,smf11,smf20,smf21,smf30,smf31,smf40,smf41,smf50,smf51  : std_logic_vector(17 downto 0);
 
 

powered by: WebSVN 2.1.0

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