一个用 Verilog 编写的 32 位 RISC-V 内核和一个支持 RV32IM 的指令集模拟器-FPGA开源项目论坛-FPGA CPLD-ChipDebug

一个用 Verilog 编写的 32 位 RISC-V 内核和一个支持 RV32IM 的指令集模拟器

一个用 Verilog 编写的 32 位 RISC-V 内核和一个支持 RV32IM 的指令集模拟器。
该内核已针对协同仿真模型进行了测试,并在 FPGA 上进行了测试。

对于具有分支预测的更高性能的双发 CPU,请在此处查看我最新的 RISC-V 内核; http://github.com/ultraembedded/biriscv

概述

703d5c1ef0203955

 

特征

  • 32 位 RISC-V ISA CPU 内核。
  • 支持 RISC-V 整数 (I)、乘除法 (M) 和 CSR 指令 (Z) 扩展 (RV32IMZicsr)。
  • 支持用户、主管和机器模式权限级别。
  • 基本 MMU 支持 – 能够使用原子 (RV-A) 软件仿真启动 Linux。
  • 实现基本 ISA 规范v2.1和特权 ISA 规范v1.11
  • 使用Google 的 RISCV-DV随机指令序列对C++ ISA 模型进行联合仿真验证。
  • 支持指令/数据缓存、AXI 总线接口或紧密耦合的存储器。
  • 可配置数量的管道阶段和结果转发选项。
  • 可合成的 Verilog 2001,Verilator 和 FPGA 友好。
  • 核心标记: 2.94 CoreMark/MHz
  • Dhrystone:1.25 DMIPS/MHz(“合法编译选项”/每次迭代 337 条指令)
  • 想要更高的性能(4.1CM/MHz / 1.9DMIPS/MHz)——看我改进的核心

配置

参数名称 有效范围 描述
支持_超级 1/0 启用主管/用户权限级别。
支持_MMU 1/0 启用基本内存管理单元。
SUPPORT_MULDIV 1/0 启用硬件乘法/除法 (RV-M)。
SUPPORT_LOAD_BYPASS 1/0 支持加载结果旁路路径。
SUPPORT_MUL_BYPASS 1/0 支持乘法结果旁路路径。
SUPPORT_REGFILE_XILINX 1/0 支持 Xilinx 优化的寄存器文件。
EXTRA_DECODE_STAGE 1/0 用于改进时序的额外解码管道阶段。
MEM_CACHE_ADDR_MIN 32’h0 – 32’hffffffff 最低可缓存内存地址。
MEM_CACHE_ADDR_MAX 32’h0 – 32’hffffffff 最高可缓存内存地址。

目录

姓名 内容
核心/riscv RISC-V 流水线 RV32IM CPU 内核 (Verilog)
isa_sim 指令集模拟器 (C)
top_tcm_axi/src_v 具有 64KB DP-RAM 和 AXI 接口的示例
top_tcm_axi/tb 核心的 System-C 测试平台
top_cache_axi/src_v 具有指令和数据缓存的示例实例。
top_cache_axi/tb 核心的 System-C 测试平台

示例核心实例(带有 TCM 内存)

顶部(top_tcm_axi/src_v/riscv_tcm_top.v)包含;

  • 实例化上述内核之一,添加 RAM 和标准总线接口。
  • 用于(I/D 代码和数据)的 64KB 双端口 RAM。
  • AXI4 从端口,用于加载 RAM、DMA 访问等(包括支持突发访问)。
  • AXI4-Lite 主端口,用于 CPU 访问外设。
  • 将 CPU 内核单独复位到双端口 RAM / AXI 接口(以允许在 CPU 复位取消断言之前加载程序代码)。

内存映射

范围 描述
0x0000_0000 – 0x0000_ffff 64KB TCM 内存
0x0000_2000 引导地址(可配置,参见 RISCV_BOOT_ADDRESS)
0x8000_0000 – 0xffff_ffff 外设地址空间(来自 AXI4-L 端口)

接口

姓名 描述
clk_i 时钟输入
rst_i 异步复位,高电平有效。重置内存/AXI 接口。
rst_cpu_i 异步复位,高电平有效。重置 CPU 内核(不包括 AXI/内存)。
axi_t_* AXI4 从接口,用于访问 64KB TCM 存储器。
axi_i_* AXI4-Lite 主接口,用于 CPU 访问外设。
intr_i 高电平有效中断输入(用于连接外部 int 控制器)。

试验台

提供了一个基本的基于 System-C / Verilator 的内核测试平台。

依赖关系;

  • 海合会
  • 制作
  • 自由
  • System-C(使用 SYSTEMC_HOME 指定路径)
  • Verilator(使用 VERILATOR_SRC 指定路径)

搭建测试平台;

cd top_tcm_axi/tb
make

运行提供的测试可执行文件;

cd top_tcm_axi/tb
make run

示例核心实例(带缓存)

顶部(top_cache_axi/src_v/riscv_top.v)包含;

  • 实例化上述内核之一,添加 RAM 和标准总线接口。
  • 16KB 2路组关联指令缓存
  • 16KB 2-way set associative data cache with write-back and allocate on write。
  • 2 个 AXI4 主端口,用于 CPU 访问指令/数据/外围设备。

接口

姓名 描述
clk_i 时钟输入
rst_i 异步复位,高电平有效。重置内存/AXI 接口。
axi_i_* AXI4 主接口,用于 CPU 访问指令存储器。
axi_d_* AXI4 主接口,用于 CPU 访问数据/外围存储器。
intr_i 高电平有效中断输入(用于连接外部 int 控制器)。
reset_vector_i 引导向量。

执行示例

5eac981530204010

 

请登录后发表评论

    没有回复内容