皋陶 发表于 2020-10-16 23:52:34

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

本帖最后由 皋陶 于 2020-10-16 23:52 编辑

蜂鸟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顶层引脚分配

3 SOC总线介绍
本SoC采用蜂鸟E203内核开发过程中定义了一种自定义总线协议ICB(InternalChip Bus),该总线用于蜂鸟E203内核内部使用,同时也可作为SoC中的总线使用。
ICB总线的初衷是为了能够尽可能地结合AXI总线和AHB总线的优点,兼具高速性和易用性,它具有如下特性:

[*]相比AXI和AHB而言,ICB的协议控制更加简单,仅有两个独立的通道,如图3-1所示,读和写操作共用地址通道,共用结果返回通道。
[*]与AXI总线一样采用分离的地址和数据阶段。
[*]与AXI总线一样采用地址区间寻址,支持任意的主从数目,譬如一主一从,一主多从,多主一从,多主多从等拓扑结构。
[*]与AHB总线一样每个读或者写操作都会在地址通道上产生地址,而非像AXI中只产生起始地址。
[*]与AXI总线一样支持地址非对齐的数据访问,使用字节掩码(Write Mask)来控制部分写操作。
[*]与AXI总线一样支持多个滞外交易(MultipleOustanding Transaction)。
[*]与AHB总线一样不支持乱序返回乱序完成。反馈通道必须按顺序返回结果。
[*]与AXI总线一样非常容易添加流水线级数以获得高频的时序。
[*]协议非常简单,易于桥接转换成其他总线类型,譬如AXI,AHB,APB或者TileLink等总线。
对于蜂鸟E203内核这样的低功耗处理器而言,ICB总线能够被用于几乎所有的相关场合,包括:作为内部模块之间的接口,SRAM模块接口,低速设备总线,系统存储总线等等。
图3-1 ICB总线通道结构

3.1    ICB总线协议信号
ICB总线主要包含2个通道,如图3-1所示。ICB总线信号列表如下表所示:

[*]命令通道(Command Channel)Command Channel主要用于主设备向从设备发起读写请求。
[*]返回通道(Response Channel)Response Channel主要用于从设备向主设备返回读写结果。
ICB总线信号表
3.2    ICB总线协议时序
本节将描述ICB总线的若干典型时序。

[*]如下图3-2所示:主设备向从设备通过ICB的Command Channel发送写操作请求(icb_cmd_read为低),从设备立即接收该请求(icb_cmd_ready为高)。从设备在同一个周期返回读结果且结果正确(icb_rsp_err为低),主设备立即接收该结果(icb_rsp_ready为高)。

图3‑2写操作同一周期返回结果

[*]如下图3-3所示:主设备向从设备通过ICB的Command Channel发送读操作请求(icb_cmd_read为高),从设备立即接收该请求(icb_cmd_ready为高)。从设备在下一个周期返回读结果且结果正确(icb_rsp_err为低),主设备立即接收该结果(icb_rsp_ready为高)。

图3‑3读操作下一周期返回结果

[*]如下图3-4所示:主设备向从设备通过ICB的Command Channel发送写操作请求(icb_cmd_read为低),从设备立即接收该请求(icb_cmd_ready为高)。从设备在下一个周期返回读结果且结果正确(icb_rsp_err为低),主设备立即接收该结果(icb_rsp_ready为高)。
图3‑4写操作下一周期返回结果

[*]如下图3-5所示:主设备向从设备通过ICB的Command Channel发送读操作请求(icb_cmd_read为高),从设备立即接收该请求(icb_cmd_ready为高)。从设备在四个周期后返回读结果且结果正确(icb_rsp_err为低),主设备立即接收该结果(icb_rsp_ready为高)。

图3‑5读操作四个周期返回结果

[*]如下图3-6所示:主设备向从设备通过ICB的Command Channel发送写操作请求(icb_cmd_read为低),从设备立即接收该请求(icb_cmd_ready为高)。从设备在四个周期后返回结果且结果正确(icb_rsp_err为低),主设备立即接收该结果(icb_rsp_ready为高)。

图3‑6写操作四个周期返回结果

[*]如下图3-7所示:主设备向从设备通过ICB的Command Channel连续发送四个读操作请求(icb_cmd_read为高),从设备均立即接收该请求(icb_cmd_ready为高)。从设备在四个周期后连续返回四个读结果,其中前三个结果正确(icb_rsp_err为低),第四个结果错误(icb_rsp_err为高),主设备均立即接收此四个结果(icb_rsp_ready为高)。

图3‑7连续四个读操作均四个周期返回结果

[*]如下图3-8所示:主设备向从设备通过ICB的Command Channel连续发送四个写操作请求(icb_cmd_read为低),从设备均立即接收该请求(icb_cmd_ready为高)。从设备在四个周期后连续返回四个写结果,其中前三个结果正确(icb_rsp_err为低),第四个结果错误(icb_rsp_err为高),主设备均立即接收此四个结果(icb_rsp_ready为高)。
图3‑8连续四个写操作均四个周期返回结果

[*]如下图3-9所示:主设备向从设备通过ICB的Command Channel相继连续发送三个读和写操作请求。从设备立即接收了第一个和第三个请求,但是第二个请求第一个周期并没有立即接受(icb_cmd_ready为低),因此主设备一直将地址控制和写数据信号保持不变,直到下一周期该请求被从设备接受(icb_cmd_ready为高)。从设备对于第一个和第二个请求都是在同一个周期就返回结果且被主设备立即接受,但是对于第三个请求则是在下一个周期才返回结果,并且主设备还没有立即接受(icb_rsp_ready为低),因此从设备一直将返回信号保持不变,知道下一周期该返回结果被主设备接受。

图3-9读写混合发生
3.3    SoC
本SoC总线结构如下图所示:

[*]蜂鸟E203内核BIU的系统存储接口ICB连接系统存储总线,通过其访问SoC中的若干存储组件,譬如ROM,Flash的只读区间等。
[*]蜂鸟E203内核BIU的私有设备接口ICB连接私有设备总线,通过其访问SoC中的若干设备,譬如UART,GPIO等等。
有关SoC的结构和组件以及地址分配,请参见第2.3节。图3‑10 SoC总线示意图
后续文章
此篇为《蜂鸟FPGA开发板全知道篇3:开源SoC简介(2)》,请持续关注,后续即将发布:《蜂鸟FPGA开发板全知道篇3:开源SoC简介(3)》《蜂鸟FPGA开发板全知道篇3:开源SoC简介(4)》完
页: [1]
查看完整版本: 蜂鸟FPGA开发板全知道篇3: 开源SoC简介(2)