RISC-V FPGA 设计中, RISC-V 的核心框架模块组成。
相关参考文章:
RISC-V 教学教案
RISC-V 中cpu 核心设计框架组成结构:
其中:
fii_cpu_sys.v : 工程顶层模块
fii_iobuf.v : GPIO 端口 逻辑 模块
SYS_DCM: PLL 时钟模块 IP
fii_riscv_cpu.v: RISC -V cpu 模块顶层
fii_rv32i_core.v : 状态机逻辑模块(RISC -V)运行模块
TDP_RAM_INSTR:程序存储单元(ITCM)
rv32I_exu.v: RISC -V cpu 内核模块
regfile_l.v: 32个通用寄存器模块
instr_dec.v: 指令译码模块
exu_alu.v: 执行模块
exu_LSU.v: Load/Store 模块
fii_UART.v:UART 模块
fii_timer_lsu.v: Timer 模块
fii_GPIO.v: GPIO 模块
exu_BRANCH.v:分支处理模块
exu_csr.v: CSR 寄存器模块

在vivado 工程文件中:

risc-v 的核心模块组成:
regile_l :32个通用寄存器
instr_dec :指令译码模块
exu_alu : 执行模块
exu_LSU :load/store 外设访存模块
exu_branch:条件分支模块
exu_CSR:CSR 寄存器模块
CPU 架构分类:
冯诺依曼架构:也称做普林斯顿架构。 其结构特点时数据存储器和程序存储器按照统一的地址编址,如32为的地址总线,可寻址4G 的地址空间。程序存储器,数据存储器以及外设等每部分占有4G空间的一个部分,彼此之间互不重叠。

哈佛架构:哈弗结构不同于冯.诺依曼结构将访问空间线性划分,而是将数据存储器与程序存储器划分为两个独立的寻址空间,自己维护自己的地址空间,最典型的结构莫过于Intel最早推出的8051,16位的地址总线可访问64k空间,但是数据和程序在控制器的协助下,实现数据访问与程序访问的分离,因此访问空间扩大了一倍

冯.诺依曼结构与哈弗结构的优缺点:
冯.诺依曼结构:
优点:整个访问空间是线性的,整个空间采用统一编码,使用同一个程序计数器PC,因此对控制器的要求比较低,硬件资源(RTL)开销小于哈弗结构。
缺点:无法扩展空间范围,同时由于使用统一的空间编码,在遇到资源冲突时必须等待冲突解决才能继续程序的运行,因此效率较低。
哈弗结构:
优点:由于数据空间与程序空间分离,一次整个访问空间几乎扩大一倍,不存在程序空间的访问与数据空间访问的冲突
缺点:控制器复杂,需要两套PC计数器,硬件开销大
现在的cpu 设计中, 已经不是像早期的cpu 设计那样泾渭分明了, 可能一个cpu 即支持 普林斯顿架构,同时支持哈佛架构。 根据程序,数据的不同, cpu 可以从不同的区域将数据读出,或者写入。
FII-RISC-V 架构:
目前fii-riscv v2.01 版本,即支持普林斯顿架构, 同时也支持哈佛架构。当然,哈佛架构在执行效率上还是比较高的,绝大部分应用使用的时哈佛架构。但为展示普林斯顿架构的结构,同时在之后的版本会支持JTAG 模块, jtag 模块使用的也是普林斯顿架构,这种方式。
