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

Subversion Repositories theia_gpu

[/] [theia_gpu/] [tags/] [latest_stable/] [rtl/] [Collaterals/] [aDefinitions.v] - Diff between revs 37 and 60

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

Rev 37 Rev 60
Line 33... Line 33...
//Verilog provides a `default_nettype none compiler directive.  When
//Verilog provides a `default_nettype none compiler directive.  When
//this directive is set, implicit data types are disabled, which will make any
//this directive is set, implicit data types are disabled, which will make any
//undeclared signal name a syntax error.This is very usefull to avoid annoying
//undeclared signal name a syntax error.This is very usefull to avoid annoying
//automatic 1 bit long wire declaration where you don't want them to be!
//automatic 1 bit long wire declaration where you don't want them to be!
`default_nettype none
`default_nettype none
 
 
 
//The clock cycle
 
`define CLOCK_CYCLE 5
 
`define CLOCK_PERIOD 10
//---------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
//Defines the Scale. This very important because it sets the fixed point precsision.
//Defines the Scale. This very important because it sets the fixed point precsision.
//The Scale defines the number bits that are used as the decimal part of the number.
//The Scale defines the number bits that are used as the decimal part of the number.
//The code has been written in such a way that allows you to change the value of the
//The code has been written in such a way that allows you to change the value of the
//Scale, so that it is possible to experimet with different scenarios. SCALE can be
//Scale, so that it is possible to experimet with different scenarios. SCALE can be
Line 68... Line 72...
//that is used for the jump familiy of instructions (see Documentation).
//that is used for the jump familiy of instructions (see Documentation).
//Also the MSB of Operand is used by the decoder to distinguish 
//Also the MSB of Operand is used by the decoder to distinguish 
//between Type I and Type II instructions.
//between Type I and Type II instructions.
`define INSTRUCTION_WIDTH               64//55
`define INSTRUCTION_WIDTH               64//55
`define INSTRUCTION_OP_LENGTH 16//7
`define INSTRUCTION_OP_LENGTH 16//7
 
`define INSTRUCTION_IMM_BITPOS 54
`define INSTRUCTION_IMM_BIT     6               //don't change this!
`define INSTRUCTION_IMM_BIT     6               //don't change this!
 
 
//Defines the Lenght of Memory blocks
//Defines the Lenght of Memory blocks
`define DATA_ROW_WIDTH  96
`define DATA_ROW_WIDTH  96
`define DATA_ADDRESS_WIDTH              16
`define DATA_ADDRESS_WIDTH              16
`define ROM_ADDRESS_WIDTH               16
`define ROM_ADDRESS_WIDTH               16
 
`define ROM_ADDRESS_SEL_MASK  `ROM_ADDRESS_WIDTH'h8000
 
 
//---------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
//Defines the ucode memory entry point for the various ucode routines
//Defines the ucode memory entry point for the various ucode routines
`define INITIAL_UCODE_ADDRESS           `ROM_ADDRESS_WIDTH'd0
 
`define CPPU_UCODE_ADDRESS                      `ROM_ADDRESS_WIDTH'd14
 
`define RGU_UCODE_ADDRESS                       `ROM_ADDRESS_WIDTH'd17
`define ENTRYPOINT_ADRR_INITIAL                                         `ROM_ADDRESS_WIDTH'd0   //0 - This should always be zero
`define AABBIU_UCODE_ADDRESS            `ROM_ADDRESS_WIDTH'd33
`define ENTRYPOINT_ADRR_CPPU                                                    `ROM_ADDRESS_WIDTH'd14  //E 
`define BIU_UCODE_ADDRESS                       `ROM_ADDRESS_WIDTH'd121
`define ENTRYPOINT_ADRR_RGU                                                     `ROM_ADDRESS_WIDTH'd17  //11
`define PSU_UCODE_ADRESS                        `ROM_ADDRESS_WIDTH'd196
`define ENTRYPOINT_ADRR_AABBIU                                          `ROM_ADDRESS_WIDTH'd33  //21
`define PSU_UCODE_ADRESS2        `ROM_ADDRESS_WIDTH'd212
`define ENTRYPOINT_ADRR_BIU                                                     `ROM_ADDRESS_WIDTH'd121 //79
`define TCC_UCODE_ADDRESS        `ROM_ADDRESS_WIDTH'd154
`define ENTRYPOINT_ADRR_PSU                                                     `ROM_ADDRESS_WIDTH'd196 //C4
`define DEBUG_LOG_REGISTERS             `ROM_ADDRESS_WIDTH'd221
`define ENTRYPOINT_ADRR_PSU2                                    `ROM_ADDRESS_WIDTH'd212   //D4
`define NPG_UCODE_ADDRESS                       `ROM_ADDRESS_WIDTH'd24
`define ENTRYPOINT_ADRR_TCC                                     `ROM_ADDRESS_WIDTH'd154   //9A
 
`define ENTRYPOINT_ADRR_DEBUG_LOG_REGISTERS             `ROM_ADDRESS_WIDTH'd221 //DD
 
`define ENTRYPOINT_ADRR_NPG                                                     `ROM_ADDRESS_WIDTH'd24  //18
 
 
 
 
 
`define ENTRYPOINT_INDEX_INITIAL                                                `ROM_ADDRESS_WIDTH'h8000
 
`define ENTRYPOINT_INDEX_CPPU                                                   `ROM_ADDRESS_WIDTH'h8001
 
`define ENTRYPOINT_INDEX_RGU                                                    `ROM_ADDRESS_WIDTH'h8002
 
`define ENTRYPOINT_INDEX_AABBIU                                         `ROM_ADDRESS_WIDTH'h8003
 
`define ENTRYPOINT_INDEX_BIU                                                    `ROM_ADDRESS_WIDTH'h8004
 
`define ENTRYPOINT_INDEX_PSU                                                    `ROM_ADDRESS_WIDTH'h8005
 
`define ENTRYPOINT_INDEX_PSU2                                   `ROM_ADDRESS_WIDTH'h8006
 
`define ENTRYPOINT_INDEX_TCC                                    `ROM_ADDRESS_WIDTH'h8007
 
`define ENTRYPOINT_INDEX_DEBUG_LOG_REGISTERS            `ROM_ADDRESS_WIDTH'h8008
 
`define ENTRYPOINT_INDEX_NPG                                                    `ROM_ADDRESS_WIDTH'h8009
 
 
`define USER_AABBIU_UCODE_ADDRESS `ROM_ADDRESS_WIDTH'b1000000000000000
`define USER_AABBIU_UCODE_ADDRESS `ROM_ADDRESS_WIDTH'b1000000000000000
//---------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
//This handy little macro allows me to print stuff either to STDOUT or a file.
//This handy little macro allows me to print stuff either to STDOUT or a file.
//Notice that the compilation vairable DUMP_CODE must be set if you want to print
//Notice that the compilation vairable DUMP_CODE must be set if you want to print
Line 119... Line 139...
`define CREG_PROJECTION_WINDOW_MAX              `DATA_ADDRESS_WIDTH'd3  //0003
`define CREG_PROJECTION_WINDOW_MAX              `DATA_ADDRESS_WIDTH'd3  //0003
`define CREG_RESOLUTION                                         `DATA_ADDRESS_WIDTH'd4  //0004
`define CREG_RESOLUTION                                         `DATA_ADDRESS_WIDTH'd4  //0004
`define CREG_TEXTURE_SIZE                                       `DATA_ADDRESS_WIDTH'd5  //0005
`define CREG_TEXTURE_SIZE                                       `DATA_ADDRESS_WIDTH'd5  //0005
`define CREG_PIXEL_2D_POSITION                  `DATA_ADDRESS_WIDTH'd6 //0008
`define CREG_PIXEL_2D_POSITION                  `DATA_ADDRESS_WIDTH'd6 //0008
`define CREG_FIRST_LIGTH               `DATA_ADDRESS_WIDTH'd7   //0007
`define CREG_FIRST_LIGTH               `DATA_ADDRESS_WIDTH'd7   //0007
 
`define CREG_FIRST_LIGTH_DIFFUSE       `DATA_ADDRESS_WIDTH'd7   //0008
//OK, so from address 0x06 to 0x0F is where the lights are,watch out values are harcoded
//OK, so from address 0x06 to 0x0F is where the lights are,watch out values are harcoded
//for now!! (look in ROM.v for hardcoded values!!!)
//for now!! (look in ROM.v for hardcoded values!!!)
 
 
 
 
 
 
Line 171... Line 192...
`define CREG_V1                                                         `DATA_ADDRESS_WIDTH'd51 //002c
`define CREG_V1                                                         `DATA_ADDRESS_WIDTH'd51 //002c
`define CREG_UV1                                                                `DATA_ADDRESS_WIDTH'd52 //002d
`define CREG_UV1                                                                `DATA_ADDRESS_WIDTH'd52 //002d
`define CREG_V2                                                         `DATA_ADDRESS_WIDTH'd53 //002e
`define CREG_V2                                                         `DATA_ADDRESS_WIDTH'd53 //002e
`define CREG_UV2                                                                `DATA_ADDRESS_WIDTH'd54 //002f
`define CREG_UV2                                                                `DATA_ADDRESS_WIDTH'd54 //002f
`define CREG_TRI_DIFFUSE                                        `DATA_ADDRESS_WIDTH'd55 //0030
`define CREG_TRI_DIFFUSE                                        `DATA_ADDRESS_WIDTH'd55 //0030
`define COLOR_ACC                                                               `DATA_ADDRESS_WIDTH'd56 //0031
`define CREG_COLOR_ACC                                          `DATA_ADDRESS_WIDTH'd56 //0031
`define CREG_LAST_t                                                     `DATA_ADDRESS_WIDTH'd58 //0033
`define CREG_LAST_t                                                     `DATA_ADDRESS_WIDTH'd58 //0033
`define CREG_E1_LAST                                                    `DATA_ADDRESS_WIDTH'd59 //0034
`define CREG_E1_LAST                                                    `DATA_ADDRESS_WIDTH'd59 //0034
`define CREG_E2_LAST                                                    `DATA_ADDRESS_WIDTH'd60 //0035
`define CREG_E2_LAST                                                    `DATA_ADDRESS_WIDTH'd60 //0035
`define CREG_TRI_DIFFUSE_LAST                           `DATA_ADDRESS_WIDTH'd61 //0036
`define CREG_TRI_DIFFUSE_LAST                           `DATA_ADDRESS_WIDTH'd61 //0036
`define CREG_LAST_u                                                     `DATA_ADDRESS_WIDTH'd62 //0037
`define CREG_LAST_u                                                     `DATA_ADDRESS_WIDTH'd62 //0037
Line 214... Line 235...
//meaning: b4b3 = 01 => X jump type, b4b3 = 10 => Y jump type, finally 
//meaning: b4b3 = 01 => X jump type, b4b3 = 10 => Y jump type, finally 
//b4b3 = 11 means Z jump type.
//b4b3 = 11 means Z jump type.
//All this is just to tell you: Don't play with these values!
//All this is just to tell you: Don't play with these values!
 
 
// *** Type I Instructions (OP DST REG1 REG2) ***
// *** Type I Instructions (OP DST REG1 REG2) ***
`define RETURN `INSTRUCTION_OP_LENGTH'b0_000000         //0
`define NOP `INSTRUCTION_OP_LENGTH'b0_000000    //0
`define ADD     `INSTRUCTION_OP_LENGTH'b0_000001        //1
`define ADD     `INSTRUCTION_OP_LENGTH'b0_000001        //1
`define SUB             `INSTRUCTION_OP_LENGTH'b0_000010        //2
`define SUB             `INSTRUCTION_OP_LENGTH'b0_000010        //2
`define DIV             `INSTRUCTION_OP_LENGTH'b0_000011        //3
`define DIV             `INSTRUCTION_OP_LENGTH'b0_000011        //3
`define MUL     `INSTRUCTION_OP_LENGTH'b0_000100        //4
`define MUL     `INSTRUCTION_OP_LENGTH'b0_000100        //4
`define MAG             `INSTRUCTION_OP_LENGTH'b0_000101        //5
`define MAG             `INSTRUCTION_OP_LENGTH'b0_000101        //5
`define NOP             `INSTRUCTION_OP_LENGTH'b0_000110        //6
//`define NOP           `INSTRUCTION_OP_LENGTH'b0_000110        //6
`define COPY    `INSTRUCTION_OP_LENGTH'b0_000111        //7
`define COPY    `INSTRUCTION_OP_LENGTH'b0_000111        //7
`define JGX             `INSTRUCTION_OP_LENGTH'b0_001_000       //8
`define JGX             `INSTRUCTION_OP_LENGTH'b0_001_000       //8
`define JLX             `INSTRUCTION_OP_LENGTH'b0_001_001       //9
`define JLX             `INSTRUCTION_OP_LENGTH'b0_001_001       //9
`define JEQX    `INSTRUCTION_OP_LENGTH'b0_001_010       //10
`define JEQX    `INSTRUCTION_OP_LENGTH'b0_001_010       //10
`define JNEX    `INSTRUCTION_OP_LENGTH'b0_001_011       //11
`define JNEX    `INSTRUCTION_OP_LENGTH'b0_001_011       //11
Line 271... Line 292...
`define INCY     `INSTRUCTION_OP_LENGTH'b0_101_100         //    R.Y = S1.Y + 1
`define INCY     `INSTRUCTION_OP_LENGTH'b0_101_100         //    R.Y = S1.Y + 1
`define INCZ     `INSTRUCTION_OP_LENGTH'b0_101_101         //    R.Z = S1.Z + 1
`define INCZ     `INSTRUCTION_OP_LENGTH'b0_101_101         //    R.Z = S1.Z + 1
 
 
 
 
//*** Type II Instructions (OP DST REG1 IMM) ***
//*** Type II Instructions (OP DST REG1 IMM) ***
`define SETX                            `INSTRUCTION_OP_LENGTH'b1_000000 //64 
`define RETURN          `INSTRUCTION_OP_LENGTH'b1_000000 //64  0x40
`define SETY                            `INSTRUCTION_OP_LENGTH'b1_000001 //65
`define SETX                            `INSTRUCTION_OP_LENGTH'b1_000001 //65  0x41
`define SETZ                            `INSTRUCTION_OP_LENGTH'b1_000010 //66
`define SETY                            `INSTRUCTION_OP_LENGTH'b1_000010 //66
`define SWIZZLE3D                       `INSTRUCTION_OP_LENGTH'b1_000011 //67 
`define SETZ                            `INSTRUCTION_OP_LENGTH'b1_000011 //67
`define JMP                                     `INSTRUCTION_OP_LENGTH'b1_011_000       //56
`define SWIZZLE3D                       `INSTRUCTION_OP_LENGTH'b1_000100 //68 
 
`define JMP                                     `INSTRUCTION_OP_LENGTH'b1_011000 //56
 
 
//-------------------------------------------------------------
//-------------------------------------------------------------
 
 
 
 
`define SWIZZLE_XXX             32'd0
`define SWIZZLE_XXX             32'd0
`define SWIZZLE_YYY             32'd1
`define SWIZZLE_YYY             32'd1

powered by: WebSVN 2.1.0

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