Регистр инструкций (IR) хранит текущий код операции, для обработки на декодере. Код операции загружается в IR с логики предекодирования.
Выходы на схеме слева, потому что с левой стороны топологически расположен декодер.
Необходимо отметить, что на вход IR подается инвертированное значение кода операции (PD) и хранится оно на защелке также в инвертированном виде.
Сразу после включения питания значение кода операции 0xFF, так как на защелке будет 0x00.
Симуляция относительно простая и самоописательная. Программный контекст :
static int FETCH, IR01; static int PD[8], _IR[8]; if (PHI1) { // load instruction register if ( FETCH ) { for (n=0; n<8; n++) _IR[n] = NOT (PD[n]); } IR01 = NOT(_IR[0]) | NOT(_IR[1]); }
// ------------------ // Instruction Register (IR) // Controls: // FETCH: Load IR from PD (Predecode Latch) module InstructionRegister ( // Outputs IR, // Inputs PHI0, FETCH, _PD ); input PHI0, FETCH; input [7:0] _PD; // Active-low! output [7:0] IR; // Clocks wire PHI1, PHI2; assign PHI1 = ~PHI0; assign PHI2 = PHI0; reg [7:0] IR = 8'b11111111; // Power-up state (IR = 0xFF) initial begin IR = 8'b11111111; // For safety. end always @(PHI1) begin if (FETCH) IR = ~_PD; end endmodule // InstructionRegister