This same sort of thing was all taught on my degree course (Manchester, UK). Implement an ARM core (with a reduced instruction set), run on FPGA, write a compiler in the compilers course etc etc.
It set me up well - I've written a few emulators as a hobbyist.
There are loads of free RISC-V cores that you can read the source of and run on cheap FPGAs. Take a look at PicoRV32: https://github.com/YosysHQ/picorv32
It set me up well - I've written a few emulators as a hobbyist.