|
||
---|---|---|
.gitea/workflows | ||
Makefile | ||
NEXYS.xdc | ||
README.md | ||
alu.vhd | ||
stack.vhd | ||
tb_alu.vhdl | ||
tb_stack.vhdl |
README.md
Stack based 8-Bit processor
Peripherals
Connected to a bidirectional bus.
Instruction set
Operand Code | Instruction | Signature | Description |
---|---|---|---|
00000000 | nop | Just do nothing for a cycle straight | |
00010000 | int | interrupt | Interrupt code to call on PIA |
00100000 | jmp | label | Jump to label if last operation had non zero result |
00110000 | wfi | interrupt | Wait for interrupt. If interrupt is zero, wait for any |
00000100 | push | stack, rx | Push the rx value to the index stack |
00010100 | pop | stack, rx | Pop into the register rx from index stack |
00001000 | read | rdx | Read from PIA into the target register |
00011000 | write | rdx | Write to PIA the value of target register |
00000010 | not | rx | negates rx |
00010010 | par | rx | parity of rx |
00100010 | cnt | rx | count of set bits in rx |
00110110 | and | rx,r1 | Store and of rx and r1 into rx |
01000110 | or | rx,r1 | Store or of rx and r1 into rx |
01010110 | xor | rx,r1 | Store xor of rx and r1 into rx |
01100110 | mov | rx,r1 | overwrite rx with r1 |
01110110 | sl | rx,r1 | shift rx left by r1 |
10000110 | sr | rx,r1 | shift rx right by r1 |
00001010 | add | rx,r1 | Add r1 to rx |
00011010 | sub | rx,r1 | Subtract r1 from rx |
00001110 | seq | rx,ry | Set if rx = ry |
00011110 | slt | rx,ry | Set if rx < ry |
00101110 | sltu | rx,ry | set if abs(rx) < abs(ry) |
Instruction Types
From | To | Type |
---|---|---|
00000000 | 11111110 | Base Instructions |
00000001 | 11111111 | Possible extension |