片上总线 - ICB

916 阅读6分钟

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提高了流水线级数,且能达到相当高的主频。