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

Subversion Repositories theia_gpu

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /theia_gpu/trunk
    from Rev 62 to Rev 63
    Reverse comparison

Rev 62 → Rev 63

/rtl/CONTROL/Unit_Control.v
72,6 → 72,12
`define CU_ACK_NPU 39
`define CU_PERFORM_INTIAL_CONFIGURATION 40
`define CU_SET_PICTH 41
`define CU_TRIGGER_USERCONSTANTS 42
`define CU_WAIT_USERCONSTANTS 43
`define CU_ACK_USERCONSTANTS 44
`define CU_TRIGGER_USERPIXELSHADER 45
`define CU_WAIT_FOR_USERPIXELSHADER 46
`define CU_ACK_USERPIXELSHADER 47
 
//--------------------------------------------------------------
module ControlUnit
118,12 → 124,7
end
 
`endif
 
 
//wire[`ROM_ADDRESS_WIDTH-1:0] wAABBIUAddress;
//assign wAABBIUAddress = (iControlRegister[`CR_USER_AABBIU] == 1'b1) ? `USER_AABBIU_UCODE_ADDRESS : `ENTRYPOINT_INDEX_AABBIU;
//--------------------------------------------------------------
FFToggleOnce_1Bit FFTO1
(
385,10 → 386,79
oSetCurrentPitch <= 0;
//oIncCurrentPitch <= 0;
NextState <= `CU_TRIGGER_RGU;//CU_WAIT_FOR_TASK;
NextState <= `CU_TRIGGER_USERCONSTANTS;//CU_WAIT_FOR_TASK;
end
//-----------------------------------------
//TODO:
`CU_TRIGGER_USERCONSTANTS:
begin
`ifdef DEBUG
`LOGME"%d Control: CU_TRIGGER_RGU\n",$time);
`endif
oRamBusOwner <= `REG_BUS_OWNED_BY_UCODE;
oCodeInstructioPointer <= `ENTRYPOINT_INDEX_USERCONSTANTS;
oGFUEnable <= 0;
oUCodeEnable <= 1; //*
oIOWritePixel <= 0;
rResetHitFlop <= 0;
rHitFlopEnable <= 0;
oTriggerTFF <= 0;
oSetCurrentPitch <= 0;
//oIncCurrentPitch <= 0;
NextState <= `CU_WAIT_USERCONSTANTS;
end
//-----------------------------------------
`CU_WAIT_USERCONSTANTS:
begin
 
// `ifdef DEBUG
// `LOGME"%d Control: CU_WAIT_FOR_RGU\n",$time);
// `endif
oRamBusOwner <= `REG_BUS_OWNED_BY_UCODE;
oCodeInstructioPointer <= `ENTRYPOINT_INDEX_USERCONSTANTS;
oGFUEnable <= 0;
oUCodeEnable <= 0;
oIOWritePixel <= 0;
rResetHitFlop <= 0;
rHitFlopEnable <= 0;
oTriggerTFF <= 0;
oSetCurrentPitch <= 0;
//oIncCurrentPitch <= 0;
if ( iUCodeDone )
NextState <= `CU_ACK_USERCONSTANTS;
else
NextState <= `CU_WAIT_USERCONSTANTS;
end
//-----------------------------------------
`CU_ACK_USERCONSTANTS:
begin
`ifdef DEBUG
`LOGME"%d Control: CU_ACK_RGU\n",$time);
`endif
oRamBusOwner <= `REG_BUS_OWNED_BY_UCODE;
oCodeInstructioPointer <= 0;
oGFUEnable <= 0;
oUCodeEnable <= 0; //*
oIOWritePixel <= 0;
rResetHitFlop <= 0;
rHitFlopEnable <= 0;
oTriggerTFF <= 0;
oSetCurrentPitch <= 0;
//oIncCurrentPitch <= 0;
if ( iUCodeDone == 0)
NextState <= `CU_TRIGGER_RGU;
else
NextState <= `CU_ACK_USERCONSTANTS;
end
//-----------------------------------------
`CU_TRIGGER_RGU:
begin
857,7 → 927,7
//oIncCurrentPitch <= 0;
if ( iUCodeDone == 0)
NextState <= `CU_TRIGGER_PCU;
NextState <= `CU_TRIGGER_USERPIXELSHADER;
else
NextState <= `CU_ACK_PSU;
1016,6 → 1086,82
end
//-----------------------------------------
//-----------------------------------------
/*
Here we no longer use GFU so set Enable to zero
*/
`CU_TRIGGER_USERPIXELSHADER:
begin
`ifdef DEBUG
`LOGME"%d Control: CU_TRIGGER_PSU\n",$time);
`endif
oRamBusOwner <= `REG_BUS_OWNED_BY_UCODE;
oCodeInstructioPointer <= `ENTRYPOINT_INDEX_PIXELSHADER;
oUCodeEnable <= 1;
oGFUEnable <= 0;//*
oIOWritePixel <= 0;
rResetHitFlop <= 0;
rHitFlopEnable <= 0;
oTriggerTFF <= 0;
oSetCurrentPitch <= 0;
//oIncCurrentPitch <= 0;
NextState <= `CU_WAIT_FOR_USERPIXELSHADER;
end
//-----------------------------------------
`CU_WAIT_FOR_USERPIXELSHADER:
begin
// `ifdef DEBUG
// `LOGME"%d Control: CU_TRIGGER_PSU\n",$time);
// `endif
oRamBusOwner <= `REG_BUS_OWNED_BY_UCODE;
oCodeInstructioPointer <= `ENTRYPOINT_INDEX_PIXELSHADER;
oUCodeEnable <= 0;
oGFUEnable <= 0;
oIOWritePixel <= 0;
rResetHitFlop <= 0;
rHitFlopEnable <= 0;
oTriggerTFF <= 0;
oSetCurrentPitch <= 0;
//oIncCurrentPitch <= 0;
if ( iUCodeDone )
NextState <= `CU_ACK_USERPIXELSHADER;
else
NextState <= `CU_WAIT_FOR_USERPIXELSHADER;
end
//-----------------------------------------
`CU_ACK_USERPIXELSHADER:
begin
`ifdef DEBUG
`LOGME"%d Control: CU_ACK_PSU\n",$time);
`endif
oRamBusOwner <= `REG_BUS_OWNED_BY_UCODE;
oCodeInstructioPointer <= 0; //*
oUCodeEnable <= 0; //*
oGFUEnable <= 0;
oIOWritePixel <= 0;
rResetHitFlop <= 0;
rHitFlopEnable <= 0;
oTriggerTFF <= 0;
oSetCurrentPitch <= 0;
//oIncCurrentPitch <= 0;
if ( iUCodeDone == 0)
NextState <= `CU_TRIGGER_PCU;
else
NextState <= `CU_ACK_USERPIXELSHADER;
end
//---------------------------------------------------
default:
begin
/rtl/EXE/Module_ExecutionFSM.v
331,7 → 331,8
`DIV: `LOGME"DIV");
`MUL: `LOGME"MUL");
`MAG: `LOGME"MAG");
`JGX: `LOGME"JGX");
`JGX: `LOGME"JGX");
`JLX: `LOGME"JLX");
`JGEX: `LOGME"JGEX");
`JGEY: `LOGME"JGEY");
`JGEZ: `LOGME"JGEZ");
/rtl/Collaterals/aDefinitions.v
85,8 → 85,10
 
//---------------------------------------------------------------------------------
//Defines the ucode memory entry point for the various ucode routines
//Please keep this syntax ENTRYPOINT_ADDR_* because the perl script that
//parses the user code expects this pattern in order to read in the tokens
 
 
//Internal Entry points (default ROM Address)
`define ENTRYPOINT_ADRR_INITIAL `ROM_ADDRESS_WIDTH'd0 //0 - This should always be zero
`define ENTRYPOINT_ADRR_CPPU `ROM_ADDRESS_WIDTH'd14 //E
`define ENTRYPOINT_ADRR_RGU `ROM_ADDRESS_WIDTH'd17 //11
93,12 → 95,16
`define ENTRYPOINT_ADRR_AABBIU `ROM_ADDRESS_WIDTH'd33 //21
`define ENTRYPOINT_ADRR_BIU `ROM_ADDRESS_WIDTH'd121 //79
`define ENTRYPOINT_ADRR_PSU `ROM_ADDRESS_WIDTH'd196 //C4
`define ENTRYPOINT_ADRR_PSU2 `ROM_ADDRESS_WIDTH'd212 //D4
`define ENTRYPOINT_ADRR_TCC `ROM_ADDRESS_WIDTH'd154 //9A
`define ENTRYPOINT_ADRR_DEBUG_LOG_REGISTERS `ROM_ADDRESS_WIDTH'd221 //DD
`define ENTRYPOINT_ADRR_PSU2 `ROM_ADDRESS_WIDTH'd212 //D4
`define ENTRYPOINT_ADRR_TCC `ROM_ADDRESS_WIDTH'd154 //9A
`define ENTRYPOINT_ADRR_NPG `ROM_ADDRESS_WIDTH'd24 //18
//User Entry points (default ROM Address)
`define ENTRYPOINT_ADRR_USERCONSTANTS `ROM_ADDRESS_WIDTH'd221 //DD
`define ENTRYPOINT_ADRR_PIXELSHADER `ROM_ADDRESS_WIDTH'd223 //DF
 
 
//Please keep this syntax ENTRYPOINT_INDEX_* because the perl script that
//parses the user code expects this pattern in order to read in the tokens
//Internal subroutines
`define ENTRYPOINT_INDEX_INITIAL `ROM_ADDRESS_WIDTH'h8000
`define ENTRYPOINT_INDEX_CPPU `ROM_ADDRESS_WIDTH'h8001
`define ENTRYPOINT_INDEX_RGU `ROM_ADDRESS_WIDTH'h8002
107,8 → 113,10
`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 ENTRYPOINT_INDEX_NPG `ROM_ADDRESS_WIDTH'h8008
//User defined subroutines
`define ENTRYPOINT_INDEX_USERCONSTANTS `ROM_ADDRESS_WIDTH'h8009
`define ENTRYPOINT_INDEX_PIXELSHADER `ROM_ADDRESS_WIDTH'h800A
 
`define USER_AABBIU_UCODE_ADDRESS `ROM_ADDRESS_WIDTH'b1000000000000000
//---------------------------------------------------------------------------------
204,11 → 212,11
 
 
//Output registers
`define OREG_PIXEL_COLOR `DATA_ADDRESS_WIDTH'd57 //0032
`define OREG_TEX_COORD1 `DATA_ADDRESS_WIDTH'd65 //0032
`define OREG_TEX_COORD2 `DATA_ADDRESS_WIDTH'd66 //0032
`define CREG_TEX_COLOR1 `DATA_ADDRESS_WIDTH'd67 //0032
`define CREG_TEX_COLOR2 `DATA_ADDRESS_WIDTH'd68 //0032
`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
223,6 → 231,14
`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 ***
//The order of the instrucitons is important here!. Don't change
/rtl/Collaterals/Collaterals.v
379,6 → 379,7
end
endmodule
//------------------------------------------------
 
module FF16_POSEDGE_SYNCRONOUS_RESET
(
input wire Clock,
474,6 → 475,7
 
 
//------------------------------------------------
/*
module MUXFULLPARALELL_1Bit_1SEL
(
input wire Sel,
497,7 → 499,9
end
 
endmodule
*/
//--------------------------------------------------------------
/*
module FFD_OPCODE_POSEDGE
(
input wire Clock,
509,7 → 513,9
Q <= D;
endmodule
*/
//--------------------------------------------------------------
/*
module FFD16_POSEDGE
(
input wire Clock,
521,6 → 527,7
Q <= D;
endmodule
*/
//--------------------------------------------------------------
 
module FFT1
/rtl/MEM/Module_ROM.v
524,7 → 524,7
204: I = { `DOT ,`R3 ,`R2 ,`R1 };
205: I = { `MUL ,`CREG_COLOR_ACC ,`CREG_TRI_DIFFUSE_LAST ,`CURRENT_LIGHT_DIFFUSE };
206: I = { `MUL ,`CREG_COLOR_ACC ,`CREG_COLOR_ACC ,`R3 };
207: I = { `COPY ,`OREG_PIXEL_COLOR ,`CREG_COLOR_ACC ,`VOID };
207: I = { `COPY ,`CREG_TEXTURE_COLOR ,`CREG_COLOR_ACC ,`VOID };
208: I = { `JLEX ,`LABEL_DEBUG_PRINT_REGS ,`CREG_COLOR_ACC ,`R3 };
209: I = { `JMP ,`LABEL_DEBUG_PRINT_REGS ,`VOID ,`VOID };
210: I = { `NOP ,`RT_FALSE };//{ `INC ,`OREG_PIXEL_PITCH ,`VOID };
547,34 → 547,21
213: I = { `MUL ,`R2 ,`CREG_TEX_COLOR2 ,`OREG_TEXWEIGHT2 };
214: I = { `MUL ,`R3 ,`CREG_TEX_COLOR1 ,`OREG_TEXWEIGHT3 };
215: I = { `MUL ,`R4 ,`CREG_TEX_COLOR4 ,`OREG_TEXWEIGHT4 };
216: I = { `ADD ,`OREG_PIXEL_COLOR ,`R1 ,`R2 };
217: I = { `ADD ,`OREG_PIXEL_COLOR ,`OREG_PIXEL_COLOR ,`R3 };
218: I = { `ADD ,`OREG_PIXEL_COLOR ,`OREG_PIXEL_COLOR ,`R4 };
219: I = { `RETURN ,`RT_TRUE }; //{ `INC ,`OREG_PIXEL_PITCH ,`VOID };
216: I = { `ADD ,`CREG_TEXTURE_COLOR ,`R1 ,`R2 };
217: I = { `ADD ,`CREG_TEXTURE_COLOR ,`CREG_TEXTURE_COLOR ,`R3 };
218: I = { `ADD ,`CREG_TEXTURE_COLOR ,`CREG_TEXTURE_COLOR ,`R4 };
219: I = { `RETURN ,`RT_TRUE };
 
 
220: I = { `RETURN ,`RT_TRUE };
 
 
//-------------------------------------------------------------------------
//Debug Code
//TAG_DEBUG_LOG_REGISTERS:
 
//LABEL_DEBUG_PRINT_REGS:
/*
221: I = { `DEBUG_PRINT ,`CREG_PIXEL_2D_POSITION ,`CREG_PIXEL_2D_POSITION ,`VOID };
222: I = { `DEBUG_PRINT ,`COLOR_ACC ,`COLOR_ACC ,`VOID };
223: I = { `DEBUG_PRINT ,`CREG_LAST_t ,`CREG_LAST_t ,`VOID };
224: I = { `DEBUG_PRINT ,`CREG_E1_LAST ,`CREG_E1_LAST ,`VOID };
225: I = { `DEBUG_PRINT ,`CREG_E2_LAST ,`CREG_E2_LAST ,`VOID };
226: I = { `DEBUG_PRINT ,`CREG_RAY_DIRECTION ,`CREG_RAY_DIRECTION ,`VOID };
227: I = { `DEBUG_PRINT ,`CREG_CAMERA_POSITION ,`CREG_CAMERA_POSITION ,`VOID };
228: I = { `DEBUG_PRINT ,`CREG_V0 ,`CREG_V0 ,`VOID };
229: I = { `DEBUG_PRINT ,`CREG_V1 ,`CREG_V1 ,`VOID };
230: I = { `DEBUG_PRINT ,`CREG_V2 ,`CREG_V2 ,`VOID };
231: I = { `RETURN ,`RT_TRUE };
*/
 
//-------------------------------------------------------------------------
//Default User constants
221: I = { `NOP ,`RT_FALSE };
222: I = { `RETURN ,`RT_TRUE };
//Default Pixel Shader (just outputs texture)
223: I = {`COPY ,`OREG_PIXEL_COLOR,`CREG_TEXTURE_COLOR,`VOID};
224: I = { `RETURN ,`RT_TRUE };
//-------------------------------------------------------------------------
 

powered by: WebSVN 2.1.0

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