FPGA/IC优质开源项目(五)CPU-FPGA常见问题社区-FPGA CPLD-ChipDebug

FPGA/IC优质开源项目(五)CPU

 

本期开源项目主要为一些处理器,里面有相当的项目代码值得参考。

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文档很详细,作者在技术上有深究,能学到不少,平头哥大公司值得信赖,重要的是中文资料多,很多博主都在出相关的教程。

 

请登录后发表评论

    没有回复内容