Skip to content
MIPSfpga+ allows loading programs via UART and has a switchable clock
Branch: master
Clone or download
Pull request Compare This branch is 63 commits behind MIPSfpga:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

MIPSfpga+ / mipsfpga-plus / MFP is a cleaned-up and improved variant of MIPSfpga-based system defined in MIPSfpga Getting Started package (MFGS). The new features include:

  1. The ability to load a software program using ubiquitous $5 FTDI-based USB-to-UART connector instead of $50 Bus Blaster that is difficult to get in some places of the globe
  2. The ability to change the clock frequency on the fly from 50 or 25 MHz down to 1 Hz (one cycle a second) to observe the work of CPU in real time, including cache misses and pipeline forwarding
  3. An example of integration of a light sensor with SPI protocol
  4. Smaller software initialization sequence that fits in 1 KB instead of 32 KB memory, which allows porting MIPSfpga to a wider selection of FPGA boards, without using external memory
  5. Miscellaneous fixes like improving AHB-Lite slave to handle narrow uncached writes of sizes 1 or 2-bytes
  6. Easy to use configurable SDRAM interface module
  7. Altera MAX10 ADC interface module support
  8. Widely used UART16550 interface module
  9. External interrupt controller that is working throw MIPS microAptiv core Interrupt Interface

The hierarchy of synthesizable modules for Digilent Nexys 4 DDR with Xilinx Artix-7 FPGA:

MIPSfpga+ currently works on these FPGA boards:

  1. Digilent Nexys 4 DDR board with Xilinx Artix-7 FPGA. See the Appendix A about how the board is connected with the applicable peripherals.
  2. Digilent Nexys 4 board with Xilinx Artix-7 FPGA (no DDR, soon to be discontinued).
  3. Digilent Basys 3 with Xilinx Artix-7.
  4. Terasic DE0-CV with Altera Cyclone V. See the Appendix B about how the board is connected with the applicable peripherals.
  5. Terasic DE2-115 with Altera Cyclone IV
  6. Terasic DE0-Nano board with Altera Cyclone IV FPGA.
  7. Terasic DE0 with Altera Cyclone III
  8. Terasic DE1 with Altera Cyclone II
  9. Terasic DE10-Lite with Altera MAX10
  10. Terasic DE10-Nano with Altera Cyclone V

There are three planned ports:

  1. Marsohod 3 board with Altera MAX10 FPGA
  2. Digilent Arty with Xilinx Artix-7. MIPSfpga+ is likely to work on this board with no modification except adding the board wrapper (top-level Verilog and pin constraints).
  3. Terasic DE2 with Altera Cyclone II

The source code for MIPSfpga+ is located at; this code does not include any source code of MIPS microAptiv UP CPU core from MIPSfpga Getting Started package. A user of MIPSfpga+ is supposed to download Getting Started package from Imagination Technologies web site: MIPSfpga Getting Started Guide 2.0 or MIPSfpga Getting Started Guide 1.3.

After downloading both MIPSfpga from Imagination site and MIPSfpga+ from GitHub, the user is expected to install MIPSfpga under 64-bit Microsoft Windows (either Windows 7 or Windows 8) by placing MIPSfpga core source files to MIPSfpga+\core directory. To do this one need to copy to MIPSfpga+\core all the files from 'MIPSfpga_GSG_1.3\MIPSfpga\rtl_up' when using MIPSfpga 1.3 or from 'MIPSfpga_GSG_v2.0\MIPSfpga_GSG\rtl_up\core' in the case of using MIPSfpga 2.0. The paths inside MIPSfpga+ synthesis and simulation scripts rely on such installation.

MIPSfpga+ (as well as the original MFGS package) can be also used on a workstation with 32-bit Windows, 32-bit Linux, 64-bit Linux, with or without Windows or Linux virtual machine. It is possible to install MIPSfpga+ in different directories, and use it with a number of Verilog simulators and synthesis tools: Synopsys VCS, Cadence IES, Mentor ModelSim, Icarus Verilog with GTKWave, Xilinx ISim and Vivado, Altera Quartus II, Synopsys Synplify Pro and others. Some usage scenarios require modifying the scripts and adhering to specific versions of EDA and software development tools, for example:

How to synthesize mipsfpga-plus for Terasic DE0-CV board:

  1. Unzip MIPSfpga 2.0 Getting Started Guide to C:\MIPSfpga
  2. Get mipsfpgfa-plus into C:\github\mipsfpga-plus
  3. copy all the files from C:\MIPSfpga\MIPSfpga_GSG\rtl_up\core to C:\github\mipsfpga-plus\core
  4. cd C:\github\mipsfpga-plus\boards\de0_cv
  5. make_project.bat
  6. Run Altera Quartus II
  7. Open project C:\github\mipsfpga-plus\boards\de0_cv\project\de0_cv.qpf
  8. Analyze/Synthesize/Place&Route/Assemble
  9. Open Device / Hardware Setup / ByteBlaster / Set file / ouput_files / de0_cv.sof / Start

How to load a software example into mipsfpga-plus using BusBlaster and OpenOCD:

cd C:\github\mipsfpga-plus\programs\00_counter

How to load a software example into mipsfpga-plus using USB-to-UART-based serial loader:

cd C:\github\mipsfpga-plus\programs\00_counter

Modify 10_upload_to_the_board_using_uart.bat.


Some details about scripts using: programs/

You can’t perform that action at this time.