🖥️ A small, customizable and extensible MCU-class 32-bit RISC-V soft-core CPU and microcontroller-like SoC written in platform-independent VHDL.
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 15 天前 | ||
| 7 天前 | ||
| 7 天前 | ||
| 8 天前 | ||
| 7 天前 | ||
| 7 个月前 | ||
| 4 个月前 | ||
| 7 天前 | ||
| 9 个月前 | ||
| 7 个月前 | ||
| 8 个月前 | ||
| 1 个月前 |
NEORV32 RISC-V 处理器
NEORV32 处理器是一款以 NEORV32 RISC-V CPU 为核心的可定制类微控制器片上系统(SoC),使用平台无关的 VHDL 编写。该处理器可作为大型 SoC 设计中的辅助控制器,也可作为小型且可定制的微控制器。项目旨在开箱即用,既面向数字设计 / RISC-V 初学者,也面向有经验的用户。

主要特性
- ♻️ 想要 全 Verilog 版本?查看自动转换配置。
- 🔍 使用持续集成检查回归问题。
- ✔️ 通过官方 RISC-V 架构认证测试。
- 📂 提供面向不同 FPGA 开发板和工具链的示例配置及 社区项目,便于快速上手。
- 📦 完整处理器也可作为 Vivado IP 块 提供。
- 🪁 上游 Zephyr 和 FreeRTOS 操作系统支持。
- 🐧 支持运行 nommu-Linux。
- 🏗️ 集成 LiteX SoC 构建器。
- ⚙️ MicroPython 移植、Ada 支持,以及通过 Embassy 框架实现的 Rust 集成。
- 🖥️ 预配置的 Eclipse 项目。
- 🏷️ 项目更新日志可在 CHANGELOG.md 中查看。
- 🚀 查看下方快速链接和 用户指南以开始使用。
- 📚 详细信息请参阅在线文档。
项目状态
| 任务 | CI 状态 |
|---|---|
| GitHub pages | |
| 文档 | |
| 处理器检查 | |
| Verilog 转换 | |
| RISC-V 合规性 |
该处理器已通过官方 RISC-V 架构认证测试(ACT)。 它能够成功运行包括 CoreMark 和 FreeRTOS 在内的任意软件,并可综合至任意目标工艺——已在 AMD、Intel、Lattice、Microchip、Gowin 和 Cologne Chip 的 FPGA 上测试。该处理器也已多次以 ASIC 形式流片。
特性
NEORV32 处理器提供一款功能完整的类微控制器 SoC,以 NEORV32 CPU 为核心构建。 通过使用通用参数,设计高度可配置,并支持灵活定制,以便 根据你的需求调整系统配置。请注意,以下所有 SoC 模块均为完全 可选 的。
CPU 核心
- RISC-V 32 位小端流水线/多周期改良型哈佛架构
- 单核或 SMP 双核配置
- 可配置的指令集及扩展:
RV32IEMACBUXSdextSdtrigSmcntrpmfSmpmpZaamoZalrscZbaZbbZbcZbkbZbkcZbkxZbsZcbZcmopZfinxZibiZicntrZicondZicsrZifenceiZihpmZimopZmmulZknZkndZkneZknhZktZksZksedZkshXcfu - 符合 RISC-V “非特权 ISA 规范”和“特权架构规范”的子集
machine以及可选的user特权模式- 实现所有 RISC-V 机器级异常与中断,并作为 NEORV32 专有扩展提供 16 个快速中断请求通道
- 自定义功能单元(CFU 作为自定义
XcfuISA 扩展) 用于自定义 RISC-V 指令
存储器
- 紧耦合数据存储器与指令存储器(DMEM 与 IMEM)以及 缓存(iCACHE 与 dCACHE)
- 串行存储器控制器(SMC),用于透明访问 最多 2 颗 PSRAM/闪存芯片(支持 XIP)
- 预装引导加载程序(BOOTLDROM),带串行用户界面; 支持通过 UART、I²C 或 SPI 闪存启动应用代码,并可从 SD 卡启动
定时器与计数器
输入 / 输出
- 标准串行接口:2 路 UART, SPI(SPI 主机), SDI(SPI 设备), TWI(I²C 主机), TWD(I²C 设备), ONEWIRE(1-wire 主机)
- 最多 32 个通用 IO(GPIO,支持中断) 以及最多 32 路独立 PWM 通道
- 智能 LED 接口(NEOLED),用于直接控制 NeoPixel(TM) 灯珠
SoC 互连
高级功能
- 真随机数发生器(TRNG),基于 neoTRNG
- 自定义功能子系统(CFS) 用于自定义紧耦合协处理器、加速器或接口
- 直接存储器访问控制器(DMA),用于独立于 CPU 的 数据传输与转换
- 兼容 RVFI 的跟踪端口 用于高级调试、性能剖析或验证
调试
- 片上调试器(OCD),可通过标准 JTAG 接口访问
- 兼容“RISC-V 调试规范第 1.0 版”
- 兼容 OpenOCD、GDB 和 Segger Embedded Studio
- RISC-V 触发模块,用于硬件辅助断点和观察点
- 可选 JTAG 认证模块,用于实现自定义安全机制
- 执行跟踪缓冲器(TRACER)
尺寸与性能
NEORV32 处理器专为极小尺寸而优化。然而,实际尺寸(硅面积或 FPGA 资源)取决于具体配置。例如,一个基于 rv32imc_Zicsr_Zicntr CPU 配置并支持 RTOS 的设置大约需要 2300 个 LUT 和 1000 个 FF,并可运行至最高 130 MHz(Altera Cyclone IV E EP4CE22F17C6 FPGA 上的实现结果)。该配置的 CoreMark 得分为 95(0.95 CoreMarks/MHz)。相应的双核版本 CoreMark 得分为 190(1.9 CoreMarks/MHz)。
有关 CPU 性能的更多信息,请参见 数据手册:性能。
快速上手
本概览提供了若干快速链接,指向 在线数据手册 和 在线用户指南 中的重要章节。
🔍 NEORV32 项目 - 简介
- 主要特性 - 它的独特之处
- 结构 - 文件夹、RTL 文件和编译顺序
- HDL 文件列表文件 - 用于简化 HDL 设置
- 指标 - FPGA 实现与性能评估
🖥️ NEORV32 处理器 - SoC
- 顶层实体 - 信号 - 如何连接处理器
- 顶层实体 - 泛型 - 处理器/CPU 配置选项
- 地址空间 - 内存布局与地址映射
- 启动配置 - 如何让处理器开始执行
- SoC 模块 - IO/外设模块与存储器
- 片上调试器 - 通过 JTAG 进行系统内调试
🧮 NEORV32 CPU - 核心
💾 软件框架 - 软件生态系统
- 示例程序 - 处理器 IO/外设模块的使用示例
- 核心库 - 用于访问处理器外设的高层函数
- 软件框架文档 - 基于 doxygen
- 应用 Makefile - 将 你的 应用转换为可执行文件
- Bootloader - 内置 NEORV32 引导加载程序
- 镜像生成器 - 从你的应用生成(FPGA)内存初始化文件
- Semihosting - 访问主机上的文件和系统服务
🚀 用户指南 - 快速上手
- 工具链配置 - 安装并配置 RISC-V GCC 工具链
- 通用硬件搭建 - 搭建新的 NEORV32 项目
- 添加自定义硬件模块 - 添加 你的 自定义硬件
- 打包为 Vivado IP 模块 - 将整个处理器转换为交互式 AMD Vivado IP 模块
- 使用 Eclipse - 使用 Eclipse IDE 进行开发和调试
这是一个免费开源项目,基于宽松的许可证提供。 更多详情请参阅法律声明部分。
参与贡献
非常欢迎贡献!如果您想改进某些内容、修复缺陷或新增功能, 请随时提交 issue 或发起 pull request。查看如何参与贡献。 向帮助改进本项目的社区以及所有贡献者致以诚挚的感谢: