xuos-web/docs/doc/processor/riscv_sfcore.md

7.5 KiB
Raw Blame History

RISC-V 软核

简介

CORE是一个数字系统的核心负责整个系统的内存调度中断管理算术逻辑运算等如同整个系统的大脑是由物理电气实现逻辑功能的关键。尽管复杂但不可忽略的是核同其他数字器件一样也是一个典型的逻辑器件由逻辑门、触发器构成因此可以由硬件描述语言Hardware Description LanguageHDL来描述。既然核可以由HDL来描述那么对于每一个特定功能和性能即逻辑的时序和功能特定的核而言必有一组HDL描述等价于它而具体的器件信号、封装等只不过是这组HDL依赖具体工艺的一种物理实现。因此我们应该认识到所谓核本质上是一种知识产权是一种特定的可描述的逻辑结构应用于FPGA设备中。当前的FPGA设计规模巨大而且功能复杂因此设计的每一个部分都从头开始是不切实际的。一种解决的办法是对于较为通用的部分可以重用现有的功能模块而把主要的时间和资源用在设计中的那些全新的、独特的部分。我们将这种功能模块称作IP核Intelligent Property

IP核的提供方式通常分为软核、固核和硬核这3类。软核(Soft IP Core)在 EDA 设计领域指的是综合之前的寄存器传输级(RTL) 模型通常是指以HDL代码VerilogVHDL…为形式的可综合源代码固核(Firm IP Core)在 EDA 设计领域指的是带有平面规划信息的网表;硬核 (Hard IP Core)在 EDA 设计领域指经过验证的设计版图。软核只具备功能仿真功能,需要经过综合以及布局布线才能使用,其优点是灵活性高、可移植性强,允许用户自配置。

软核是 IP 核应用最广泛的形式,使用 FPGA 的通用逻辑资源LUT+FF)搭建而成的。其中软核处于RTL层级以可综合的HDLVerilogVHDL源代码的方式存在。在前期调研过程中本项目将开源的 riscv 软核 Rocket 烧录到 Nexys A7-100T 开发板上,并在其上运行裁剪过 Linux 操作系统。后期XiUOS 也计划移植到 Nexys A7-100T 开发板上,软核仍采用开源的 Rocket。

一些常见软核

开源RISCV软核

  1. RocketUC Berkeley 发起 RISC-V 项目的团队所设计的兼容 RISC-V 指令集的CPU核。为了设计一个新的指令集UC Berkeley开发的一门“硬件构建语言”-Chisel。从功能上的角度来看Chisel 可以将用户描述的硬件(写的代码)转化为等价的可综合的 Verilog HDL 代码或时等价的 C++ 仿真模型。

  2. PULPino PULPino 是一个开源的微型控制系统基于一个32位RISC-V核心由瑞士苏黎世联邦理工学院开发。核心IPC接近1完全支持基整数指令集(RV32I),压缩指令(RV32C)和部分支持乘法指令集扩展(RV32M)。

  3. Shakti印度理工学院的一个项目由 Verilog 编写其中使用了大量第三方IP根据需要分成了不同的类。该计划不仅构建开源生产级处理器还包括互连结构验证工具存储控制器外围IP和SOC工具等相关组件。

  4. 蜂鸟,国内最早比较成熟的 RISC-V 实现由胡振波现在芯来创始人开发使用Verilog设计其开源CPU为E200使用2级流水线。

  5. tinyriscv国内开发者在GitHub上开源的一个微 RISC-V 处理器核用verilog语言编写以最简单、最通俗易懂的方式实现RISC-V指令的功能没有对代码做任何的优化。

商业非开源软核

  1. MicroBlazeRISC 微处理器, Xilinx 嵌入式产品系列的重要组件。MicroBlaze 是功能齐全的、更少指令集的 FPGA 优化型 32 位计算机 (RISC) 软处理器可充分满足各种应用需求。作为一款高度可配置的易用型处理器MicroBlaze 可在 FPGA 以及全可编程 (AP) SoC 产品系列中使用。它免费配套提供 Vivado 设计与系统版以及 Vivado Webpack 版。

  2. Nios II系列RSIC微理器Altera 推出的32位RISC嵌入式处理器 。Nios II是应用于Intel FPGA的嵌入式软核处理器它是Qsys嵌入式系统的核心部件具 有较强的性能和可定制特性。一片FPGA内部可以构建多个 Nios II 处理器它们可以作为主CPU也可以是协处理器在同一芯片内部协调有序地完成整个复杂系统的各项功能。Nios II处理器内核是32位RISC架构精简指令集架构处理器它包含了大多数现代32位处理器中常见的基本架构元素。

Nexys A7-100T设备参数

Nexys A7-100T 是 Digilent 多孔 RAM-based Nexys 开发板的简易替代品。搭载Xilinx®Artix™-7 FPGA芯片Nexys 4 DDR 是一个打开即用型的数字电路开发平台帮助使用者能够在课堂环境下实现诸多工业领域的应用配有高容量的大型FPGA芯片Xilinx产品编号XC7A100T-1CSG324C并集成了USB以太网和其它端口。Nexys 4 DDR开发板能实现从理论型组合电路到强大的嵌入式处理器的多种设计。


Nexys A7
序号 描述 序号 描述
1 选择供电跳线 13 CPU复位按键用于软核
2 UART/JTAG共用USB接口 14 FPGA 配置复位按键
3 外部配置跳线柱SD/USB 15 模拟信号Pmod端口XADC
4 Pmod端口 16 编程模式跳线柱
5 扩音器 17 音频连接口
6 电源测试点 18 VGA连接口
7 16个LED 19 FPGA编程完成LED
8 16个按键开关 20 以太网连接口
9 8位7段数码管 21 USB连接口
10 可选用与外部接线的JTAG端口 22 工业用PIC24编程端口
11 5个按键开关 23 电源开关
12 板载温度传感器 24 电源接口

验证FPGA 移植linux

通过 lowRISC 开源项目,基于 rocket 修改的软核上运行完整的 linux。支持键盘、显示器、网卡等常见通用设备验证了riscv软核运行linux操作系统的可行性为XiUOS进一步支持riscv软核提供了试验基础。

  • 生成riscv软核比特流
  • 裁剪编译 linux
  • 生成伯克利 bootloader(bbl)
  • 将软核写入 flash
  • 将 bbl 和 linux 写入 microSD卡
  • JP1 位于 USB / SD 位置JP2 位于 USB 位置,电源选择 JP3位usb底部的开关打开DIP-SW 1引导linux从sd卡启动

在Nexys A7-100T上基于riscv软核运行Linux
Debian GUN/Linux buster/sid lowrisc tty1
lowrisc login: xiuos
Password:
Last login:Thu Jan 1 01:09:48 BST 1970 on tty1
Linux lowrisc 4.18.0-gc81ff0d #48 Thu Oct 18 16:00:24 BST 2018 riscv64

The programs included with the Debian GUN/linux system are free software;
the exact distribution terms for each program are described in the 
individual files in /usr/share/doc/*/copyright.

Debian GUN/linux comes with ABSOLUTELY NO WARRANT, to the extent
permitted by applicable law.
xiuos@lowrisc:~$ cat /proc/cpuinfo
hart   : 0
isa    : rv64imafdc
mmu    : sv39
uarch  : sifive,rocket0

xiuos@lowrisc:~$ uname -a
Linux lowrisc 4.18.0-gc81ff0d #48 Thu Oct 18 16:00:24 BST 2018 riscv64 GUN/linux
xiuos@lowrisc:~$