add riscv_soft_core.md

This commit is contained in:
Yan_yan 2020-11-13 17:12:30 +08:00
parent 8c4806be2f
commit 96d36b4f80
1 changed files with 92 additions and 1 deletions

View File

@ -1 +1,92 @@
# RISC-V 软核
# RISC-V 软核
## 简介
 CORE是一个数字系统的核心负责整个系统的内存调度中断管理算术逻辑运算等如同整个系统的大脑是物理电气实现逻辑功能的关键。尽管复杂但不可忽略的是核同其他数字器件一样也是一个典型的逻辑器件由逻辑门、触发器构成那么也就可以由硬件描述语言Hardware Description LanguagHDL来描述。既然核可以由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)搭建而成的。
我们尝试了将一个基于Rocket的开源riscv软核处理器烧录到Nexys A7-100T 并运行裁剪过的linux操作系统进而验证了XiUOS运行在riscv软核的可行性。
## 一些常见软核
### 开源RISCV软核
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)
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 是 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">
<br>
<div style="color:orange; border-bottom: 1px solid #d9d9d9;
display: inline-block;
color: #999;
padding: 2px;">Nexys A7</div>
</center>
| 序号 | 描述 | 序号 | 描述 |
| ---- | ---- | ---- | ---- |
| 1 | 选择供电跳线 |13|FPGA 配置复位按键|
| 2 | UART/JTAG共用USB接口 |14|CPU复位按键用于软核|
| 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卡启动
<center>
<img src="https://s3.ax1x.com/2020/11/13/DSRnpj.png">
<br>
<div style="color:orange; border-bottom: 1px solid #d9d9d9;
display: inline-block;
color: #999;
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>