
This project implements a TinyTapeout-friendly minimal 8-bit CPU with a compact accumulator-based architecture.
The processor contains:
The CPU executes one instruction per clock cycle. Each instruction is 8 bits wide and follows the format:
Supported instructions include:
The default ROM program continuously:
ui_in)uo_out)uio_out)This demonstrates basic instruction execution, program flow, and I/O interfacing in a very small silicon footprint suitable for a single TinyTapeout tile.
ena high to allow CPU execution.rst_n = 0 briefly to reset the CPU.rst_n = 1.Testing behavior:
ui_in[7:0]INP instructionuo_out[7:0]uio_out[7:0] for one clock cycleExample:
ui_in = 8'b10101010uo_out will become 10101010The program continuously loops, so changing ui_in dynamically updates the outputs.
No external hardware is required.
Optional external hardware for demonstration:
ui_inuo_out| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | External input bit 0 | CPU output bit 0 | Bidirectional IO bit 0 |
| 1 | External input bit 1 | CPU output bit 1 | Bidirectional IO bit 1 |
| 2 | External input bit 2 | CPU output bit 2 | Bidirectional IO bit 2 |
| 3 | External input bit 3 | CPU output bit 3 | Bidirectional IO bit 3 |
| 4 | External input bit 4 | CPU output bit 4 | Bidirectional IO bit 4 |
| 5 | External input bit 5 | CPU output bit 5 | Bidirectional IO bit 5 |
| 6 | External input bit 6 | CPU output bit 6 | Bidirectional IO bit 6 |
| 7 | External input bit 7 | CPU output bit 7 | Bidirectional IO bit 7 |