I have a working version of the architecture simulated in VHDL. It is synthesizable, and I have downloaded it to an Artix-7 development board - the Digilent Cmod. I have a few simple programs running with a UART interface. I have a bootloader running so I can load programs over the UART. I've written a simple assembler to generate machine code I can send to the bootloader. And I've started my breadboard hardware build.
Primary project goals:
- Implements only one instruction - move
- Can be built on a breadboard using a small number of simple DIP components (74xx TTL circuitry).
- All components are active. No obsolete or hard-to-find components. All components in stock at popular distributors.
- Useful - it needs to be able to run programs in a short amount of time.
Secondary project goals:
- Useful input mechanism. I expect a set of DIP switches for the input, but I'd prefer something more useful like a UART port or maybe a keyboard.
- Useful output mechanism. I could do a simple LED numeric display, but I'd prefer something more useful like a UART or at least a 4x20 character display. Perhaps I'd even do a video memory with a separate display.
- Easy and natural loading of programs. I'd prefer not to have a roundabout way to load programs into memory. Perhaps even use the above UART to send programs.
- Easily expandable for more memory. I'd like to be able to load very large programs.
- Write/adapt a compiler/assembler. I'd like to be able to take existing programs and compile them to run on the computer. This would probably be the last thing I do considering the complexity.
- Clock circuit with single-step mode (DONE!)
- Program counter (low byte only)
- Instruction ROM
- Src and Dst registers
- Control state machine - 3-bit shift reg
- Decoding ROMs
- Load reg
- ALU A
- ALU chips
- ALU result reg
- AEB/Carry FFs/buffers
- Pointer address registers
- ROM data tristate buffer (read byte at PC)
- Data Ram register (may need to modify to store lower 7 bits of either dst or src so they can be buffered to the ROM)
- PC buffer
- Expand PC and data ram high byte