一个用 Verilog 编写的 32 位 RISC-V 内核和一个支持 RV32IM 的指令集模拟器。
该内核已针对协同仿真模型进行了测试,并在 FPGA 上进行了测试。
对于具有分支预测的更高性能的双发 CPU,请在此处查看我最新的 RISC-V 内核; http://github.com/ultraembedded/biriscv
概述
特征
- 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 | 引导向量。 |
执行示例
没有回复内容