modify processor/riscv-sfcore.md

This commit is contained in:
Yan_yan 2020-11-19 17:29:08 +08:00
parent b68f7e40ab
commit 5bebbd9397
1 changed files with 44 additions and 35 deletions

View File

@ -1,43 +1,37 @@
# RISC-V 软核
## 简介
 CORE是一个数字系统的核心负责整个系统的内存调度中断管理算术逻辑运算等如同整个系统的大脑是物理电气实现逻辑功能的关键。尽管复杂但不可忽略的是核同其他数字器件一样也是一个典型的逻辑器件由逻辑门、触发器构成那么也就可以由硬件描述语言Hardware Description LanguagHDL来描述。既然核可以由HDL来描述那么对于每一个特定功能和性能即逻辑的时序和功能特定的核而言必有一组HDL描述等价于它而具体的器件信号、封装等只不过是这组HDL依赖具体工艺的一种物理实现。因此我们应该认识到所谓核本质上是一种知识产权是一种特定的可描述的逻辑结构应用于FPGA设备中。现在的FPGA设计规模巨大而且功能复杂,因此设计的每一个部分都从头开始是不切实际的。一种解决的办法是:对于较为通用的部分可以重用现有的功能模块,而把主要的时间和资源用在设计中的那些全新的、独特的部分。这种功能模块我们称作IP核(Intelligent Property)
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)搭建而成的。
IP核的提供方式通常分为软核、固核和硬核这3类。软核(Soft IP Core)在 EDA 设计领域指的是综合之前的寄存器传输级(RTL) 模型通常是指以HDL代码VerilogVHDL…为形式的可综合源代码固核(Firm IP Core)在 EDA 设计领域指的是带有平面规划信息的网表;硬核 (Hard IP Core)在 EDA 设计领域指经过验证的设计版图。软核只具备功能仿真功能,需要经过综合以及布局布线才能使用,其优点是灵活性高、可移植性强,允许用户自配置。
我们尝试了将一个基于Rocket的开源riscv软核处理器烧录到Nexys A7-100T 并运行裁剪过的linux操作系统进而验证了XiUOS运行在riscv软核的可行性
软核是 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++仿真模型。
1. RocketUC Berkeley 发起 RISC-V 项目的团队所设计的兼容 RISC-V 指令集的CPU核。为了设计一个新的指令集UC Berkeley开发的一门“硬件构建语言”-Chisel。从功能上的角度来看Chisel 可以将用户描述的硬件(写的代码)转化为等价的可综合的 Verilog HDL 代码或时等价的 C++ 仿真模型。
2. PULPinoPULPino是一个开源的微型控制系统,基于一个32位RISC-V核心由瑞士苏黎世联邦理工学院开发。核心IPC接近1完全支持基整数指令集(RV32I),压缩指令(RV32C)和部分支持乘法指令集扩展(RV32M)
2. PULPino PULPino 是一个开源的微型控制系统基于一个32位RISC-V核心由瑞士苏黎世联邦理工学院开发。核心IPC接近1完全支持基整数指令集(RV32I),压缩指令(RV32C)和部分支持乘法指令集扩展(RV32M)
3. Shakti印度理工学院的一个项目由Verilog编写其使用了大量第三方IP,根据需要分成了不同的类。该计划不仅构建开源生产级处理器还包括互连结构验证工具存储控制器外围IP和SOC工具等相关组件。
3. Shakti,印度理工学院的一个项目,由 Verilog 编写其中使用了大量第三方IP根据需要分成了不同的类。该计划不仅构建开源生产级处理器还包括互连结构验证工具存储控制器外围IP和SOC工具等相关组件。
4. 蜂鸟国内最早比较成熟的RISC-V实现由胡振波现在芯来创始人开发使用Verilog设计。其开源CPU为E200使用2级流水线
5. tinyriscv国内开发者在GitHub上开源的一个微RISC-V处理器核用verilog语言编写以最简单、最通俗易懂的方式实现RISC-V指令的功能没有对代码做任何的优化。
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 版。
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嵌入式系统的核心部件
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 是 Nexys A7-100T 是一款Digilent多孔RAM-based Nexys开发板的简易替代品。搭载Xilinx®Artix™-7 FPGA芯片Nexys 4 DDR是一个打开即用型的数字电路开发平台帮助使用者能够在课堂环境下实现诸多工业领域的应用配有高容量的大型FPGA芯片Xilinx产品编号XC7A100T-1CSG324C并集成了USB以太网和其它端口Nexys 4 DDR开发板能实现从理论型组合电路到强大的嵌入式处理器的多种设计。
Nexys A7-100T 是 Digilent 多孔 RAM-based Nexys 开发板的简易替代品。搭载Xilinx®Artix™-7 FPGA芯片Nexys 4 DDR 是一个打开即用型的数字电路开发平台帮助使用者能够在课堂环境下实现诸多工业领域的应用配有高容量的大型FPGA芯片Xilinx产品编号XC7A100T-1CSG324C并集成了USB以太网和其它端口。Nexys 4 DDR开发板能实现从理论型组合电路到强大的嵌入式处理器的多种设计。
<center>
<img src="https://s3.ax1x.com/2020/11/13/Dp9XtS.jpg">
<img src="https://s3.ax1x.com/2020/11/19/DuzSVf.jpg">
<br>
<div style="color:orange; border-bottom: 1px solid #d9d9d9;
display: inline-block;
@ -47,8 +41,8 @@ Nexys A7-100T 是 Nexys A7-100T 是一款Digilent多孔RAM-based Nexys开发板
| 序号 | 描述 | 序号 | 描述 |
| ---- | ---- | ---- | ---- |
| 1 | 选择供电跳线 |13|FPGA 配置复位按键|
| 2 | UART/JTAG共用USB接口 |14|CPU复位按键用于软核|
| 1 | 选择供电跳线 |13|CPU复位按键用于软核|
| 2 | UART/JTAG共用USB接口 |14|FPGA 配置复位按键|
| 3 | 外部配置跳线柱SD/USB |15|模拟信号Pmod端口XADC|
| 4 | Pmod端口 |16|编程模式跳线柱|
| 5 | 扩音器 |17|音频连接口|
@ -65,13 +59,13 @@ Nexys A7-100T 是 Nexys A7-100T 是一款Digilent多孔RAM-based Nexys开发板
### 验证FPGA 移植linux
通过lowRISC开源项目在其基于rocket修改的软核上运行完整的linux。支持键盘、显示器、网卡等常见通用设备验证了riscv软核运行linux操作系统的可行性为XiUOS进一步支持riscv软核提供了试验基础。
通过 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卡启动
* JP1 位于 USB / SD 位置JP2 位于 USB 位置,电源选择 JP3位usb底部的开关打开DIP-SW 1引导linux从sd卡启动
<center>
<img src="https://s3.ax1x.com/2020/11/13/DSRnpj.png">
@ -82,11 +76,26 @@ Nexys A7-100T 是 Nexys A7-100T 是一款Digilent多孔RAM-based Nexys开发板
padding: 2px;">在Nexys A7-100T上基于riscv软核运行Linux</div>
</center>
<center>
<img src="https://s3.ax1x.com/2020/11/13/DpuLKf.jpg">
<br>
<div style="color:orange; border-bottom: 1px solid #d9d9d9;
display: inline-block;
color: #999;
padding: 2px;">操作系统详细信息</div>
</center>
```bash
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:~$
```