diff --git a/docs/book.toml b/docs/book.toml index 8ea92ab..74c1cc4 100644 --- a/docs/book.toml +++ b/docs/book.toml @@ -1,4 +1,7 @@ [book] title = "ORG Comp" authors = ["rigor"] -language = "en" + +[preprocessor.extended-markdown-table] +[output.html] +[output.linkcheck] diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md index 6ccb250..9b84a0e 100644 --- a/docs/src/SUMMARY.md +++ b/docs/src/SUMMARY.md @@ -2,3 +2,4 @@ - [Todo](./todo.md) - [Part Numbers](./part_numbers.md) +- [Instruction Set](./instruction_set.md) diff --git a/docs/src/instruction_set.md b/docs/src/instruction_set.md new file mode 100644 index 0000000..f22882f --- /dev/null +++ b/docs/src/instruction_set.md @@ -0,0 +1,275 @@ +# 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. + +```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 | +```