ZipCPU
Zip CPU 是一种体积小、重量轻的 RISC CPU,具体设计目标包括:
-
32 位。所有寄存器、地址和指令的长度都是 32 位。虽然字节大小本身曾经是 32 位,但 CPU 现在像所有其他 CPU 一样处理 8 位字节 -
一个RISC CPU。每条指令名义上在一个周期内完成,但乘法、除法、内存访问和(最终)浮点指令除外。 -
加载/存储架构。只有加载和存储指令可以访问内存。 -
符合叉骨要求。所有内存和外围设备都通过单个叉骨总线访问。 -
冯诺依曼架构,意味着指令和数据共享一个公共总线。 -
流水线架构,具有预取、解码、读取操作数阶段、包含 ALU、内存、除法和浮点单元的组合阶段,然后是最终回写阶段。 -
两种模式的机器:主管和用户,每种模式具有不同的访问级别。 -
完全开源,在 GPL 下获得许可。
优点就是文档详细,代码质量很高,作者还配了个操作系统ZipOS,从作者博客看,很多技术点都给出很详细的讲解和验证。
CPU仓库地址
https://github.com/ZipCPU/zipcpu
ZipOS仓库地址
https://github.com/ZipCPU/s6soc/tree/master/sw/zipos
picorv32
PicoRV32 是一个实现RISC-V RV32IMC 指令集的 CPU 内核。它可以配置为 RV32E、RV32I、RV32IC、RV32IM 或 RV32IMC 内核,并可选择包含内置中断控制器。
-
小型(7 系列 Xilinx 架构中的 750-2000 个 LUT) -
高 f最大值(7 系列 Xilinx FPGA 上为 250-450 MHz) -
可选的本机存储器接口或 AXI4-Lite 主控 -
可选的 IRQ 支持(使用简单的自定义 ISA) -
可选协处理器接口
该 CPU 旨在用作 FPGA 设计和 ASIC 中的辅助处理器。由于其 f max高,它可以集成到大多数现有设计中,而无需跨越时钟域。当以较低频率运行时,它会有很多时序裕量,因此可以添加到设计中而不会影响时序收敛。
对于更小的尺寸,可以禁用对寄存器x16..x31以及RDCYCLE[H]、RDTIME[H]和RDINSTRET[H]指令的支持,将处理器变成 RV32E 内核。
此外,还可以在双端口和单端口寄存器文件实现之间进行选择。前者提供更好的性能,而后者导致更小的核心。
模块 | 描述 |
---|---|
picorv32 | PicoRV32 CPU |
picorv32_axi | 带 AXI4-Lite 接口的 CPU 版本 |
picorv32_axi_adapter | 从 PicoRV32 内存接口到 AXI4-Lite 的适配器 |
picorv32_wb | 带有 Wishbone Master 接口的 CPU 版本 |
picorv32_pcpi_mul | 实现`MUL[H[SU |
picorv32_pcpi_fast_mul | picorv32_pcpi_fast_mul使用单周期乘法器的一个版本 |
picorv32_pcpi_div | 实现DIV[U]/REM[U]指令的 PCPI 内核 |
仓库地址
https://github.com/YosysHQ/picorv32
DarkRISCV
DarkRISCV软核是在 2018 年 8 月 19 日的一个神奇之夜凌晨 2 点到 8 点之间开发的, 最初是作为开源 RISC-V 指令集的概念证明。
尽管与其他 RISC-V 实现相比,代码小而粗糙,但DarkRISCV具有许多令人印象深刻的特性:
-
实现了大部分 RISC-V RV32E 指令集 -
实现了大部分 RISC-V RV32I 指令集(缺少 csr、e 和 fence*) -
在超大规模 ku040 中工作频率高达 250MHz(400MHz w/ 超频!) -
在便宜的 spartan-6 中高达 100MHz,适合小型 spartan-3E,例如 XC3S100E! -
大部分时间可以维持每条指令 1 个时钟(通常是 71% 的时间) -
灵活的哈佛架构(易于集成缓存控制器、总线桥等) -
在真正的 xilinx(spartan-3、spartan-6、spartan-7、artix-7、kintex-7 和 kintex ultrascale)中运行良好 -
与一些真正的 altera 和 lattice FPGA 一起工作得很好 -
适用于 RISC-V 的 gcc 9.0.0(无需补丁!) -
使用 850-1500LUTs(仅核心采用 LUT6 技术,取决于启用的功能和优化) -
可选的 RV32E 支持(与 LUT4 FPGA 配合使用效果更好) -
可选 16×16 位 MAC 指令(用于数字信号处理) -
可选粗粒度多线程 (MT) -
管道阶段之间没有互锁! -
BSD许可证:可以在任何地方使用,没有任何限制!
重要的是,还在不停更新,文档支持也很好
仓库地址
https://github.com/darklife/darkriscv
玄铁C910
当初开源的时候属于一个热点,除了C910还有C906以及C902,大厂代码值得信赖,网上中文资料相比较其他同类开源项目更多。
https://github.com/T-head-Semi/openc910
https://github.com/T-head-Semi
wujing100_open
平头哥早些年开源的项目
https://github.com/T-head-Semi/wujian100_open
MSP430
这个处理器之前发过,文档写的很详细,MSP430应该是很多人熟悉的单片机了,可以看看。
https://opencores.org/projects/openmsp430
总结:
关于处理器,开源的有非常多,Github和OpenCores上有很多类型,AVR,C51,RISC-V,MIPS等等,推荐的几个处理器只是少部分。以上最推荐的两个项目,ZipCPU和平头哥的处理器,ZipCPU文档很详细,作者在技术上有深究,能学到不少,平头哥大公司值得信赖,重要的是中文资料多,很多博主都在出相关的教程。
没有回复内容