CS 232: Lab #5

Lab 5: Machine instructions

The purpose of this lab is to go over the new design for a programmable light display. The new design has a more complex instruction set that enables more general purpose programs.

1. The project this week involves designing a more general programmable circuit. The conceptual organization of the circuit is shown below.

The program is stored in the ROM. The accumulator and light register are general purpose 8-bit registers. The IR holds the current instruction, and the PC holds the address of the next instruction.

We will implement four types of instructions for this circuit: move, binary operations, unconditional branch, and a conditional branch. The move instruction will copy bits from a source to a destination. The binary operations will execute some binary operation on two source operands and write the result to a destination. One of the source operands will also be the destination. The unconditional branch will write an address value from the IR to the PC. The conditional branch will write an address value from the IR to the PC if the selected test register (ACC or LR) is equal to 0.

The instruction set for this machine will be 10 bits. The two leftmost bits will specify the type of instruction. The remaining bits will specify the rest of the required information. The table below shows the organization of the four instructions.

OpcodeFormatDescription
00[C1 C0] [Dest1 Dest0] [Src1 Src0] [Val3 Val2 Val1 Val0]Move from
SRC to DEST
Dest10: 00 = ACC, 01 = LR, 10 = ACC low 4 bits, 11 = ACC high 4 bits
Src10: 00 = ACC, 01 = LR, 10 = IR low 4 bits sign extended, 11 = all 1s
01[C1 C0] [Op2 Op1 Op0] [Src1 Src0] [Dest0] [Val1 Val0]Binary operator
DEST = DEST op SRC
Op210: 000 = add, 001 = sub, 010 = shift left, 011 = shift right maintain sign bit
Op210: 100 = xor, 101 = and, 110 = rotate left, 111 = rotate right
Src10: 00 = ACC, 01 = LR, 10 = IR low 2 bits sign extended, 11 = all 1s
Dest0: 0 = ACC, 1 = LR