Files
hardware/docs/src/instruction_set.md
T

33 KiB

Instruction Set

Instructions are bits long and are split into a card number, an instruction, and a register. All values starting with 0b are binary bit representations (- indicates that a bit is "don't care" and a letter indicates a numeric field). All cards are provided the full instruction, an enable signal, the current state of the ACC register (ACC_IN), and the state of the register given by the Register section. No requirements are made on individual boards other than that they do not pull the bus high or low when their card is not enabled. UPPER_SNAKE_CASE words are values on the bus, _x indicates the register index, and _n indicates the bit index.

| Instruction Bit Representation       | Instruction                                                                                          |
|--------------------------------------|----------|-------------------------------------------------------------------------------------------|
| Card Number | Instruction | Register | Mnemonic | Description                                                                               |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b00000     | 0b------ | NOP      | ACC_FB_n = ACC_IN_n where n <= word size                                                  |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b00001     | 0b------ | INC      | ACC_FB = ACC_IN + 1                                                                       |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b00010     | 0b------ | ASL      | ACC_FB_n = ACC_IN_n+1 where 0 < n < word size, ACC_FB_msb = ACC_IN_msb                    |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b00011     | 0b------ | ASR      | ACC_FB_n = ACC_IN_n-1 where n < word size - 1, ACC_FB_msb = ACC_IN_msb                    |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b00100     | 0b------ | LSL      | ACC_FB_n = ACC_IN_n+1 where n > 0, ACC_FB_lsb = 0                                         |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b00101     | 0b------ | LSR      | ACC_FB_n = ACC_IN_n-1 where n < word size - 1, ACC_FB_msb = 0                             |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b00110     | 0b------ | ROL      | ACC_FB_n = ACC_IN_n-1 where n > 0, ACC_FB_0 = ACC_IN_msb                                  |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b00111     | 0b------ | ROR      | ACC_FB_n = ACC_IN_n+1 where n < word size - 1, ACC_FB_msb = ACC_IN_0                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b01000     | 0bxxxxxx | NAND     | ACC_FB_n = !(ACC_IN_n * REG_x_n)                                                          |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b01001     | 0bxxxxxx | OR       | ACC_FB_n = ACC_IN_n + REG_x_n                                                             |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b01010     | 0bxxxxxx | XOR      | ACC_FB_n = ACC_IN_n ^ REG_x_n                                                             |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b01011     | 0bxxxxxx | ADD      | ACC_FB = ACC_IN + REG_x_n                                                                 |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b01100     | 0bxxxxxx | AND      | ACC_FB_n = ACC_IN_n * REG_x_n                                                             |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b01101     | 0bxxxxxx | NOR      | ACC_FB_n = !(ACC_IN_n + REG_x_n)                                                          |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b01110     | 0bxxxxxx | XNOR     | ACC_FB_n = !(ACC_IN_n ^ REG_x_n)                                                          |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b01111     | 0bxxxxxx | NADD     | ACC_FB = ~(ACC_IN + REG_x)                                                                |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000       | 0b1----     | 0bxxxxxx | RESERVED | RESERVED                                                                                  |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b00000     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b00001     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b00010     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b00011     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b00100     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b00101     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b00110     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b00111     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b01000     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b01001     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b01010     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b01011     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b01100     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b01101     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b01110     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b01111     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b10000     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b10001     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b10010     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b10011     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b10100     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b10101     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b10110     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b10111     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b11000     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b11001     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b11010     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b11011     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b11100     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b11101     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b11110     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b001       | 0b11111     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b00000     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b00001     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b00010     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b00011     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b00100     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b00101     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b00110     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b00111     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b01000     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b01001     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b01010     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b01011     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b01100     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b01101     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b01110     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b01111     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b10000     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b10001     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b10010     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b10011     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b10100     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b10101     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b10110     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b10111     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b11000     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b11001     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b11010     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b11011     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b11100     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b11101     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b11110     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b010       | 0b11111     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b00000     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b00001     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b00010     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b00011     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b00100     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b00101     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b00110     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b00111     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b01000     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b01001     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b01010     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b01011     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b01100     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b01101     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b01110     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b01111     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b10000     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b10001     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b10010     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b10011     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b10100     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b10101     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b10110     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b10111     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b11000     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b11001     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b11010     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b11011     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b11100     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b11101     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b11110     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b11111     | 0b000000 | TODO     | TODO                                                                                      |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b100       | 0b00000     | 0b000000 | TODO     | TODO                                                                                      |