INPUT TO MEG

INPUTS: RESTART DATA0 DATA1 DATA2 DATA3 INT CONT0 CONT1 READY;

OUTPUTS: A_B INC_PC SET20 LATCH_L LATCH_H DATA_IN2PC EN_AREG EN_ACCUM INST_ALU0 INST_ALU1 INST_ALU2 LAT_PASS_ALU SET_CONT0 SET_CONT1 CONT_LAT DATA_IN2AREG DATA_IN2ACCUM RD_WRT DATA_OUT_ACCUM REGB2PC;

reset on RESTART to state0;

-- STATE0 IS THE RESTART STAGE

state0: case (RESTART)

0 => state0;

1 => state1 (SET20);

endcase => state0;

-- STATE1 TAKES CARE OF BOTH THE RESTART AND DECODE STAGE

state1: case (READY DATA0 DATA1 DATA2 DATA3)

0 ? ? ? ? => state1;

1 0 0 0 0 => state1 (LAT_PASS_ALU EN_ACCUM INC_PC);

1 0 0 0 1 => state1 (LAT_PASS_ALU EN_ACCUM INST_ALU0 INC_PC);

1 0 0 1 0 => state1 (LAT_PASS_ALU EN_ACCUM INST_ALU1 INC_PC);

1 0 0 1 1 => state1 (LAT_PASS_ALU EN_ACCUM INST_ALU0 INST_ALU1 INC_PC);

1 0 1 0 0 => state1 (LAT_PASS_ALU EN_ACCUM INST_ALU2 INC_PC);

1 0 1 0 1 => state1 (LAT_PASS_ALU EN_ACCUM INST_ALU0 INST_ALU2 INC_PC);

1 0 1 1 0 => state2 (INC_PC CONT_LAT);

1 0 1 1 1 => state2 (INC_PC SET_CONT0 CONT_LAT);

1 1 0 0 0 => state2 (INC_PC SET_CONT1 CONT_LAT);

1 1 0 0 1 => state2 (INC_PC SET_CONT0 SET_CONT1 CONT_LAT);

1 1 0 1 0 => state1 (INC_PC);

1 1 0 1 1 => state5;

endcase => state1;

-- STATE2 IS FOR OBTAINING THE LOWER 4-bits OF A LOAD/STORE/BRANCH ADDRESS RETRIEVAL

state2: case (READY)

0 => state2;

1 => state3 (DATA_IN2PC LATCH_L INC_PC);

endcase => state2;

-- STATE3 IS FOR OBTAINING THE UPPER 4-BITS OF A LOAD/STORE/BRANCH ADDRESS RETRIEVAL

state3: case (READY CONT0 CONT1)

0 0 ? => state3;

1 0 ? => state4 (DATA_IN2PC LATCH_H A_B);

1 1 0 => state4 (DATA_IN2PC LATCH_H A_B DATA_OUT_ACCUM RD_WRT);

1 1 1 => state1 (DATA_IN2PC LATCH_H REGB2PC A_B);

endcase => state2;

-- STATE4 LOADS THE DATA INTO THE APPROPRIATE REGISTERS

state4: case (READY CONT0 CONT1)

0 ? ? => state4;

1 0 0 => state1 (EN_AREG DATA_IN2AREG INC_PC);

1 0 1 => state1 (EN_ACCUM DATA_IN2ACCUM INC_PC);

1 1 0 => state1 (INC_PC);

endcase => state4;

-- STATE5 IS FOR THE IDLE CONTROL

state5: case (INT)

0 => state5;

1 => state1 (INC_PC);

endcase => state5;




Back to the front page On to next page...