皋陶 发表于 2020-10-16 23:51:55

蜂鸟FPGA开发板全知道篇3: 开源SoC简介(1)

本帖最后由 皋陶 于 2020-10-17 00:02 编辑

蜂鸟FPGA开发板全知道篇1:开源内核简介蜂鸟FPGA开发板全知道篇2:快速上手介绍(上)蜂鸟FPGA开发板全知道篇2:快速上手介绍(中)蜂鸟FPGA开发板全知道篇2:快速上手介绍(下)蜂鸟FPGA开发板全知道篇3:开源SoC简介(1)蜂鸟FPGA开发板全知道篇3:开源SoC简介(2)蜂鸟FPGA开发板全知道篇3:开源SoC简介(3)蜂鸟FPGA开发板全知道篇3:开源SoC简介(4)蜂鸟FPGA开发板全知道篇4:移植RTOS

目录1总体介绍1.1    总体特性1.2    SoC整体框图1.3    总线地址分配2RISC-V核介绍2.1    处理器核简介2.2    处理器核中断2.2.1    CLINT2.2.2    PLIC2.3    JTAG调试模块3SoC总线介绍3.1    ICB总线协议信号3.2    ICB总线协议时序3.3    SoC总线结构4SoC外设介绍4.1    QSPIMaster4.2    GPIO4.3    UART4.4    PWM4.5    Always-On模块4.5.1    WatchDog4.5.2    RTC4.5.3    PMU4.5.4    LCLKGEN4.5.5    RESETGEN4.6    I2CMaster4.7    HCLKGEN5SoC片上存储器介绍5.1    ITCM5.2    DTCM5.3    ROM6SoC电源域管理6.1    电源域划分6.2    低功耗模式7SoC时钟管理7.1    时钟域划分8SoC复位管理8.1    芯片复位策略8.1.1    POR电路Reset8.1.2    WatchDogReset8.1.3    芯片引脚AON_ERST_N8.1.4    复位树关系9上电流程控制9.1    上电流程9.1.1    从外部Flash开始执行9.1.2    从内部ROM开始执行9.2    上电地址选择10SoC 顶层引脚10.1    SoC顶层引脚分配
1总体介绍
本文介绍全开源的蜂鸟E203 RISC-V处理器核以及配套开源SoC,为了方便描述,本文档中将此SoC简称为“蜂鸟E203 SoC”。注意:

[*]本文档对蜂鸟E203内核以及RISC-V指令集架构的介绍尚不够详细,在中文书籍《手把手教你设计CPU:RISC-V处理器篇》或者《RISC-V架构与嵌入式开发快速入门》中对其进行深入浅出地系统的讲解,感兴趣的用户可以自行搜索书籍。


[*]本文档对SoC的各外设的介绍尚不够详细,在中文书籍《RISC-V架构与嵌入式开发快速入门》中进行了深入浅出的系统讲解。感兴趣的用户可以自行搜索此书。
注意:

[*] 本SoC的代码全开源,有关其代码结构的详情,请参见《蜂鸟E203快速上手介绍》;


[*]本开源SoC主要面向教育教学和爱好者领域,源代码全部开放。理论上可以用于商业目的,但是不保证其商用质量和服务;


[*] The main purpose ofthis open-sourced core is to be used by students/university/research andentry-level-beginners, hence, the commercial quality (bug-free) and service ofthis core is not not not warranted!!!
1.1    总体特性
本SoC总体特性如下:

[*]使用全开源的蜂鸟E203处理器核,此处理器核包括如下特性:(1)超低功耗2级流水线处理器核(2)64KB ITCM,64KB DTCM(3)有关蜂鸟E203的更多信息参见第3章


[*]为了尽量的共享当前RISC-V的软件生态,将尽可能的复用SiFive公司开源的Freedom 310(HiFive1开发板所使用)SoC,包括:(1)对其已有的IP进行复用兼容(2)对其总线地址分配进行兼容


[*]在兼容Freedom 310 SoC的基础上,增加如下IP,使其SoC功能更加丰富:(1) I2C Master

1.2    SoC整体框图
整个SoC的框图如下所示:
图1‑1 SoC整体框图

上图中除了蜂鸟E203处理器核和总线之外,其他的主要外部设备IP模块均复用来自Freedom E310 SoC平台。图中用红色线框包含的模块为开源Freedom E310 SoC平台所不具备的(因为其开源的是FPGA平台源代码),需要我们自己设计添加,包括:

[*]I2C Master:使用开源的I2C Master IP。
[*] HCLKGEN:用于使用PLL生成高速时钟(用于Main Domain)。
[*]LCLKGEN:生成低速时钟(用于Always-onDomain)。
[*]RESETGEN:用于为SoC生成复位逻辑。


1.3    总线地址分配
本SoC的总线地址分配如下表所示。注意,下表中:

[*]普通部分为与Freedom E310兼容且已经存在的IP及其地址分配。
[*]绿色高亮部分为本项目自研RISC-V核特有的部分。
[*]黄色高亮部分为本项目新定义的系统IP及其地址分配区间。
[*]蓝色高亮部分为FreedomE310芯片中存在的IP及其地址分配,但是目前本SoC中还没有的IP。
SoC地址分配表注意:
[*]本文档对蜂鸟E203处理器内核以及RISC-V指令集架构的介绍尚不够详细,在中文书籍《手把手教你设计CPU:RISC-V处理器篇》中对其进行深入浅出地系统的讲解。感兴趣的用户可以自行搜索此书。
2.1    处理器核简介
本SoC使用的处理器核为开源的蜂鸟E203 RISC-V处理器核。
蜂鸟E203内核的特性简介如下:

[*]E203内核采用2级流水线结构,通过一流的处理器架构设计,该CPU核的功耗与面积均优于同级ARM Cortex-M核,实现业界最高的能效比与最低的成本
[*]E203内核能够运行RISC-V指令集,支持RV32IMAC等指令子集的配置组合,仅支持机器模式(Machine Mode Only)。
[*]E203内核提供标准的JTAG调试接口,以及成熟的软件调试工具。
[*]E203内核提供成熟的GCC编译工具链。
参见《手把手教你设计CPU——RISC-V处理器篇》了解开源蜂鸟E203的详情。
2.2    处理器核中断
蜂鸟E203内核的中断分为三种类型:

[*]计时器中断,由CLINT模块产生。
[*]软件中断,由CLINT模块产生。
[*]外部中断,由PLIC管理产生。
对于RISC-V架构中断的详细介绍,本文档在此不展开赘述,用户参见中文书籍《手把手教你设计CPU:RISC-V处理器篇》第13章中对其进行深入浅出地系统的讲解。
2.2.1   CLINT
本文在此仅对CLINT进行中文简述。
有关CLINT的详细,用户可以选择中文书籍《手把手教你设计CPU:RISC-V处理器篇》第13章中对其进行深入浅出地系统的讲解。CLINT全称为Core Local Interrupts Controller。CLINT是一个存储器地址映射(Memory Address Mapped)的模块,挂载在处理器核为其实现的专用总线接口上,在蜂鸟E203内核配套的SoC中其寄存器的地址区间如下表所示。CLINT的寄存器只支持size为32位的读写访问。CLINT寄存器的Memory MappedAddress
CLINT可以用于生成软件中断,其要点如下:

[*]CLINT中实现了一个32位的msip寄存器,该寄存器只有最低位为有效位,该寄存器有效位直接作为软件中断(Software Interrupt)信号通给处理器核。
[*]当软件写1至msip寄存器触发了软件中断之后,前文中介绍的CSR寄存器mip中的MSIP域便会置高指示当前中断pending状态。
[*]软件可通过写0至msip寄存器来清除该软件中断。


CLINT可以用于生成计时器中断,其要点如下:

[*]CLINT中实现了一个64位的mtime寄存器,该寄存器反映了64位计时器的值。计时器根据低速的输入节拍信号进行计时。
[*]CLINT中实现了一个64位的mtimecmp寄存器,该寄存器作为计时器的比较值,假设计时器的值mtime大于或者等于mtimecmp的值时,则产生计时器中断。软件可以通过改写mtimecmp的值来清除计时器中断。

2.2.2   PLIC
本文在此仅对PLIC进行中文简述。
有关PLIC的详细,用户可以参见中文书籍《手把手教你设计CPU:RISC-V处理器篇》第13章中对其进行深入浅出地系统的讲解。PLIC全称为Platform Level Interrupt Controller。PLIC是RISC-V架构标准定义的系统中断控制器,主要用于多个外部中断源的优先级仲裁和派发。如图1-1中所示,PLIC是一个存储器地址映射(Memory Address Mapped)的模块,挂载在处理器核为其实现的专用总线接口上,在蜂鸟E203内核配套的SoC中其寄存器的地址区间如下表所示。PLIC的寄存器只支持size为32位的读写访问。
PLIC寄存器的Memory MappedAddress
PLIC理论上可以支持高达1024个外部中断源,在具体的SoC中连接的中断源个数可以不一样。蜂鸟E203内核的SoC系统是基于Sifive公司开源的Freedom E310 SoC开发所得。PLIC在此SoC中连接了GIPO,UART,PWM等等多个外部中断源,其中断分配如下表所示。PLIC将多个外部中断源仲裁为一个单比特的中断信号送入蜂鸟E203内核。
注意:由于本SoC增加了I2C Master,因此增加了I2C的中断。
PLIC中断分配表
2.3    JTAG调试模块
蜂鸟E203内核采用标准(1149.1)JTAG 连接模块用于连接系统外部调试器(Debugger)与内部的调试模块(Debug Module)。如图1-1中所示,Debug Module调试模块,用于支持外部JTAG通过该模块调试处理器核,是的处理器核能够通过GDB对其进行交互式调试,譬如设置断点,单步执行等调试功能。
后续文章
此篇为《蜂鸟FPGA开发板全知道篇3:开源SoC简介(1)》,请持续关注,后续即将发布:《蜂鸟FPGA开发板全知道篇3:开源SoC简介(2)》《蜂鸟FPGA开发板全知道篇3:开源SoC简介(3)》《蜂鸟FPGA开发板全知道篇3:开源SoC简介(4)》

页: [1]
查看完整版本: 蜂鸟FPGA开发板全知道篇3: 开源SoC简介(1)