常见的AXI总线仲裁器概述

2020-06-30 10:38:13 浏览数 (1)

"最近的文章可能更偏向于找工作"

SoC 设计广泛采用共享总线式的片上通信,其中的仲裁器是共享总线的关键技术之一。

AMBA AXI 总线协议以高性能、高频率的系统设计为目标,适合高带宽、低延迟的系统设计,可以达到高频率的操作而不需要复杂的总线桥,满足众多部件的接口要求,具备高度灵活的互联结构,并且向后兼容 AHB 和 APB 接口。

AXI 协议的关键特性总结如下:

  1. 多通道单向传输总线,将读/写地址、读数据、写数据、写响应信号在不同的通道中实现传输。
  2. 基于 burst 传输,对于一次 burst 传输,只需要主机给出起始地址。
  3. 地址/控制和数据阶段分开,地址/控制信息可以在数据开始传输之前发出(也可以同时发出)。
  4. 支持非对齐传输,每 8 比特搭配一个字节选通开关信号,可以控制传输数据中对应字节的有效与否。
  5. 支持乱序传输(仅AXI3支持写乱序,AXI4已经取消),用 ID 来标识各个访问的归属。当访问的 slaves 中有低速设备时,AXI 乱序传输数据的优点就非常明显,不过,一次 burst 传输内的数据是按序传输的。
  6. 支持 outstanding 传输,即主机可以连续发送多个 burst 传输首地址而无需等待前次burst 传输完成。

除以上数据传输协议,AXI 协议还支持可选的低功耗操作。

AXI 协议中,五个通道都各自有一套使用 VALID 和 READY 信号的握手机制,使得master 和 slave 有效控制数据和控制信息的传输速率。源端生成 VALID 信号表明数据和控制信号有效,目的端生成 READY 信号表明可以接收相应的数据和控制信号。只有当 VALID和 READY 同时为高时,才开始传输。另外,读数据和写数据通道都包含一个 LAST 信号表示 burst 中最后一个数据项的传输。

仲裁主要是在如下场景中会使用到:

a.多个主设备同时访问同一个从设备的读地址;

b.多个主设备同时访问同一个从设备的写地址;

c.多个写数据从不同的主设备而来,同时写向同一个从设备,在这种情况下,数据会发生间插,这时候需要判断数据是哪个主设备的;只适合AXI3,在AXI4中WID被设置为1;

d.从不同的从设备同时返回多个写回应信号;

e.从不同的从设备同时返回多个读数据;

f.多个通道源试图同时访问同一个共享层;

那么总共需要的仲裁器个数为每个从设备需要3个仲裁器,每个主设备需要2个仲裁器。

那么常见的仲裁机制如下:

a.优先级仲裁:每个端口都配置静态的优先级,当同一时刻多个不同优先级的到达时,优先级高的优先传输;当两个相同优先级的同时到达时,看哪个索引接在request[0]上;

b.先到先服务仲裁:没有优先级,等待时间最长的具有最高的优先级,当同时到达的,看索引最低的具有最高优先级;仲裁相对优先级仲裁,频率较低;

c.双层仲裁(平级公平仲裁):这是一种两层仲裁,第一层相当于优先级仲裁,但是这个优先级是外部给予的,然后第二层仲裁是在具有相同的优先级的情况下,使用先到先服务的仲裁机制,并且每次传输时,都更新内部的优先级;

d.动态仲裁:看QoS的值,当QoS值一致时,看索引值。

上述情况中,如果上次传输还未完成,那么必须等待上次传输完成,才能进入下一次仲裁。

具体实现的RTL代码,没有~~~

0 人点赞