All Projects → mrisc32 → mrisc32-a1

mrisc32 / mrisc32-a1

Licence: other
A pipelined, in-order, scalar VHDL implementation of the MRISC32 ISA

Programming Languages

VHDL
269 projects
Makefile
30231 projects

Projects that are alternatives of or similar to mrisc32-a1

mrisc32
MRSIC32 ISA documentation and development
Stars: ✭ 87 (+314.29%)
Mutual labels:  cpu, risc, mrisc32
QNICE-FPGA
QNICE-FPGA is a 16-bit computer system for recreational programming built as a fully-fledged System-on-a-Chip in portable VHDL.
Stars: ✭ 51 (+142.86%)
Mutual labels:  cpu, vhdl, soft-core
Riscv vhdl
Portable RISC-V System-on-Chip implementation: RTL, debugger and simulators
Stars: ✭ 356 (+1595.24%)
Mutual labels:  cpu, vhdl
Ustc Tmips
Stars: ✭ 6 (-71.43%)
Mutual labels:  cpu, vhdl
Lxp32 Cpu
A lightweight, open source and FPGA-friendly 32-bit CPU core based on an original instruction set
Stars: ✭ 27 (+28.57%)
Mutual labels:  cpu, vhdl
Vexriscv
A FPGA friendly 32 bit RISC-V CPU implementation
Stars: ✭ 1,041 (+4857.14%)
Mutual labels:  cpu, vhdl
J1sc
A reimplementation of a tiny stack CPU
Stars: ✭ 64 (+204.76%)
Mutual labels:  cpu, vhdl
Forth Cpu
A Forth CPU and System on a Chip, based on the J1, written in VHDL
Stars: ✭ 244 (+1061.9%)
Mutual labels:  cpu, vhdl
Neorv32
A small and customizable full-scale 32-bit RISC-V soft-core CPU and SoC written in platform-independent VHDL.
Stars: ✭ 106 (+404.76%)
Mutual labels:  cpu, vhdl
FPGACosmacELF
A re-creation of a Cosmac ELF computer, Coded in SpinalHDL
Stars: ✭ 31 (+47.62%)
Mutual labels:  cpu, risc
BenEaterVHDL
VHDL project to run a simple 8-bit computer very similar to the one built by Ben Eater (see https://eater.net)
Stars: ✭ 30 (+42.86%)
Mutual labels:  cpu, vhdl
Plotty
C language compiler from scratch for a custom architecture, with virtual machine and all
Stars: ✭ 33 (+57.14%)
Mutual labels:  risc
vim-hdl
Vim plugin to aid VHDL development (for LSP, see https://github.com/suoto/hdl_checker)
Stars: ✭ 59 (+180.95%)
Mutual labels:  vhdl
cpuwhat
Nim utilities for advanced CPU operations: CPU identification, ISA extension detection, bindings to assorted intrinsics
Stars: ✭ 25 (+19.05%)
Mutual labels:  cpu
WebRISC-V
WebRISC-V: A Web-Based Education-Oriented RISC-V Pipeline Simulation Environment [PHP]
Stars: ✭ 74 (+252.38%)
Mutual labels:  risc
mhrd-solutions
My solutions to the NAND-to-CPU game MHRD
Stars: ✭ 38 (+80.95%)
Mutual labels:  cpu
ModernOperatingSystems AndrewTanenbaum
My notes after reading 'Modern Operating Systems' book by Andrew Tanenbaum and Herbert Bos.
Stars: ✭ 71 (+238.1%)
Mutual labels:  cpu
l1vm
L1VM - a tiny virtual machine with a 64 bit core
Stars: ✭ 112 (+433.33%)
Mutual labels:  cpu
mir-cpuid
BetterC CPU Identification Routines
Stars: ✭ 25 (+19.05%)
Mutual labels:  cpu
taskbar-monitor
monitoring tool with graphs (CPU, memory, disk and network) for Windows taskbar.
Stars: ✭ 121 (+476.19%)
Mutual labels:  cpu

MRISC32-A1

This is a VHDL implementation of a single issue, in-order CPU that implements the MRISC32 ISA. The working name for the CPU is MRISC32-A1.

Overview

MRISC32-A1 pipleine

Progress

The CPU is nearing completion but still under development. The following components have been implemented:

  • A 9-stage pipeline.
    • PC and branching logic.
    • Instruction fetch.
    • Decode.
    • Register fetch.
    • Execute.
    • Data read/write logic (scalar and vector).
    • Register write-back.
    • Operand forwarding.
  • The integer ALU.
    • Supports all packed and unpacked integer ALU operations.
    • All ALU operations finish in one cycle.
  • A pipelined (three-cycle) integer multiply unit.
    • Supports all packed and unpacked integer multiplication operations.
  • A semi-pipelined integer and floating point division unit.
    • The integer division pipeline is 3 stages long, while the floating point division pipeline is 4 stages long.
    • 32-bit division: 15/12 cycles stall (integer/float).
    • 2 x 16-bit division: 7/5 cycles stall (integer/float).
    • 4 x 8-bit division: 3/2 cycles stall (integer/float).
  • A pipelined (two-cycle) Saturating Arithmetic Unit (SAU).
    • Supports all packed and unpacked saturating and halving arithmetic instructions.
  • An IEEE 754 compliant(ish) FPU.
    • The following single-cycle FPU instructions are implemented:
      • FMIN, FMAX
      • FSEQ, FSNE, FSLT, FSLE, FSUNORD, FSORD
    • The following three-cycle FPU instructions are implemented:
      • ITOF, UTOF, FTOI, FTOU, FTOIR, FTOUR
    • The following four-cycle FPU instructions are implemented:
      • FADD, FSUB, FMUL
    • Both packed and unpacked FPU operations are implemented.
  • The scalar register file.
    • There are three read ports and one write port.
  • The vector register file.
    • There are two read ports and one write port.
    • Each vector register has 16 elements (configurable).
  • An address generation unit (AGU).
    • The AGU supports all addressing modes.
  • A single 32-bit Wishbone (B4 pipelined) interface to the memory.
    • Instruction and data requests are arbitrated (data has precedence).
    • One memory request can be completed every cycle.
  • Branch prediction and correction.
    • A simple 1-bit dynamic branch predictor.
    • The branch misprediction penalty is 3 cycles (a correctly predicted branch incurs no penalty).

TODO: Caches, interrupt logic.

Configurability

The aim is for the MRISC32-A1 to implement the complete MRISC32 ISA, which means that it is a fairly large design (including an FPU, hardware multiplication and division, packed operations, etc).

If the design is too large or complex for a certain target chip (FPGA), it is possible to disable many features via T_CORE_CONFIG (see config.vhd). E.g. setting HAS_MUL to false will disable support for hardware multiplication.

It is also possible to change the vector register size by chaging the value of C_LOG2_VEC_REG_ELEMENTS (4 means 16 elements, 5 means 32 elements, 8 means 256 elements, and so on).

Performance

The MRISC32-A1 can issue one operation per clock cycle.

When synthesized against an Intel Cyclone V FPGA, the maximum running frequency is close to 100 MHz.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].