Rubik's Cube (MIPS Assembly)

1900 MIPS assembly instructions running on a SystemVerilog processor built from spit and toothpicks in COMP 541 (Digital Logic). Grade: 100%; extra credit: 4/5.

Full demo

Description

1900 MIPS assembly instructions running on a SystemVerilog processor built from spit and toothpicks in COMP 541 (Digital Logic and Computer Design).

Grade: 100%

Extra credit: 4/5

Feedback

Rubik’s cube simulator:

Wow!

Performs all moves: rotations, slices etc. Undo as well.

Scrambles using PRNG. Generates 8 scrambles. User can modify them but only that last 8 are saved.

Two hardwire modifications: Random number using hardware LFSR. Timer in Verilog on board — LEDs display information.

Nice features: Status bar shows scrambling pattern. Easter egg — sprites change after you solve it. Accelerometer tilt makes rotations. Sound/Jingle on solve win!

All in all, what a truly wonderful project. Initially I thought it would be a pretty tough one to complete, but you successfully did it. In fact, hit it out of the park! Worthy of extra credit (reported separately).

Professor Montek Singh

Figures

Rubik's cube code stats
Code line count - imem.mem is instruction memory
MIPS processor implemented in SystemVerilog
MIPS processor implemented in SystemVerilog and deployed on Nexys A7 FPGA board