最近弄Zynq,不懂AXI协议Zynq很难玩儿的转。这些笔记主要攻克AXI中的一些难题。
所有的AXI4包含了5个不同的通道:
(1)读/写地址通道(Read/Write address channel, AR/AW):读、写传输每个都有自己的地址通道,对应的地址通道承载着对应传输的地址控制信息。
(2)读数据通道(Read data channel, R):读数据通道承载着读数据和读响应信号包括数据总线(8/16/32/64/128/256/512/1024bit)和指示读传输完成的读响应信号。
(3)写数据通道(Write data channel, W):写数据通道的数据信息被认为是缓冲(buffered)了的,“主”无需等待“从”对上次写传输的确认即可发起一次新的写传输。写通道包括数据总线(8/16...1024bit)和字节线(用于指示8bit 数据信号的有效性)。
(4)写响应通道(Write response channel, B):“从”使用写响应通道对写传输进行响应。所有的写传输需要写响应通道的完成信号。
从上面5个通道分离(Separate read/write channels------AXI主要特征一)可以看出,相比于AHP的一个通道完成所有的工作,这种5个通道独立操作,能提高performance。
AXI的控制和数据通道分离,可以带来很多好处。地址和控制信息相对数据的相位独立,可以先发地址,然后再是数据,Master访问slave的时候,可以不等需要的操作完成,就发出下一个操作,甚至多个操作。这样,可以让slave在控制流的处理上流水起来,达到提速的作用,也就是 outstanding 操作(Multiple outstanding addresses------AXI主要特征二)。支持多少个outstanding,由资源利用率来决定,ARM处理器典型值32。同时对于master,需要对不同的地址和slave就行访问,所以可以对不同的slave 连续操作。而这样的操作,由于slave 返回数据的先后可能不按照master 发出控制的先后进行(Flexible relationship between the write address and data--------AXI主要特征三),导致出现了乱序操作(out of order--------AXI主要特征五 ),让master最快收到想要的响应。同时,AXI还支持不对齐传输(unaligned data transfers--------AXI主要特征四)。AXI4协议基于猝发式传输机制(Burst transactions ------AXI主要特征六),不需要像AHB那样,每传一笔数据就指定一个地址,只需要对这次burst制定首地址。在master向slave写数据过程中,AXI提供一个额外的写响应通道,通过写响应通道,salve向master发出信号表示写交易完成。