| |
一、概述
在前文有提到AXI转AHB的bridge,但在本部分中,介绍的不是这个而是另外一种自定义的XBUS总线转换为AXI的bridge设计。
协议特点
AXI的协议有固定的标准,这里就不在多说。主要介绍一下XBUS的特点,XBUS总线是一种数据流形式的总线,数据位宽为32-data_xbus,有一个first_xbus信号,其为高时表明这是一次数据传输的头,有一个last_xbus信号,其为高时表明这是一次数据传输的尾,另外还有一对握手信号ready_xbus, valid_xubs. 在XBUS的数据头里包含有读写flag,起始地址,数据长度,成功/失败flag。XBUS的数据流是顶格放置的,举例来说,如果32位数据中有3byte数据有效,那么这32位数据中,前24bit有效,后8bit无效,且不管起始地址是什么样的。
二、设计要点
针对这样一种数据流的格式,其设计的主要要点有如下几个:1,在AXI总线中,数据的有效性是根据wstrb线来标注的,且AXI总线的地址是对齐的。因此,第一个设计要点就是要将XBUS的顶格的数据通过移位的方式来使得AXI总线地址对齐。2,AXI总线每一个burst传输的数据量的最大值比XBUS总线的数据量要小,因此,第二个设计要点就是要将来自XBUS总线的大量数据进行拆包处理。在以上两个关键点的约束要能设计出一个计算wstrb, addr, blen等AXI关键数据的逻辑。3,跨时钟域处理问题,总线桥的设计总是不免会涉及到不同时钟域数据交换问题。这一点还比较容易处理,直接使用AFIFO来进行数据同步。4,性能问题,总线桥属于数据通路,其数据传输效率是最重要的性能指标。这个性能指标除了与本身的拆包、移位功能相关以外,还与AFIFO的深度有关,如果AFIFO的深度设置过低,即使AFIFO前级的速度很快,由于AFIFO同步数据需要时间,那么也会导致性能的降低,一般而言,AFIFO的同步周期位4个cycle。所以最好设置AFIFO的深度为8即可达到效率最大化。
一般来说,总线桥的设计,在SOC设计中是大概率会有的。前面提到的设计要点,都适用于各种总线桥的设计,设计的重点在于:1)熟悉两种总线的特征;2)提取两种总线的相同点和不同点;3)确定好固定的参数和可变参数,针对可变参数进行细节设计,固定参数直接固化。