Minecraft name: MNbiom
What’s a thing you have made which demonstrates sufficient engineering knowledge?: I made a MNPU1, which is my first pipelined CPU.
Specifications:
- 8bit ALU
- 5bit opcode
- 3bit operand
- accumulator architecture
- 8rt(1,25Hz) clock
- 4 stage pipeline(Fetch, Decode, Execute, Writeback)
- uses data forwarding to prevent data hazards
- 64B iCache
- 256 pages (total PROM = 16kB)
- 7 general purpose registers(register 7 is used as pointer)
- 8 I/O ports
- 64B RAM
- 28B data stack
- MCHPRS compatible
ISA: MNPU1 - ISA - Google Sheets
What engineering work went into designing this device?:
Main goal of this CPU was to achieve a clock speed of at least 1Hz, implement RAM, I/O ports and iCache system.
I started building with a data loop which was 7rt at first but after implementing data forwarding logic it was 8rt. Then I connected it to Control Unit and iCache which I had done earlier. There I encountered first problems, which was unsynchronized writeback and a broken data forwarding controller. After some debugging, I got it working and started working on immediates, which wasn’t as hard as I expected. Then I added jumps and branches. This part was the hardest because it conflicted with almost everything I was trying to add. Fortunately, branch result was given fast enough to stop instruction after branching from executing (1rt to slow , but latch need 2rt to update). Then I added RAM and I/O which somehow worked without much debugging. Last thing I finished was page swap logic that I had already prepared, and data stack that was mainly meant to fill empty space next to the RAM.
After 2 months of work, I finished it and ran programs like:
- 1 Player Pong
- y=ax+b graph
- 16bit fibonacci sequence
- collatz conjecture
- calculator(add, sub, mult, div)
- bubble sort
In future i plan to try making hexadecimal cpu.
Image/s and/or video/s of the device: engineer application - Google Drive