Verilog implementation of a RISC-V core for FPGA. At the current state the core implements all of the basic RV32I instructions in a non-pipelined fashion.
The current core is already divided into the five major execution phases:
- (IF) Instruction Fetch
- (ID) Instruction Decoding
- (EX) Execute
- (MEM) Memory
- (WB) Write BACK
Each phase's implementation can be found inside the respective folder. This structure aims to for an easier switch to a pipelined core later down the line.
RV32I ISA Test Program
Testing Register-Register Ops... ############## PASSED
Testing Register-Immediate Ops... ########### PASSED
Testing load/store Operations... ##### PASSED
Testing Control Flow... ######## PASSED
Testing LUI/AUIPC Operations... ## PASSED-
- RV32I
-
- Zicsr
-
- Zifencei
-
- RV32IM
-
- RV32IMA
-
- RV32IMAF/D (RV64G)
-
- RV32IMADC (RV64GC)
The hardware target is an FPGA TangPrimer 20k, but developement is mainly focused towards working simulation at the moment.
- For FPGA building toolchain is based on the OSS-CAD-SUITE
- For simulation iverilog is used
-
https://github.com/sipeed/sipeed_wiki/tree/main/docs/hardware/en/tang/tang-primer-20k
-
https://vhdlwhiz.com/how-the-axi-style-ready-valid-handshake-works/
-
https://www.01signal.com/verilog-design/arithmetic/signed-wire-reg/
-
https://cva6.readthedocs.io/en/latest/01_cva6_user/RISCV_Instructions_RV32I.html
-
https://www.ustcpetergu.com/MyBlog/experience/2021/07/09/about-riscv-testing.html
-
https://riscv.github.io/riscv-isa-manual/snapshot/unprivileged/
-
https://riscv.github.io/riscv-isa-manual/snapshot/privileged/
-
https://electrobinary.blogspot.com/2020/06/control-and-status-registers-csr.html