AMBA概述
AMBA(Advanced Microcontroller Bus Architecture)是ARM公司开发的一种高级微控制器总线架构,用于连接处理器、存储器和外设的通信。AMBA总线架构定义了一组协议和接口,用于实现高性能、低功耗、可扩展的系统设计。
AMBA总线架构由三个关键组件组成:AMBA高级总线(Advanced High-performance Bus,AHB)、AMBA系统总线(Advanced System Bus,ASB)和AMBA高级外设总线(Advanced Peripheral Bus,APB)。
AHB是AMBA总线架构中的主要总线,用于连接处理器和高带宽的内存等主要外设。AHB总线支持主-从模式,可以实现多个主设备与从设备之间的高速数据传输。
ASB是一个更高级的总线,用于连接多个AHB总线,以实现更复杂的系统。ASB总线支持多层级结构,可以连接多个处理器和外设子系统。
APB是一个低功耗、低带宽的总线,主要用于连接低速外设和控制器。APB总线相对于AHB总线更简单,适用于功耗敏感的应用。
AMBA总线架构的优势在于其灵活性和可扩展性。通过使用AMBA总线,开发人员可以轻松地集成不同的处理器、存储器和外设,从而实现高性能、低成本的系统设计。此外,AMBA总线架构还提供了一些高级特性,如流水线传输、扩展性和硬件调试功能,使开发人员能够更好地优化系统性能和调试问题。
The AXI protocol:
。适合高带宽和低延迟的设计
。高宽带(Broadband)是指具有较高数据传输速率的网络连接,
。低延迟是指计算机系统或通信网络中的较短时间延迟。 它通常用于指网络数据包通过网络连接从发送计算机到接收计算机的往
返所需的时间。
。不需要复杂的桥即可提供高频操作
。可以满足多种组件的接口需求
。适合高初始访问延迟的存储器控制器
提供互联架构实现的灵活性
向后兼容AHB与APB接口
同时,该协议还拥有以下特点:
。分离的地址/控制和数据阶段(Separate address/control and data phases.)
。通过使用字节选通信号的方式支持非对齐数据传输(Support for unaligned data transfers,using byte strobes.)
既然这里提到了非对齐传输,那么就再多嘴一句,什么是非对齐传输。
非对齐传输:
1.1.1.1 突发长度
Burst length :指在一次突发传输中进行的数据传输次数,用AXLEN字段标识。由于标识值是从0开始得到,实际的突发长度=AxLEN+1
突发大小(burst size):指突发传输中的每次数据传输的字节数,用AxSIZE字段表示。
突发大小=2^AxSIZE
1.1.1.2非对齐传输
对齐传输是指地址的[1:0]=0,所以从第三位开始,地址也就是4的倍数,0x00,0x04,0x08等,都是对齐的,
AHB总线只支持对齐传输,而AXI协议支持地址的非对齐传输。在AXI传输中,只需要在传输时给出首地址,其后的传输地址都是由首地
址和突发大小,突发类型决定的。
在第一笔数据的传输时,如果首地址不是对齐的,那么主设备会在第一笔传输中对数据进行填充,直到首次传输填充至地址对齐。然后
再用WSTRB信号将填充的数据标记位无效。这样!之后的传输地址也就都是对齐的了。
图中传输的首地址是0x01,是非对齐的。AXI协议会对0x00地址进行填充,并且用WSTRB信号标记。这样传输的首地址就是0x00.随后
笔的传输自然也就对齐了!
需要注意的是,这笔突发传输的第一笔有效数据,在master端和slave端都是3bytes!因为第-byte的数据已经被标记无效了(图中灰
色,e,发送数据644234-1234-1234-1234,实际写入的数据是64'+1234-1234-1234-1200)!该地址的数据是被填充以满足传输地加对齐的需求!
使用突发传输时只需要传输起始地址Uses burst-based transactions with only the start address issued允许地址信息提前于实际数据传输发送分离的读写数据通道,这可以提供低损耗的DMA
支持发出多个未完成的地址Support forissuing multiple outstanding addresses.
皮持乱序传输完成Support for out-of-order transaction completion.
允许简单添加寄存器阶段以提供时序收敛AXI协议同时包含了低功耗操作所需的信号扩展,也包含了AX14-Lite协议,该协议是AX14的子集,有着更简单的控制寄存器接口和组件。
1.2 AXI Architecture
AXI协议基于突发传输,定义了下列独立事务(一个事务可能包含多次传输)通道:
原文:The AXl protocol is burst-based and defines five independent transaction channels
主机对从机的读操作:
。Read address, which has signal names beginning with AR.读地址通道
Read data, which has signal names beginning with R.读数据通道
主机对从机的写操作:
Write address, which has signal names beginning with Aw.写地址通道
Write data, which has sianal names beginning with W写数据通道
Write response, which has signal names beginning with B.写响应通道
An address channel carries control information that describes the nature of the data to be transferred. The data is transferred between
master and slave using either.
地址通道携带描述被传输数据性质的控制信息,数据在主设备和从设备间通过以下方式传输:
写数据通道从主设备传输数据到从设备,在写传输时,从设备使用写响应通道通知主设备传输完成。
[AXI议原文] A write data channel to transfer data from the master to the slave. in a write transaction, the slave uses the write response
channel to signal the completion of the transfer to the master.
(Tips:可以把AXIVIP当成MASTER,RTL代码对应就是SLAVE)
1.2.1支持out of order传输
1.2.1.1 Cachable和bufferable
一个master发出一个读写request,中间要经过很多个buffer,最终才能到memory,这些buffer的添加是为了outstanding,timing,perfommance等
BUFFER有2中类型:FIFO,仅仅是保存发送request或者返回response给上一级。还有一种bufier,在接受了上一级的request之后立刻给上一级返回response.告诉上一级这个操作结束了!而实际上这个操作没有发到下一级bufer.更没有给memor,有人可能就问,wite可以这样做,read 的时候则不行。其实read一样也有buferable.如果此时的buferable的write data channel有此read需要的数据,就可以直接返回。而不去访问memory.如果没有把request发到下一级:
总之,所有的访问都要经过这些buffer,是否bufer在于何时由谁回response,在于是否要把request送到最终的memory。
Cacheable
interconnect其实只是一个路由的功能,内部有bufer,但没有cache.而是在这个访问从master发起request到送到最终的memory这个过程中,可能会经过一些cache.cacheable代表了是不是要去这个cache中查找自己需要的数据,要不要更新cache,你说的利用cache来提高性能。有些操作是要求绝对non-cacheable的。比如device内部寄存器的访问。这些都是MMR(memory mapped register存储器映射寄存器),只能用non-cacheable AXI五个channel所有的信号,可以是master-innection,.也可以是interconnect-slave,也可以直接是master-slave。
outstanding
(面试会被经常问到的点)
简单的说,如果没有outstanding,或者说outstanding 能力为1,AXl master行为如下:
读操作:读地址命令->等待读数据返回-->等待读数据返回-->读地址命令-->等待读数据返回
写操作:写地址命令-->写数据-->等待写响应返回->写地址命令-->写数据-->等待写响应返回
如果outstanding 能力N>1的话,则:
读操作:可以连续发N个读地址命令,这期间如果读数据没有返回,则需要等待读数据返回。如果有读数据返回,则返回了几个,那么仍可以接着发几个。也就是说。在路上的读命令(或者是读数据)最多可以是N。多说一点,可以看出,如果数据返回的比较缓慢,那么IP雷要等待,效率就会很低。为了提高效率,有必要提高outstanding能力。以弥补总线上的延时。但也不能无限制的发,会阻塞总线,把其他IP给堵住。
AXI协议是基于burst的传输,定义了5个独立的传输通道:
读地址通道
读数据通道
写地址通道
写数据通道
写响应通道
AXI 每个通道在master和slave之间的交互都是通过ready/valid 握手机制进行交互的。因此每个通道都有一组ready/valid 信号。