AMBA4AXI4-流协议版本:1.0规范序言序言介绍了AMBA4AXI4-流协议规范。包含以下章节:关于本文档反馈关于本文档本文档讲述AMBA4AXI4流协议规范。计划的读者群本文档面向打算了解先进微控制器总线结构(AMBA)的硬件和软件工程师,以及设计能够兼容AMBA4AXI4流协议系统的工程师。使用本文档本文档包含以下章节:1介绍介绍AXI4流协议,并给出了一个流类型的例子。2接口信号讲述了AXI4流信号以及管理信号的标准规则。3默认信号要求讲述了默认信号的要求。4传输交错和排序讲述了流交错和排序约束。附录A与AXI4写数据通道比较讲述了AXI4流接口和AXI4写数据通道之间的主要区别。附录B版本讲述了本文档发行版本之间的变化。约定本文档使用的约束描述如下:排版时序图信号排版排版约定如下:斜体突出了重要注意事项,介绍特殊术语,标示了内部前后对照、以及引用。加粗突出接口元素,比如菜单名。标示信号名。也用于分类表中的术语。monospace字体表示可以用键盘输入的文本,比如命令、文件和程序名,以及源代码。monospace字体表示允许的命令或选项的缩写。可以输入下划线文字代替命令或选项的全名。monospace斜体字体代表monospace字体表示的参数,该参数可以被一个特殊值代替。monospace加粗字体当用于示例代码以外时表示语言关键字。and出现在代码或代码段中,代表汇编语法中可替换的术语。例如:MRCp15,0Rd,CRn,CRm,Opcode_2时序图以下图“Keytotimingdiagramconventions”解释了时序图中使用的约定。当有变化发生时会清晰标示出来。不能假定途中没有明确标示的任何时序信息。共享的总线和信号区域没有被定义,因此在共享区域内,总线或信号可以假定为任何值。实际电压水平不是很重要,因为不会影响正常操作。时序图有时候会将一个单bit信号同时显示为高和低,看起来类似于总线变化,如上图所示。如果一个时序图中一个单bit信号以这种方式显示,则它的值不会影响伴随的描述。信号信号约定有:信号电平一个断言的信号的电平取决于该信号是高有效还是低有效。断言的意思是:对于高有效的信号,为高对于低有效的信号,为低小写n在信号名的开头或结尾,表示该信号为低有效反馈ARM欢迎对于本产品及文档的反馈。反馈关于本产品如果你有任何关于本产品的看法和建议,请联系你的供应商并给出:产品名产品修订版本或版本提供尽可能多的解释说明信息,如果合适的话,包括问题以及调试过程。反馈关于内容如果你有关于内容的意见,请发送邮件给errata@arm.com,并给出:标题:AMBA4AXI4-StreamProtocolSpecification数字:ARMIHI0051A你对内容有意见的页码关于你的意见的一个简洁的解释说明1介绍本章描述了AXI4-流协议,并给出一些流类型的例子。本章包含以下章节:关于AXI4-流协议数据流1.1关于AXI4-流协议AXI4-流协议作为一个标准接口,用于连接进行数据交换的组件。接口可以用来连接一个单一的主机,主机向接收数据的单一从机发送数据。协议也可用于连接若干个主机和从机的组件。协议支持共用一组信号线的多个数据流,允许构建一个通用互联(genericinterconnect),可以执行upsizing、downsizing以及路由操作。AXI4-流接口也支持多种不同的流类型。流协议定义了传输和包之间的关系。1.1.1字节定义以下字节定义用于本规范:数据字节在源设备和目标设备之间传输的、包含有效信息的一个字节的数据。位置字节在流中标示数据字节相对位置的一个字节。这是一个占位符,不会包含任何在源设备和目标设备之间传输的实质性的数据值。空字节在流中的一个字节,不包含任何数据信息或任何有关数据字节相对位置的信息。1.1.2流术语以下流术语用于本规范:传输通过AXI4-流接口进行的一个单一数据传输。一个单一数据传输由TVALID,TREADY握手定义。参见握手过程。包通过AXI4-流接口被一起传输的一组字节。包类似于AXI4的突发。一个包可以由一个单一传输或多个传输组成。基础组件可以使用包来更有效地处理packet-sized组中的一个流。帧一个AXI4-流中最高级别的字节编组。一个帧包含整数个数的包。一帧可以包含很大数量的字节数,例如,一个完整的视频帧缓存。数据流从一个源设备到一个目标设备传输的数据。一个数据流可以是:一系列独立字节传输组合在包中的一系列字节传输1.2数据流数据流有多种形式。本章节提供了一些使用定义的AXI4-流类型的不同数据流风格的例子。1.2.1字节流一个字节流是若干个数据和空字节的传输。在每个TVALID,TREADY握手期间,可以传输任何数量的数据字节。空字节不具有任何意义,可以被插入流中,或者从流中移除。图1-1展示了字节流的两个例子。图中,每一竖列代表在一个单一传输中的字节,在这个例子中使用了一个4-byte宽的数据总线。列的时间序为从左到右。注意:因为空字节不传输信息,也不出现在流中,所以图1-1中的两个例子传输的信息是相同的。1.2.2连续对齐的流一个连续对齐的流是一个包含若干个数据字节的传输,这个传输中的每个包中都没有位置字节或空字节。图1-2展示了一个连续对齐流的例子。1.2.3连续非对齐的流一个连续非对齐的流是一个包含若干个数据字节的传输,这个传输中,每个包的第一个数据字节和最后一个数据字节之间没有位置字节。图1-3展示了连续非对齐流的两个例子。注意:一个连续非对齐的流可以在包的开始、结尾或开始和结尾处有任意数量的相邻位置字节1.2.4稀疏的流一个稀疏的流是一个包含若干个数据字节及位置字节的传输。所有的数据及位置字节都必须被保持并从源设备传送到目标设备。图1-4展示了一个稀疏流的例子。注意:一个稀疏流可以包含任何数据字节和位置字节的混合,但一般情况下多数字节为数据字节。一个稀疏流并不意味着只有少数字节是数据字节。2接口信号本章讲述了AXI4-流接口的信号要求。包含以下章节:信号列表传输信号数据信号字节限定符包边界源设备和目标设备信号时钟和复位用户信号2.1信号列表接口信号列在表2-1中。关于这些信号的其他信息请参见本章其他章节。表2-1使用以下参数来定义信号宽度:n以byte为单位表示的数据总线的宽度ITID宽度,推荐最大为8-bitsdTDEST宽度,推荐最大为4-bitsuTUSER宽度,推荐的bit数为以byte为单位表示的接口宽度的整数倍信号源描述ACLK时钟源全局时钟信号。所有信号都在ACLK的上升沿采样ARESETn复位源全局复位信号。ARESETn是低有效的TVALID主机TVALID表示主机发出一个有效的传输。当TVALID和TREADY都被断言时传输发生TREADY从机TREADY表示从机可以在当前周期接收一个传输TDATA[(8n-1):0]主机TDATA是主要的payload,用来提供通过接口传输的数据。Datapayload的宽度是byte的整数倍。TSTRB[(n-1):0]主机TSTRB是字节限定符,表示TDATA字节对应的内容是否作为一个数据字节或位置字节被处理TKEEP[(n-1):0]主机TKEEP是字节限定符,表示TDATA字节对应的内容是否作为数据流的一部分来被处理。如果对应的字节,其TKEEP字节限定符被取消断言,则该字节为空字节,可以从数据流中移除TLAST主机TLAST表示一个包的边界TID[(i-1):0]主机TID是数据流的识别码,表示数据的不同流TDEST[(d-1):0]主机TDEST为数据流提供路由信息TUSER[(u-1):0]主机TUSER是用户定义的边带(sideband)信息,可以与数据流一起被发送2.2传输信号本章节给出了握手信号的细节,并定义了握手信号TVALID和TREADY之间的关系。2.2.1握手过程TVALID和TREADY的握手决定了信息合适通过接口传输。一个双向的流控制机制允许主机和从机都可以控制通过接口传送的数据和控制信息的传输速率。为了使传输能够发生,TVALID和TREADY信号都必须被断言。TVALID和TREADY都可以第一个被断言,或者两个信号在同一个ACLK周期内同时被断言。在断言TVALID之前,主机不能等待TREADY被断言(也就是要先断言TVALID,再断言TREADY)。一旦TVALID被断言,其必须保持断言直到握手发生。从机可以在断言TREADY之前等待TVALID被断言。如果从机断言了TREADY,允许在TVALID被断言之前从机取消断言TREADY。接下来章节给出了握手序列的例子。TVALID先于TREADY的握手图2-1中,主机发出了数据和控制信息并断言了TVALID信号为高。一旦主机断言了TVALID,主机发出的数据或控制信息必须保持不变,直到从机驱动TREADY信号为高表示可以接收数据和控制信息。在这种情况下,一旦从机断言TREADY为高,传输就会发生。箭头标示出了传输发生的位置。TREADY先于TVALID的握手图2-2中,从机在数据和控制信息有效之前驱动TREADY为高。这表示目标设备可以在一个ACLK周期内接收数据和控制信息。在这种情况下,一旦主机断言TVALID为高,则传输就会发生。箭头标示出了传输发生的位置。TVALID和TREADY同时发生的握手图2-3中,主机断言TVALID为高,从机在同一ACLK周期内也断言TREADY为高。在这种情况下,如图中箭头标注,传输在同一周期内发生。2.3数据信号本章节讲述了AXI4-流接口的数据信号要求。TDATA是AXI4-流接口的主要payload,用于从一个源设备到一个目标设备传输数据。2.3.1字节位置在一个数据流中,数据总线的低位字节是流中的较早传输的。对于一个没有空字节的、被充分打包的流,流中一个给定字节的位置可以使用以下方式来决定:在一个数据流中:字节n的序列从0开始向上编号序列中的每个传输t从0开始向上编号数据总线的宽度为wbytesINT(x)是数值x向下取整(rounded-down——向绝对值减小的方向舍入取整)因此字节n被包含在传输t中:t=INT(n/w)其(字节n)在字节位置b:b=n–(t*w)字节位置b被包含在:TDATA[(8b+7):8b]2.3.2字节类型AXI4-流协议定义了三种字节类型:数据字节一个数据字节必须被从源设备传输到目标设备。据字节的数量、对应的TDATA数据值,以及流中数据字节的相对位置(相对其他数据字节和位置字节)必须被保持在源设备和目标设备之间。位置字节一个位置字节必须被从源设备传输到目标设备。位置字节的数量和流中位置字节的相对位置(相对其他数据字节和位置字节)必须被保持在源设备和目标设备之间。与一个字节位置对应的TDATA数据值不要求在源设备和目标设备之间被传输。空字节一个空字节不包含信息。空字节可以被插入流中,也可以从流中被移除。不要求空字节在源设备和目标设备之间被传输。一个互联(interconnect)不能修改流中的数据字节或位置字节的数量或相对位置。允许互联(interconnect)插入或移除流中的空字节。空字节的插入可能会被某些操作请求,比如,传输中的数据和位置字节不足以组成完整的数据宽度而需要扩展宽度到较宽的数据总线宽度。主机和从机组件不要求支持空字节,因此,任何具有在流中插入空字节能力的互联(interconnect),在流到达不能处理空字节的目标设备之前,也应该能够移除空字节。2.3.3数据合并、组包及宽度转换理想的是能够适应一个流接口的数据宽度。这将允许构建一个接口宽度固定的组件,之后该组件可以被重用在一个不同宽度接口的系统设计中。适应能力强的接口宽度还可以使具有不同本地宽度的组件被组合在一起并共用一个公共的链路层。在大部分应用中,期望的接口宽度为2的次幂byte宽。但是该要求不是协议的要求,所以接口可以是一个byte整数倍的宽度。所有扩