feature: added docs for ALU instruction set

This commit is contained in:
rigor
2026-07-26 14:18:24 -05:00
parent 31de84b5e1
commit bd05b901bb
3 changed files with 280 additions and 1 deletions
+4 -1
View File
@@ -1,4 +1,7 @@
[book]
title = "ORG Comp"
authors = ["rigor"]
language = "en"
[preprocessor.extended-markdown-table]
[output.html]
[output.linkcheck]
+1
View File
@@ -2,3 +2,4 @@
- [Todo](./todo.md)
- [Part Numbers](./part_numbers.md)
- [Instruction Set](./instruction_set.md)
+275
View File
@@ -0,0 +1,275 @@
# Instruction Set
Instructions are <!--todo--> 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.
```extended-markdown-table
| 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 | 0b000000 | AND | ACC_FB_n = ACC_IN_n * REG_x_n |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b01101 | 0b000000 | NOR | ACC_FB_n = !(ACC_IN_n + REG_x_n) |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b01110 | 0b000000 | XNOR | ACC_FB_n = !(ACC_IN_n ^ REG_x_n) |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b01111 | 0b000000 | NADD | ACC_FB = ~(ACC_IN + REG_x) |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b10000 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b10001 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b10010 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b10011 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b10100 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b10101 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b10110 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b10111 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b11000 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b11001 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b11010 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b11011 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b11100 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b11101 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b11110 | 0b000000 | RESERVED | RESERVED |
|-------------|-------------|----------|----------|-------------------------------------------------------------------------------------------|
| 0b000 | 0b11111 | 0b000000 | 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 |
```