MIPSfpga 2.0: the CPU architecture course that’s different from the rest

Many students of computer architecture study it at the theoretical level of data paths, control structures, and memory systems. But how these all fit together is often left to the imagination. The MIPSfpga course changes that. The MIPSfpga is the first unobfuscated, commercial softcore CPU that has been made available to all academics. With MIPSfpga, users can explore computer architecture both specifically and deeply and in an integrated system context.

MIPSfpga is a MIPS softcore – specifically, the microAptiv core, the same one found in the PIC32MK, targeted to a field programmable gate array (FPGA). Not only has Imagination Technologies allowed access to the popular MIPS core, but it has also prepared a robust set of teaching materials that both quickly get you started with the core and then also lead you in exploring and actually modifying the MIPS core and system.

A block diagram of the MIPSfpga core.

Three sets of materials guide users through the set-up, use, and modification of MIPSfpga: the Getting Started Guide, Labs, and SoC packages.

The first package provides the MIPSfpga system as a set of Verilog files and an overview of the MIPSfpga system and how to use it.

The second package (MIPSfpga Labs) includes 25 hands-on labs that guide users in exploring computer architecture and system-level design. For example, the labs show how to modify the MIPSfpga system to interface with peripherals such as LCDs and sensors, use performance counters and interrupts, change cache replacement policies, add new instructions, and measure the performance differences of these enhancements. Supported by a commercial suite of compilers, the ability to modify and test architectural and system changes can be done relatively quickly with clear performance results.

The final package from Imagination Technologies is the MIPSfpga SoC. This shows how to build a system-on-chip design based on MIPSfpga that loads the open source Linux operating system.

The newest version of MIPSfpga, v2.0, was released on 1 July 2017. It provides many added features and resources, including 16 additional hands-on labs – increasing the number of labs from 9 to 25 – the capability to download programs onto MIPSfpga using a UART, smaller boot code, installation instructions for Windows or Linux-based systems, both Verilog and VHDL versions of system-level modules, and an enabled Fast Debug Channel (FDC) and user-defined interface (UDI) for, enabling the use of I/O features such as printf and enabling users to define their own instructions.

The MIPSfpga course has been very successful globally
Since May 2015, over 600 universities around the world have licenced and downloaded the MIPSfpga core, the Getting Started Guide, and the lab exercises.

MIPSfpga transforms computer architecture education by providing full access to the guts of a commercial CPU core and system and by guiding users through the use and modification of the core and system. And the fun doesn’t stop there – MIPSfpga also provides a platform for exploring architectural features and enhancements in research and advanced projects.

Here are links to some advanced projects that have already been done based on MIPSfpga: *** (multicore, etc).

MIPS has always been a popular core for teaching computer architecture because of its simplicity and elegance. MIPSfpga now provides a strong platform for thoroughly understanding computer architecture by linking a theoretical foundation in computer architecture and system design with hands-on learning and practice.

Join us at FPL17 (the 27th International Conference on Field-Programmable Logic and Applications) in Ghent, Belgium where Imagination is offering a full day workshop on MIPSfpga on 7 September 2017. Click here to sign up.


This post is by Dr. Sarah Harris.

Dr. Harris co-wrote the popular book, ‘Digital Design and Computer Architecture’, now in its second edition, and developed the teaching materials for the MIPS Academic Community (MAC) MIPSfpga teaching programme. She is an associate professor at the University of Nevada, Las Vegas. She completed her B.S. at B.Y.U. and her M.S. and PhD at Stanford University. She has worked at Hewlett Packard, Nvidia, and various other places. She worked at Harvey Mudd College as an assistant and then associate professor from 2004-2014 and joined UNLV in 2014. She also spent a year as a visiting professor at the Technische University of Darmstadt in Germany. Her research interests include embedded systems, biomedical engineering, and robotics. Outside of work, she enjoys playing music and spending time with her kids.