AXI
面向高性能,高带宽,低延迟的片内总线协议。
具有以下特点:
1 采用分离的地址和数据传输
2 支持地址不对齐的数据访问,使用字节掩码来控制部分写操作。
3 使用基于突发的交易类型,对于突发操作仅需要发送起始地址,即可传输大量的数据。
4 具有分离的读通道 和 写通道,总共有五个独立的通道。
5 支持多个滞外交易。
6 支持乱序返回 乱序完成
7 易于添加流水线级数以获得高频的时序。
AHB
总共有三个通道,支持单个时钟边沿操作,支持非三态的实现方式。 支持突发传输,支持分段传输,支持多个主控制器。
AHB总选在很多低功耗SOC中仍然大量使用。
APB
APB主要用于低带宽 周边外设之间的连接。 如UART,在APB里面唯一支持的模块是APB桥。 它支持两个时钟周期传输,无须等待周期和回应信号,控制逻辑简单,只有4个控制信号。
ICB协议
ICB 供蜂鸟E203处理器核内部使用,同时可作为SOC的总线。
尽可能结合AXI和AHB的优点,兼具高速性和易用性。
1 相比AXI和AHB而言,ICB的协议控制更加简单,仅有两个独立的通道。 读和写共用 地址通道,共用结果返回通道。
2 与AXI总线一样,采用分离的地址和数据传输。
3 与AXI总线一样,采用地址区间寻址,支持任意数目的主从数目,如一主一从,一主多从,多主多从。
4 与AHB总线一样,每个读或者写操作都会在地址通道上产生地址,而非像AXI中只产生起始地址。
5 与AXI一样,支持地址不对齐的数据访问,使用字节掩码来控制部分写操作。
支持多个滞外交易
非常易于添加流水线级数以获得高频的时序。
6 与AHB总线一致, 不支持乱序返回乱序完成,反馈通道必须按顺序返回结果。
ICB协议信号
ICB包括两个通道,命令通道和反馈通道。
命令通道:主要用于主设备向从设备发起读写请求。
反馈通道:主要用于从设备向主设备返回读写请求。
ICB协议的时序
命令通道:
icb_cmd_vaild: 主设备向从设备发送读写请求信号。
icb_cmd_ready: 从设备向主设备返回读写接收信号。
icb_cmd_addr: 读写地址
icb_cmd_read: 读或写操作的指示。
icb_cmd_wdata: 写操作的数据
icb_cmd_wmask:写操作的字节掩码
反馈通道:
icb_rsp_vaild: 从设备向主设备发送读写反馈请求信号。
icb_rsp_ready: 主设备向从涉笔返回读写反馈请求信号。
icb_rsp_rdata: 读反馈的数据
icb_rsp_err: 读或者写反馈的错误标志
写操作同一周期返回的结果
读操作下一周期返回的结果
。。。。。。。
ICB的硬件实现
一主多从:
ICB通过一个ICB分发模块实现一个主设备到多个从设备的连接。具有一输入三输出ICB分发模块。
该模块有一个ICB输入,IN总线。 三个输出ICB,为Out0,Out1,Out2总线。
该模块并没有引入任何的周期延迟,即输入ICB和输出ICB在一个时钟周期内接通。
该模块的IN总线的命令通道有一个附属输入信号,用来指示该模块请求应该分发到哪个输出ICB。 该附属信号可以在顶层通过地址区间的比较判断生成。
每个周期握手成功,则分发一个交易,同时将分发信息压入FIFO缓存中。
由于ICB支持多个滞外交易,Out0,Out1,Out2通过反馈通道返回的结果可能需要多个周期才能返回,并且各自返回的时间点可能先后不一,因此需要仲裁。 此时FIFO缓存按顺序弹出之前压入的分发信息作为仲裁标准。该fifo缓存的深度决定了该模块能够支持的滞外交易的个数。同时由于fifo具有先入先出的特性,因此可以保证ICB严格按照发出的顺序接收到相应的返回结果。
多主一从:
3个输入ICB,in0,in1,in2.一个输出ICB为OUt总线。
该ICB模块没有引入任何的周期延迟。
多输入ICB的命令可以采用优先级仲裁机制。
每个周期如果握手成功,则根据仲裁结果发送一个交易,同时将仲裁信息压入FIFO缓存。
多主多从:
一主多从和多主一从的有效结合,可以组成多主多从。
蜂鸟E203处理器核BIU
BIU主要负责接收来自IFU 和 LSU取指和访存的存储器访问请求。 并且使用标准的ICB接口,然后通过判断其访问的地址区间来访问外部的不同接口。
包括:
快速IO接口
私有外设接口
系统存储接口
......
BIU的微架构 BIU 总线接口单元
BIU有两组输入ICB接口,分别来自IFU和LSU。两组输入ICB和一个ICB汇合模块组成一组ICB,采用优先级仲裁机制。LSU总线由最高的优先级。
为了切断外界与处理器核内部的时序路径,在汇合的ICB处插入一组乒乓缓冲区。使用乒乓缓冲区切断时序路径是高速处理器设计常用的技术手段。
经过乒乓缓冲区之后的ICB通过命令通道的地址进行判断,通过判断其访问的地址区间产生分发信息,然后使用一个ICB分发模块将其分发给不同的外部接口。
BIU使用的ICB汇合模块和ICB分发模块 的FIFO缓冲深度默认配置为1.意味着只支持一个滞外交易。
蜂鸟E203处理器SOC总线
BIU的系统存储接口ICB连接SOC中的系统存储总线,通过系统存储总线访问SOC中的若干存储组件,如ROM、闪存的只读区间。
BIU的私有外设接口ICB连接SOC中的私有设备总线,通过私有设备总线访问SOC中的若干设备。如UART,GPIO。
GPIO(general porpose intput output):通用输入输出端口的简称
SOC总线的微架构
私有外设接口ICB 通过命令通道的地址进行判断,通过其访问的地址区间产生分发信息,然后使用一个ICB分发模块将其发送给不同的外设ICB接口。
系统存储接口ICB通过其命令通道的地址进行判断,通过访问其的地址区间产生分发信息,然后使用一个ICB分发模块将其发给不同的存储模块ICB接口。
如果ICB路径中存在着时序的关键路径,可以插入一组乒乓缓冲区切断前后的时序路径。 如果任何ICB路径需要跨越异步始终以或者整数倍分频时钟域,也可以插入异步FIFO模块 或者流水线级数。
ICB提高了流水线级数,且能达到相当高的主频。