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/test_bench
    from Rev 77 to Rev 84
    Reverse comparison

Rev 77 → Rev 84

/readme.txt
47,9 → 47,9
Under the 'Process properties' screen:
Select the 'Specify 'define Macro Name and Value' Option and put the following:
type: 'DEBUG=1|DUMP_CODE=1' if you want to create code dump dis-assembly files and other log files
type: 'DEBUG=1|DUMP_CODE=1|DEBUG_CORE=0' if you want to create code dump dis-assembly files and other log files
(option is recommended for debug)
type: 'DEBUG=1' if you want verbose output including dis-assembly of code to the standard output.
type: 'DEBUG=1|DEBUG_CORE=0' if you want verbose output including dis-assembly of code to the standard output.
type: '' leave it blank if you want no output.
 
**** II Preparing the inputs ****
/TestBench_THEIA.v
63,7 → 63,7
`define DELTA_ROW (32'h1 << `SCALE)
`define DELTA_COL (32'h1 << `SCALE)
 
`define SELECT_ALL_CORES `MAX_CORES'b0011;
`define SELECT_ALL_CORES `MAX_CORES'b1111;
module TestBench_Theia;
 
 
111,7 → 111,7
integer file, log, r, a, b;
reg [31:0] rSceneParameters[31:0];
reg [31:0] rSceneParameters[64:0];
reg [31:0] rVertexBuffer[6000:0];
reg [31:0] rInstructionBuffer[512:0];
`define TEXTURE_BUFFER_SIZE (256*256*3)
134,10 → 134,21
reg MST_O;
//---------------------------------------------------------------
reg rIncCoreSelect;
wire [`MAX_CORES-1:0] wCoreSelect;
CIRCULAR_SHIFTLEFT_POSEDGE_EX # (`MAX_CORES ) SHF1
(
.Clock( Clock ),
.Reset( Reset ),
.Initial(`MAX_CORES'b1),
.Enable(rIncCoreSelect),
.O(wCoreSelect)
);
 
 
wire [3:0] CYC_I,GNT_O;
wire wDone;
reg [`MAX_CORES-1:0] rCoreSelect,rRenderEnable;
reg [`MAX_CORES-1:0] rCoreSelectMask,rRenderEnable;
 
THEIA GPU
(
158,7 → 169,7
.ADR_I( ADR_O ),
.DAT_O( DAT_I ),
.WE_I( WE_O ),
.SEL_I( rCoreSelect ),//4'b0001 ),
.SEL_I( wCoreSelect | rCoreSelectMask),//4'b0001 ),
.STB_I( STB_O ),
.TGA_O(TGA_I),
 
358,7 → 369,7
rSlaveData_O = rTextures[ rConvertedTextureAddress ];
`ifdef DEBUG
`ifdef DEBUG_WBM
`LOGME"WB SLAVE: MASTER Requested read from texture address: %h (%d)Data = %h \n",rAddress, rConvertedTextureAddress,DAT_O );
`endif
367,7 → 378,7
begin
// Thingy = 0; //THIS IS NOT RE-ENTRANT!!!
rSlaveData_O = rVertexBuffer[ rAddress ];
`ifdef DEBUG
`ifdef DEBUG_WBM
`LOGME"WB SLAVE: MASTER Requested read from vertex address: %h Data = %h\n",rAddress,DAT_O);
`endif
end
500,6 → 511,22
`define WBM_ACK_CONFIGURE_CORE1_PHASE3 25
`define WBM_END_CORE0_WRITE_CYCLE 26
`define WBM_END_CORE1_WRITE_CYCLE 27
 
`define WBM_CONFIGURE_CORE2_PHASE1 28
`define WBM_ACK_CONFIGURE_CORE2_PHASE1 29
`define WBM_CONFIGURE_CORE2_PHASE2 30
`define WBM_ACK_CONFIGURE_CORE2_PHASE2 31
`define WBM_CONFIGURE_CORE2_PHASE3 32
`define WBM_ACK_CONFIGURE_CORE2_PHASE3 33
`define WBM_CONFIGURE_CORE3_PHASE1 34
`define WBM_ACK_CONFIGURE_CORE3_PHASE1 35
`define WBM_CONFIGURE_CORE3_PHASE2 36
`define WBM_ACK_CONFIGURE_CORE3_PHASE2 37
`define WBM_CONFIGURE_CORE3_PHASE3 38
`define WBM_ACK_CONFIGURE_CORE3_PHASE3 39
`define WBM_END_CORE2_WRITE_CYCLE 40
`define WBM_END_CORE3_WRITE_CYCLE 41
`define WBM_CONFIGURE_NEXT_CORE 42
 
 
reg[31:0] rInstructionPointer;
552,6 → 579,20
rDataPointer = 32'b0;
end
 
reg rIncPacketCount;
reg [`WIDTH-1:0] rPacketCount;
 
always @ (posedge Clock)
begin
if (Reset)
rPacketCount = 0;
else
begin
if ( rIncPacketCount )
rPacketCount = rPacketCount + 1;
end
end
//-----------------------------------------------------
 
615,9 → 656,10
IncDP <= 0;
rResetDp <= 1;
rClearOutAddress <= 1;
rCoreSelect <= `SELECT_ALL_CORES;
rCoreSelectMask <= `SELECT_ALL_CORES;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if (Reset == 0)
WBMNextState <= `WBM_WRITE_INSTRUCTION_PHASE1;
645,11 → 687,11
IncDP <= 0;
rResetDp <= 1;
rClearOutAddress <= 0;
rCoreSelect <= `SELECT_ALL_CORES;
rCoreSelectMask <= `SELECT_ALL_CORES;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if ( ACK_I )
WBMNextState <= `WBM_ACK_INSTRUCTION_PHASE1;
else
670,10 → 712,11
IncDP <= 0;
rResetDp <= 1;
rClearOutAddress <= 0;
rCoreSelect <= `SELECT_ALL_CORES;
rCoreSelectMask <= `SELECT_ALL_CORES;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if (ACK_I == 0)
WBMNextState <= `WBM_WRITE_INSTRUCTION_PHASE2;
else
693,10 → 736,10
IncDP <= 0;
rResetDp <= 1;
rClearOutAddress <= 0;
rCoreSelect <= `SELECT_ALL_CORES;
rCoreSelectMask <= `SELECT_ALL_CORES;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
 
rIncPacketCount <= 0;
if ( ACK_I )
WBMNextState <= `WBM_ACK_INSTRUCTION_PHASE2;
716,10 → 759,12
MST_O <= 1;
IncDP <= 0;
rResetDp <= 1;
rCoreSelect <= `SELECT_ALL_CORES;
rCoreSelectMask <= `SELECT_ALL_CORES;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if (rInstructionPointer >= rInstructionBuffer[0])
begin
IncIA <= 0;//*
742,16 → 787,17
TGC_O <= `TAG_BLOCK_WRITE_CYCLE; //TAG CYCLE: 10 indicated multiple write Cycle
TGA_O <= `TAG_DATA_ADDRESS_TYPE; //TAG Address: 01 means instruction address type.
STB_O <= ~ACK_I; //Start of phase (you put this in zero to introduce wait cycles)
// IncIP <= 0;
IncIA <= 0;
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= `SELECT_ALL_CORES;
rCoreSelectMask <= `SELECT_ALL_CORES;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if ( ACK_I )
WBMNextState <= `WBM_ACK_DATA_PHASE1;
else
772,9 → 818,12
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= `SELECT_ALL_CORES;
rCoreSelectMask <= `SELECT_ALL_CORES;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if (ACK_I == 0)
WBMNextState <= `WBM_SEND_DATA_PHASE2;
795,9 → 844,11
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= `SELECT_ALL_CORES;
rCoreSelectMask <= `SELECT_ALL_CORES;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if ( ACK_I )
WBMNextState <= `WBM_ACK_DATA_PHASE2;
818,9 → 869,12
IncDP <= 0;//*
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= `SELECT_ALL_CORES;
rCoreSelectMask <= `SELECT_ALL_CORES;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if (ACK_I == 0)
WBMNextState <= `WBM_SEND_DATA_PHASE3;
842,9 → 896,12
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= `SELECT_ALL_CORES;
rCoreSelectMask <= `SELECT_ALL_CORES;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if ( ACK_I )
WBMNextState <= `WBM_ACK_DATA_PHASE3;
865,9 → 922,12
IncDP <= 1;//*
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= `SELECT_ALL_CORES;
rCoreSelectMask <= `SELECT_ALL_CORES;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
WBMNextState <= `WBM_END_DATA_WRITE_CYCLE;
885,9 → 945,12
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= `SELECT_ALL_CORES;
rCoreSelectMask <= `SELECT_ALL_CORES;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if (rDataPointer > 3*5)//wConfigurationPacketSize*3)
WBMNextState <= `WBM_CONFIGURE_CORE0_PHASE1;
904,16 → 967,19
TGC_O <= `TAG_BLOCK_WRITE_CYCLE; //TAG CYCLE: 10 indicated multiple write Cycle
TGA_O <= `TAG_DATA_ADDRESS_TYPE; //TAG Address: 01 means instruction address type.
STB_O <= ~ACK_I; //Start of phase (you put this in zero to introduce wait cycles)
// IncIP <= 0;
IncIA <= 0;
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= 4'b0001;
rClearOutAddress <= 0;
 
rIncCoreSelect <= 0;
rCoreSelectMask <= 0;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if ( ACK_I )
WBMNextState <= `WBM_ACK_CONFIGURE_CORE0_PHASE1;
else
927,15 → 993,17
TGC_O <= `TAG_BLOCK_WRITE_CYCLE;
TGA_O <= `TAG_DATA_ADDRESS_TYPE;
STB_O <= 0; //* //Negate STB_O in response to ACK_I
// IncIP <= 1; //* //Increment local inst pointer to send the next 32 bits
IncIA <= 0; //leave the instruction write address the same
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= 4'b0001;
rClearOutAddress <= 0;
rIncCoreSelect <= 0;
rCoreSelectMask <= 0;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if (ACK_I == 0)
WBMNextState <= `WBM_CONFIGURE_CORE0_PHASE2;
950,15 → 1018,17
TGC_O <= `TAG_BLOCK_WRITE_CYCLE; //TAG CYCLE: 10 indicated multiple write Cycle
TGA_O <= `TAG_DATA_ADDRESS_TYPE; //TAG Address: 01 means instruction address type.
STB_O <= ~ACK_I; //Start of phase (you put this in zero to introduce wait cycles)
// IncIP <= 0;
IncIA <= 0;
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= 4'b0001;
rClearOutAddress <= 0;
 
rIncCoreSelect <= 0;
rCoreSelectMask <= 0;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if ( ACK_I )
WBMNextState <= `WBM_ACK_CONFIGURE_CORE0_PHASE2;
973,15 → 1043,17
TGC_O <= `TAG_BLOCK_WRITE_CYCLE;
TGA_O <= `TAG_DATA_ADDRESS_TYPE;
STB_O <= 0; //* //Negate STB_O in response to ACK_I
// IncIP <= 1; //* //Increment local inst pointer to send the next 32 bits
IncIA <= 0; //leave the instruction write address the same
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= 4'b0001;
rClearOutAddress <= 0;
rIncCoreSelect <= 0;
rCoreSelectMask <= 0;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 0;
if (ACK_I == 0)
WBMNextState <= `WBM_CONFIGURE_CORE0_PHASE3;
996,13 → 1068,16
TGC_O <= `TAG_BLOCK_WRITE_CYCLE; //TAG CYCLE: 10 indicated multiple write Cycle
TGA_O <= `TAG_DATA_ADDRESS_TYPE; //TAG Address: 01 means instruction address type.
STB_O <= ~ACK_I; //Start of phase (you put this in zero to introduce wait cycles)
// IncIP <= 0;
IncIA <= 0;
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= 4'b0001;
rClearOutAddress <= 0;
rIncPacketCount <= 0;
 
 
rIncCoreSelect <= 0;
rCoreSelectMask <= 0;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
1019,15 → 1094,17
TGC_O <= `TAG_BLOCK_WRITE_CYCLE;
TGA_O <= `TAG_DATA_ADDRESS_TYPE;
STB_O <= 0; //* //Negate STB_O in response to ACK_I
// IncIP <= 1; //* //Increment local inst pointer to send the next 32 bits
IncIA <= 0; //leave the instruction write address the same
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= 4'b0001;
rClearOutAddress <= 0;
rIncCoreSelect <= 0;
rCoreSelectMask <= 0;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
rIncPacketCount <= 1;
if (ACK_I == 0)
WBMNextState <= `WBM_END_CORE0_WRITE_CYCLE;
1046,16 → 1123,17
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rCoreSelect <= 4'b0001;
rRenderEnable <= 0;
rIncCoreSelect <= 0;
rCoreSelectMask <= 0;
rRenderEnable <= 0;
rIncPacketCount <= 0;
 
if (rDataPointer > 3*7)
if ((rPacketCount %2) == 0) //Two packets per Core
begin
rClearOutAddress <= 1;
rPrepateWriteAddressForNextCore <= 1;
WBMNextState <= `WBM_CONFIGURE_CORE1_PHASE1;
WBMNextState <= `WBM_CONFIGURE_NEXT_CORE;
end
else
begin
1066,187 → 1144,37
end
 
//------------------------------------------
 
//----------------------------------------
//Ok so from this point we configure CORE,
//we are going to configure the register:
//CREG_PIXEL_2D_INITIAL_POSITION and CREG_PIXEL_2D_FINAL_POSITION
//Since we incremented our Write Address pointer from the Core0 config,
//then now we need to make point to CREG_PIXEL_2D_INITIAL_POSITION again
//ans repeat the process for CORE1
`WBM_CONFIGURE_CORE1_PHASE1:
begin
WE_O <= 1; //Indicate write cycle
CYC_O <= 1; //Start of the cycle
TGC_O <= `TAG_BLOCK_WRITE_CYCLE; //TAG CYCLE: 10 indicated multiple write Cycle
TGA_O <= `TAG_DATA_ADDRESS_TYPE; //TAG Address: 01 means instruction address type.
STB_O <= ~ACK_I; //Start of phase (you put this in zero to introduce wait cycles)
// IncIP <= 0;
IncIA <= 0;
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= 4'b0010;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
if ( ACK_I )
WBMNextState <= `WBM_ACK_CONFIGURE_CORE1_PHASE1;
else
WBMNextState <= `WBM_CONFIGURE_CORE1_PHASE1;
end
//----------------------------------------
`WBM_ACK_CONFIGURE_CORE1_PHASE1:
begin
WE_O <= 1;
CYC_O <= 1;
TGC_O <= `TAG_BLOCK_WRITE_CYCLE;
TGA_O <= `TAG_DATA_ADDRESS_TYPE;
STB_O <= 0; //* //Negate STB_O in response to ACK_I
// IncIP <= 1; //* //Increment local inst pointer to send the next 32 bits
IncIA <= 0; //leave the instruction write address the same
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= 4'b0010;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
if (ACK_I == 0)
WBMNextState <= `WBM_CONFIGURE_CORE1_PHASE2;
else
WBMNextState <= `WBM_ACK_CONFIGURE_CORE1_PHASE1;
end
//----------------------------------------
`WBM_CONFIGURE_CORE1_PHASE2:
begin
WE_O <= 1; //Indicate write cycle
CYC_O <= 1; //Start of the cycle
TGC_O <= `TAG_BLOCK_WRITE_CYCLE; //TAG CYCLE: 10 indicated multiple write Cycle
TGA_O <= `TAG_DATA_ADDRESS_TYPE; //TAG Address: 01 means instruction address type.
STB_O <= ~ACK_I; //Start of phase (you put this in zero to introduce wait cycles)
// IncIP <= 0;
IncIA <= 0;
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= 4'b0010;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
if ( ACK_I )
WBMNextState <= `WBM_ACK_CONFIGURE_CORE1_PHASE2;
else
WBMNextState <= `WBM_CONFIGURE_CORE1_PHASE2;
end
//----------------------------------------
`WBM_ACK_CONFIGURE_CORE1_PHASE2:
begin
WE_O <= 1;
CYC_O <= 1;
TGC_O <= `TAG_BLOCK_WRITE_CYCLE;
TGA_O <= `TAG_DATA_ADDRESS_TYPE;
STB_O <= 0; //* //Negate STB_O in response to ACK_I
// IncIP <= 1; //* //Increment local inst pointer to send the next 32 bits
IncIA <= 0; //leave the instruction write address the same
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= 4'b0010;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
if (ACK_I == 0)
WBMNextState <= `WBM_CONFIGURE_CORE1_PHASE3;
else
WBMNextState <= `WBM_ACK_CONFIGURE_CORE1_PHASE2;
end
//----------------------------------------
`WBM_CONFIGURE_CORE1_PHASE3:
begin
WE_O <= 1; //Indicate write cycle
CYC_O <= 1; //Start of the cycle
TGC_O <= `TAG_BLOCK_WRITE_CYCLE; //TAG CYCLE: 10 indicated multiple write Cycle
TGA_O <= `TAG_DATA_ADDRESS_TYPE; //TAG Address: 01 means instruction address type.
STB_O <= ~ACK_I; //Start of phase (you put this in zero to introduce wait cycles)
// IncIP <= 0;
IncIA <= 0;
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= 4'b0010;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
if ( ACK_I )
WBMNextState <= `WBM_ACK_CONFIGURE_CORE1_PHASE3;
else
WBMNextState <= `WBM_CONFIGURE_CORE1_PHASE3;
end
//----------------------------------------
`WBM_ACK_CONFIGURE_CORE1_PHASE3:
begin
WE_O <= 1;
CYC_O <= 1;
TGC_O <= `TAG_BLOCK_WRITE_CYCLE;
TGA_O <= `TAG_DATA_ADDRESS_TYPE;
STB_O <= 0; //* //Negate STB_O in response to ACK_I
// IncIP <= 1; //* //Increment local inst pointer to send the next 32 bits
IncIA <= 0; //leave the instruction write address the same
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= 4'b0010;
rRenderEnable <= 0;
rPrepateWriteAddressForNextCore <= 0;
if (ACK_I == 0)
WBMNextState <= `WBM_END_CORE1_WRITE_CYCLE;
else
WBMNextState <= `WBM_ACK_CONFIGURE_CORE1_PHASE3;
end
//----------------------------------------
`WBM_END_CORE1_WRITE_CYCLE:
begin
WE_O <= 0;
CYC_O <= 0; //*
`WBM_CONFIGURE_NEXT_CORE:
begin
WE_O <= 0;
CYC_O <= 0;
TGC_O <= 0;
TGA_O <= 0;
STB_O <= 0;
IncIA <= 1;//*
IncIA <= 0;
MST_O <= 1;
IncDP <= 0;
rResetDp <= 0;
rClearOutAddress <= 0;
rCoreSelect <= 4'b0010;
rRenderEnable <= 0;
rCoreSelectMask <= 0;
rIncCoreSelect <= 1;
rRenderEnable <= 0;
rIncPacketCount <= 0;
 
if (rDataPointer > 3*10)
begin
rPrepateWriteAddressForNextCore <= 1;
WBMNextState <= `WBM_DONE;
end
if (wCoreSelect[`MAX_CORES-1] == 1)
WBMNextState <= `WBM_DONE;
else
begin
rPrepateWriteAddressForNextCore <= 0;
WBMNextState <= `WBM_CONFIGURE_CORE1_PHASE1;
end
end
WBMNextState <= `WBM_CONFIGURE_CORE0_PHASE1;
end
 
//----------------------------------------
//----------------------------------------
//Here everything is ready so just start!
`WBM_DONE:
1261,8 → 1189,8
IncDP <= 0;
rResetDp <= 1;
rClearOutAddress <= 1;
rCoreSelect <= 4'b0010;
rRenderEnable <= 4'b0011;
rCoreSelectMask <= 0;
rRenderEnable <= 4'b1111;
rPrepateWriteAddressForNextCore <= 0;
WBMNextState <= `WBM_DONE;

powered by: WebSVN 2.1.0

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