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

Subversion Repositories theia_gpu

[/] [theia_gpu/] [branches/] [gpu_4_cores/] [rtl/] [Collaterals/] [aDefinitions.v] - Diff between revs 63 and 70

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

Rev 63 Rev 70
Line 132... Line 132...
`endif
`endif
//---------------------------------------------------------------------------------     
//---------------------------------------------------------------------------------     
`define RT_TRUE 48'b1
`define RT_TRUE 48'b1
`define RT_FALSE 48'b0
`define RT_FALSE 48'b0
//---------------------------------------------------------------------------------     
//---------------------------------------------------------------------------------     
 
 
 
`define GENERAL_PURPOSE_REG_ADDR_MASK  `DATA_ADDRESS_WIDTH'h1F
`define VOID                                                                    `DATA_ADDRESS_WIDTH'd0  //0000
`define VOID                                                                    `DATA_ADDRESS_WIDTH'd0  //0000
//** Control register bits **//
//** Control register bits **//
`define CR_EN_LIGHTS   0
`define CR_EN_LIGHTS   0
`define CR_EN_TEXTURE  1
`define CR_EN_TEXTURE  1
`define CR_USER_AABBIU 2
`define CR_USER_AABBIU 2
 
/** Swapping registers **/
//** Configurtation Registers **//
//** Configuration Registers **//
`define CREG_LIGHT_INFO                                         `DATA_ADDRESS_WIDTH'd0  //0000
`define CREG_LIGHT_INFO                                                 `DATA_ADDRESS_WIDTH'd0
`define CREG_CAMERA_POSITION                            `DATA_ADDRESS_WIDTH'd1  //0001
`define CREG_CAMERA_POSITION                                    `DATA_ADDRESS_WIDTH'd1
`define CREG_PROJECTION_WINDOW_MIN              `DATA_ADDRESS_WIDTH'd2  //0002
`define CREG_PROJECTION_WINDOW_MIN                      `DATA_ADDRESS_WIDTH'd2
`define CREG_PROJECTION_WINDOW_MAX              `DATA_ADDRESS_WIDTH'd3  //0003
`define CREG_PROJECTION_WINDOW_MAX                      `DATA_ADDRESS_WIDTH'd3
`define CREG_RESOLUTION                                         `DATA_ADDRESS_WIDTH'd4  //0004
`define CREG_RESOLUTION                                                 `DATA_ADDRESS_WIDTH'd4
`define CREG_TEXTURE_SIZE                                       `DATA_ADDRESS_WIDTH'd5  //0005
`define CREG_TEXTURE_SIZE                                               `DATA_ADDRESS_WIDTH'd5
`define CREG_PIXEL_2D_POSITION                  `DATA_ADDRESS_WIDTH'd6 //0008
`define CREG_PIXEL_2D_INITIAL_POSITION          `DATA_ADDRESS_WIDTH'd6
`define CREG_FIRST_LIGTH               `DATA_ADDRESS_WIDTH'd7   //0007
`define CREG_FIRST_LIGTH                `DATA_ADDRESS_WIDTH'd7
`define CREG_FIRST_LIGTH_DIFFUSE       `DATA_ADDRESS_WIDTH'd7   //0008
`define CREG_FIRST_LIGTH_DIFFUSE        `DATA_ADDRESS_WIDTH'd7
//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!!!)
 
 
 
 
 
//Don't change the order of the registers. CREG_V* and CREG_UV* registers
 
//need to be in that specific order for the triangle fetcher to work 
 
//correctly!
 
 
 
`define CREG_AABBMIN                                                    `DATA_ADDRESS_WIDTH'd42
 
`define CREG_AABBMAX                                                    `DATA_ADDRESS_WIDTH'd43
 
`define CREG_V0                                                         `DATA_ADDRESS_WIDTH'd44 //002a
 
`define CREG_UV0                                                                `DATA_ADDRESS_WIDTH'd45 //002b  
 
`define CREG_V1                                                         `DATA_ADDRESS_WIDTH'd46 //002c
 
`define CREG_UV1                                                                `DATA_ADDRESS_WIDTH'd47 //002d
 
`define CREG_V2                                                         `DATA_ADDRESS_WIDTH'd48 //002e
 
`define CREG_UV2                                                                `DATA_ADDRESS_WIDTH'd49 //002f
 
`define CREG_TRI_DIFFUSE                                        `DATA_ADDRESS_WIDTH'd50 //0030
 
`define CREG_TEX_COLOR1                                         `DATA_ADDRESS_WIDTH'd53
 
`define CREG_TEX_COLOR2                                         `DATA_ADDRESS_WIDTH'd54
 
`define CREG_TEX_COLOR3                                         `DATA_ADDRESS_WIDTH'd55
 
`define CREG_TEX_COLOR4                                         `DATA_ADDRESS_WIDTH'd56
 
`define CREG_TEX_COLOR5                                         `DATA_ADDRESS_WIDTH'd57
 
`define CREG_TEX_COLOR6                                         `DATA_ADDRESS_WIDTH'd58
 
`define CREG_TEX_COLOR7                                         `DATA_ADDRESS_WIDTH'd59
 
 
 
 
 
/** Non-Swapping registers **/
// ** User Registers **//
// ** User Registers **//
//General Purpose registers, the user may put what ever he/she
//General Purpose registers, the user may put what ever he/she
//wants in here...
//wants in here...
`define R1              `DATA_ADDRESS_WIDTH'd20
`define C1     `DATA_ADDRESS_WIDTH'd64
`define R2              `DATA_ADDRESS_WIDTH'd21
`define C2     `DATA_ADDRESS_WIDTH'd65
`define R3              `DATA_ADDRESS_WIDTH'd22
`define C3     `DATA_ADDRESS_WIDTH'd66
`define R4              `DATA_ADDRESS_WIDTH'd23
`define C4     `DATA_ADDRESS_WIDTH'd67
`define R5              `DATA_ADDRESS_WIDTH'd24
`define C5     `DATA_ADDRESS_WIDTH'd68
`define R6              `DATA_ADDRESS_WIDTH'd25
`define C6     `DATA_ADDRESS_WIDTH'd69
`define R7              `DATA_ADDRESS_WIDTH'd26
`define C7     `DATA_ADDRESS_WIDTH'd70
`define R8              `DATA_ADDRESS_WIDTH'd27
`define R1              `DATA_ADDRESS_WIDTH'd71
`define R9              `DATA_ADDRESS_WIDTH'd28
`define R2              `DATA_ADDRESS_WIDTH'd72
`define R10             `DATA_ADDRESS_WIDTH'd29
`define R3              `DATA_ADDRESS_WIDTH'd73
`define R11             `DATA_ADDRESS_WIDTH'd30
`define R4              `DATA_ADDRESS_WIDTH'd74
`define R12             `DATA_ADDRESS_WIDTH'd31
`define R5              `DATA_ADDRESS_WIDTH'd75
 
`define R6              `DATA_ADDRESS_WIDTH'd76
 
`define R7              `DATA_ADDRESS_WIDTH'd77
 
`define R8              `DATA_ADDRESS_WIDTH'd78
 
`define R9              `DATA_ADDRESS_WIDTH'd79
 
`define R10             `DATA_ADDRESS_WIDTH'd80
 
`define R11             `DATA_ADDRESS_WIDTH'd81
 
`define R12             `DATA_ADDRESS_WIDTH'd82
 
 
 
//** Internal Registers **//
 
`define CREG_PROJECTION_WINDOW_SCALE    `DATA_ADDRESS_WIDTH'd83
 
`define CREG_UNORMALIZED_DIRECTION              `DATA_ADDRESS_WIDTH'd84
 
`define CREG_RAY_DIRECTION                                      `DATA_ADDRESS_WIDTH'd85
 
`define CREG_E1_LAST                                                    `DATA_ADDRESS_WIDTH'd86
 
`define CREG_E2_LAST                                                    `DATA_ADDRESS_WIDTH'd87
 
`define CREG_T                                                                  `DATA_ADDRESS_WIDTH'd88
 
`define CREG_P                                                                  `DATA_ADDRESS_WIDTH'd89
 
`define CREG_Q                                                                  `DATA_ADDRESS_WIDTH'd90
 
`define CREG_UV0_LAST                                           `DATA_ADDRESS_WIDTH'd91
 
`define CREG_UV1_LAST                                           `DATA_ADDRESS_WIDTH'd92
 
`define CREG_UV2_LAST                                           `DATA_ADDRESS_WIDTH'd93
 
`define CREG_TRI_DIFFUSE_LAST                           `DATA_ADDRESS_WIDTH'd94
 
`define CREG_LAST_t                                                     `DATA_ADDRESS_WIDTH'd95
 
`define CREG_LAST_u                                                     `DATA_ADDRESS_WIDTH'd96
 
`define CREG_LAST_v                                                     `DATA_ADDRESS_WIDTH'd97
 
`define CREG_COLOR_ACC                                          `DATA_ADDRESS_WIDTH'd98
 
`define CREG_t                                                                  `DATA_ADDRESS_WIDTH'd99
 
`define CREG_E1                                                         `DATA_ADDRESS_WIDTH'd100
 
`define CREG_E2                                                         `DATA_ADDRESS_WIDTH'd101
 
`define CREG_DELTA                                                      `DATA_ADDRESS_WIDTH'd102
 
`define CREG_u                                                                  `DATA_ADDRESS_WIDTH'd103
 
`define CREG_v                                                                  `DATA_ADDRESS_WIDTH'd104
 
`define CREG_H1                               `DATA_ADDRESS_WIDTH'd105
 
`define CREG_H2                             `DATA_ADDRESS_WIDTH'd106
 
`define CREG_H3                                   `DATA_ADDRESS_WIDTH'd107
 
`define OREG_PIXEL_PITCH                        `DATA_ADDRESS_WIDTH'd108
 
`define CREG_LAST_COL                                           `DATA_ADDRESS_WIDTH'd109 //the last valid column, simply CREG_RESOLUTIONX - 1
 
`define CREG_TEXTURE_COLOR             `DATA_ADDRESS_WIDTH'd110
 
`define CREG_PIXEL_2D_POSITION                  `DATA_ADDRESS_WIDTH'd111
 
`define CREG_TEXWEIGHT1                                         `DATA_ADDRESS_WIDTH'd112
 
`define CREG_TEXWEIGHT2                                         `DATA_ADDRESS_WIDTH'd113
 
`define CREG_TEXWEIGHT3                                         `DATA_ADDRESS_WIDTH'd114
 
`define CREG_TEXWEIGHT4                                         `DATA_ADDRESS_WIDTH'd115
 
 
 
//** Ouput registers **//
 
 
 
`define OREG_PIXEL_COLOR                                        `DATA_ADDRESS_WIDTH'd128
 
`define OREG_TEX_COORD1                                         `DATA_ADDRESS_WIDTH'd129
 
`define OREG_TEX_COORD2                                         `DATA_ADDRESS_WIDTH'd130
 
 
 
 
//** Constant Registers **//
 
//Don't change the order of the registers. CREG_V* and CREG_UV* registers
 
//need to be in that specific order for the trinagle fetcher to work 
 
//correctly!
 
`define CREG_PROJECTION_WINDOW_SCALE    `DATA_ADDRESS_WIDTH'd32
 
`define CREG_UNORMALIZED_DIRECTION              `DATA_ADDRESS_WIDTH'd33
 
`define CREG_RAY_DIRECTION                                      `DATA_ADDRESS_WIDTH'd34
 
`define CREG_E1                                                         `DATA_ADDRESS_WIDTH'd35
 
`define CREG_E2                                                         `DATA_ADDRESS_WIDTH'd36
 
`define CREG_T                                                                  `DATA_ADDRESS_WIDTH'd37
 
`define CREG_P                                                                  `DATA_ADDRESS_WIDTH'd38
 
`define CREG_Q                                                                  `DATA_ADDRESS_WIDTH'd39
 
`define CREG_H1                                                         `DATA_ADDRESS_WIDTH'd40
 
`define CREG_H2                                                         `DATA_ADDRESS_WIDTH'd41
 
`define CREG_H3                                                         `DATA_ADDRESS_WIDTH'd42
 
`define CREG_DELTA                                                      `DATA_ADDRESS_WIDTH'd43
 
`define CREG_t                                                                  `DATA_ADDRESS_WIDTH'd44
 
`define CREG_u                                                                  `DATA_ADDRESS_WIDTH'd45
 
`define CREG_v                                                                  `DATA_ADDRESS_WIDTH'd46
 
`define CREG_AABBMIN                                                    `DATA_ADDRESS_WIDTH'd47
 
`define CREG_AABBMAX                                                    `DATA_ADDRESS_WIDTH'd48
 
`define CREG_V0                                                         `DATA_ADDRESS_WIDTH'd49 //002a
 
`define CREG_UV0                                                                `DATA_ADDRESS_WIDTH'd50 //002b  
 
`define CREG_V1                                                         `DATA_ADDRESS_WIDTH'd51 //002c
 
`define CREG_UV1                                                                `DATA_ADDRESS_WIDTH'd52 //002d
 
`define CREG_V2                                                         `DATA_ADDRESS_WIDTH'd53 //002e
 
`define CREG_UV2                                                                `DATA_ADDRESS_WIDTH'd54 //002f
 
`define CREG_TRI_DIFFUSE                                        `DATA_ADDRESS_WIDTH'd55 //0030
 
`define CREG_COLOR_ACC                                          `DATA_ADDRESS_WIDTH'd56 //0031
 
`define CREG_LAST_t                                                     `DATA_ADDRESS_WIDTH'd58 //0033
 
`define CREG_E1_LAST                                                    `DATA_ADDRESS_WIDTH'd59 //0034
 
`define CREG_E2_LAST                                                    `DATA_ADDRESS_WIDTH'd60 //0035
 
`define CREG_TRI_DIFFUSE_LAST                           `DATA_ADDRESS_WIDTH'd61 //0036
 
`define CREG_LAST_u                                                     `DATA_ADDRESS_WIDTH'd62 //0037
 
`define CREG_LAST_v                                                     `DATA_ADDRESS_WIDTH'd63 //0038
 
 
 
 
 
//Output registers
 
`define OREG_PIXEL_COLOR                                        `DATA_ADDRESS_WIDTH'd57
 
`define OREG_TEX_COORD1                                         `DATA_ADDRESS_WIDTH'd65
 
`define OREG_TEX_COORD2                                         `DATA_ADDRESS_WIDTH'd66
 
`define CREG_TEX_COLOR1                                         `DATA_ADDRESS_WIDTH'd67
 
`define CREG_TEX_COLOR2                                         `DATA_ADDRESS_WIDTH'd68
 
`define CREG_TEX_COLOR3                                         `DATA_ADDRESS_WIDTH'd69
 
`define CREG_TEX_COLOR4                                         `DATA_ADDRESS_WIDTH'd70 //This is intentionally COLOR6
 
`define CREG_TEX_COLOR5                                         `DATA_ADDRESS_WIDTH'd71
 
`define CREG_TEX_COLOR6                                         `DATA_ADDRESS_WIDTH'd72
 
`define CREG_TEX_COLOR7                                         `DATA_ADDRESS_WIDTH'd73
 
`define OREG_TEXWEIGHT1                                         `DATA_ADDRESS_WIDTH'd74
 
`define OREG_TEXWEIGHT2                                         `DATA_ADDRESS_WIDTH'd75
 
`define OREG_TEXWEIGHT3                                         `DATA_ADDRESS_WIDTH'd76
 
`define OREG_TEXWEIGHT4                                         `DATA_ADDRESS_WIDTH'd77
 
`define CREG_UV0_LAST                  `DATA_ADDRESS_WIDTH'd78
 
`define CREG_UV1_LAST                  `DATA_ADDRESS_WIDTH'd79
 
`define CREG_UV2_LAST                  `DATA_ADDRESS_WIDTH'd80
 
`define OREG_PIXEL_PITCH                        `DATA_ADDRESS_WIDTH'd81
 
`define CREG_LAST_COL                                           `DATA_ADDRESS_WIDTH'd82 //the last valid column, simply CREG_RESOLUTIONX - 1
 
`define CREG_TEXTURE_COLOR             `DATA_ADDRESS_WIDTH'd83
 
`define C1                             `DATA_ADDRESS_WIDTH'd84
 
`define C2                             `DATA_ADDRESS_WIDTH'd85
 
`define C3                             `DATA_ADDRESS_WIDTH'd86
 
`define C4                             `DATA_ADDRESS_WIDTH'd87
 
`define C5                             `DATA_ADDRESS_WIDTH'd88
 
`define C6                             `DATA_ADDRESS_WIDTH'd89
 
`define C7                             `DATA_ADDRESS_WIDTH'd90
 
//-------------------------------------------------------------
//-------------------------------------------------------------
//*** Instruction Set ***
//*** Instruction Set ***
//The order of the instrucitons is important here!. Don't change
//The order of the instrucitons is important here!. Don't change
//it unles you know what you are doing. For example all the 'SET'
//it unles you know what you are doing. For example all the 'SET'
//family of instructions have the MSB bit in 1. This means that
//family of instructions have the MSB bit in 1. This means that
Line 261... Line 265...
`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 - A
`define JNEX    `INSTRUCTION_OP_LENGTH'b0_001_011       //11
`define JNEX    `INSTRUCTION_OP_LENGTH'b0_001_011       //11 - B
`define JGEX    `INSTRUCTION_OP_LENGTH'b0_001_100       //12
`define JGEX    `INSTRUCTION_OP_LENGTH'b0_001_100       //12 - C
`define JLEX    `INSTRUCTION_OP_LENGTH'b0_001_101       //13
`define JLEX    `INSTRUCTION_OP_LENGTH'b0_001_101       //13 - D
`define INC             `INSTRUCTION_OP_LENGTH'b0_001_110       //14
`define INC             `INSTRUCTION_OP_LENGTH'b0_001_110       //14 - E
`define ZERO    `INSTRUCTION_OP_LENGTH'b0_001_111       //15
`define ZERO    `INSTRUCTION_OP_LENGTH'b0_001_111       //15 - F
`define JGY             `INSTRUCTION_OP_LENGTH'b0_010_000       //16
`define JGY             `INSTRUCTION_OP_LENGTH'b0_010_000       //16
`define JLY             `INSTRUCTION_OP_LENGTH'b0_010_001       //17
`define JLY             `INSTRUCTION_OP_LENGTH'b0_010_001       //17
`define JEQY    `INSTRUCTION_OP_LENGTH'b0_010_010       //18
`define JEQY    `INSTRUCTION_OP_LENGTH'b0_010_010       //18
`define JNEY    `INSTRUCTION_OP_LENGTH'b0_010_011       //19
`define JNEY    `INSTRUCTION_OP_LENGTH'b0_010_011       //19
`define JGEY    `INSTRUCTION_OP_LENGTH'b0_010_100       //20
`define JGEY    `INSTRUCTION_OP_LENGTH'b0_010_100       //20

powered by: WebSVN 2.1.0

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