The traditional assignment of computer organization discipline during my graduation was to implement a DLX based µRISC-II emulator using only basic electronic components abstractions, basically logic gates and muxes. My version has a status screen that was more improved than the most common, showing the assembler mnemonic in execution. There is also a pipelined version of the emulator where the status screen shows the instructions flowing in the pipeline, showing also the occurence of forwards and control hazards. Here is a video of the pipelined version of the emulator running:

Updated: