赞
踩
总线、接口和协议,这三个词常常被联系在一起,但是我们要明白他们的区别。总线是一组传输通道,是各种逻辑器件构成的传输数据的通道,一般由数据线、地址线、控制线等构成。接口是一种连接标准,又常常被称之为物理接口。协议是传输数据的规则。
在数字电路中只能传输二进制数0和1,因此需要一组信号才能高速的传输信息,这一组信号就成了接口。AXI(Advanced eXtensible Interface)是一种总协议。AXI4包含3种类型的接口(或者说ZYNQ的三种AXI总线)。
(1)AXI4:(For high-performance memory-mapped requirements),主要面向高性能地址映射通信的需求,是面向地址映射的接口,允许最大256轮的数据突发传输。
(2)AXI4-Lite:(For simple, low-throughput memory-mapped communication),是一个轻量级的地址映射单次传输接口,占用很少的逻辑单元。适用于吞吐量较小的地址映射通信总线。
(3)AXI4-Stream:(For high-speed streaming data.)面向高速流数据传输;去掉了地址项,允许无限制的数据突发传输规模。
需要注意的是,AXI4:面向地址映射的接口,在单地址传输的情况下最大允许256个时钟周期的数据突发长度;AXI4-Lite:一个轻量级的地址映射单次传输接口,占用较少的资源;AXI4-Stream:去掉了地址传输的功能,允许无限制的数据突发传输,无需考虑地址映射。
在这里我们首先解释一下存储映射(Meamory Map)这一概念。如果一个协议是存储映射的,那么主机所发出的会话(无论读或写)就会标明一个地址。这个地址对应于系统存储空间中的一个地址,表明是针对该存储空间的读写操作。
AXI4 协议支持突发传输,主要用于处理器访问存储器等需要指定地址的高速数据传输场景。AXI-Lite为外设提供单个数据传输,主要用于访问一些低速外设中的寄存器。而 AXI-Stream 接口则像 FIFO 一样,数据传输时不需要地址,在主从设备之间直接连续读写数据,主要用于如视频、高速 AD、PCIe、DMA 接口等需要高速数据传输的场合。
总共有9个接口:
(1)AXI-GP接口(4个):是通用的AXI接口,包括两个32位主设备接口和两个32位从设备接口,用该接口可以访问PS中的片内外设。这个对应AXI-lite总线使用。这接口我用的挺多,传输速度也不快,用于PS与PL少慢数据通信。
(2)AXI-HP接口(4个):是高性能/带宽的标准的接口,PL模块作为主设备连接。主要用于PL访问PS上的存储器(DDR和On-Chip RAM)。PS都作为从设备,对应AXI-full总线。因为这个高速传输接口,PS太慢了,要顺着PL走。
(3)AXI-ACP接口(1个):是ARM多核架构下定义的一种接口,中文翻译为加速器一致性端口,用来管理DMA之类的不带缓存的AXI外设,PS端是Slave接口。这个直接通往ARM内部,不经过DDR,所以速度是最快的。
协议的制定是要建立在总线构成之上的。因此说AXI4,AXI4-Lite,AXI4-Stream都是AXI4协议。AXI总线协议的两端可以分为分为主(master)、从(slave)两端,他们之间一般需要通过一个AXI Interconnect相连接。作用是提供将一个或多个AXI主设备连接到一个或多个AXI从设备的一种交换机制。
主设备和从设备需要按照约定好的数据传输方式来发送和接收数据。AXI 协议就是描述了主设备和从设备之间的数据传输方式。在该协议中,主设备和从设备之间通过握手信号建立连接。在这里解释一下握手的含义,在通信过程中,主从之间会进行协调,只有等接收方准备好之后,才能开始数据传输,这种机制我们称之为“握手”。
AXI Interconnect的主要作用是:当存在多个主机以及从机器时,AXI Interconnect负责将它们联系并管理起来。由于AXI支持乱序发送,乱序发送需要主机的ID信号支撑,而不同的主机发送的ID可能相同,而AXI Interconnect解决了这一问题,他会对不同主机的ID信号进行处理让ID变得唯一。
AXI协议将读地址通道,读数据通道,写地址通道,写数据通道,写响应通道分开,各自通道都有自己的握手协议。每个通道互不干扰却又彼此依赖。这是AXI高效的原因之一。
AXI协议的五个通道都有各自的VALID/READY握手信号对。每个通道握手信号对的名称如下图所示:
图 3.5.1 各通道握手信号名称
AXI4 所采用的是一种 READY,VALID 握手通信机制。即主从模块进行数据通信前,根据操作对各所用到的数据、地址通道进行握手。主要操作包括传输发送者A等到传输接受者B的READY信号后,A将数据与VALID信号同时发送给B。
简单来说主从双方进行数据通信前,有一个握手的过程。传输源产生 VLAID 信号来指明何时数据或控制信息有效。而目地源产生READY信号来指明已经准备好接受数据或控制信息。传输发生在VALID和 READY信号同时为高的时候,如下图所示:
在上图中,ACLK 为时钟信号,在 AXI 协议中,所有的输入信号都在是 ACLK 的上升沿采样,所有的输出信号必须在 ACLK 的上升沿之后才能改变。在 T1 之后,源端将 VALID 拉高,表明 INFORMATION信号线上传输的是有效的地址、数据或者控制信息。目的端在 T2 之后将 READY 拉高,表明它已经准备好接收数据,此时源端必须保持 INFORMATION 数据稳定不变,直到 T3 时刻进行数据传输。
需要注意的是,源端不允许等目的端的 READY 信号拉高之后,才将 VALID 信号置为有效状态。而且,一旦 VALID 拉高,源端必须保持其处于有效状态,直至成功握手(在时钟上升沿检测到 VALID 和 READY同时为有效状态)。
对于AXI总线形式接口的仿真,触发信号应该设置为READY和VLAID同时为1触发,如下图所示。这里设置的是AREADY和AVLAID同时为1触发,表示只有读通道触发,所以读地址通道(AR channel)和读数据通道(R channel)都有显示。而写地址通道(AW channel)显示的是NO Write Addr Cmds,写数据通道(W channel)显示的是NO Write data Cmds。此时写响应通道(B channel)也没有写响应。
反之,如果设置的是WREADY和WVLAID同时为1触发,表示只有写通道触发,所以写数据通道(W channel),写数据通道(W channel)和写响应通道(B channel)都有显示。而读地址通道(AR channel)显示的是NO read Addr Cmds,读数据通道(R channel)显示的是NO read data Cmds。
AXI支持三种突发类型:
FIXED(AxBURST[1:0]=0b00):固定突发模式,每次突发传输的地址相同;
INCR(AxBURST[1:0]=0b01):增量突发模式,突发传输地址递增,递增与突发尺寸相关。
WRAP(AxBURST[1:0]=0b10):回卷突发模式,突发传输地址可溢出性递增,突发长度仅支持2,4,8,16。地址空间被划分为长度【突发尺寸*突发长度】的块,传输地址不会超出起始地址所在的块,一旦递增超出,则回到该块的起始地址。
(1)突发式读的时序
当地址出现在地址总线后,传输的数据将出现在读数据通道上。设备保持VALID 为低直到读数据有效。为了表明一次突发式读写的完成,设备用 RLAST 信号来表示最后一个被传输的数据。
(2)突发式写的时序
这一过程的开始时,主机发送地址和控制信息到写地址通道中,然后主机发送每一个写数据到写数据通道中。当主机发送最后一个数据时,WLAST 信号就变为高。当设备接收完所有数据之后他将一个写响应发送回主机来表明写事务完成。
AXI4总线和AXI4-Lite总线具有相同的组成部分:
(1)读地址通道(AR channel):包含ARVALID,ARADDR,ARREADY信号;
(2)读数据通道(R channel):包含RVALID, RDATA,RREADY,RRESP信号;
(3)写地址通道(AW channel):包含AWVALID,AWADDR,AWREADY信号;
(4)写数据通道(W channel):包含WVALID,WDATA,WSTRB, WREADY信号;
(5)写应答通道(B channel):包含BVALID,BRESP,BREADY信号;
(6)系统通道:包含:ACLK,ARESETN信号。
AXI协议的五个通道都有各自的VALID/READY握手信号对,每个通道握手信号对的名称如下图所示,
图 16.1.4 各通道握手信号名称
而AXI4-Stream总线的组成有:
(1)ACLK信号:总线时钟,上升沿有效;
(2)ARESETN信号:总线复位,低电平有效;
(3)TVALID信号:主机告诉从机数据本次传输有效;
(4)TREADY信号:从机告诉主机做好传输准备;需要注意的是,只有当TVAILD和TREADY信号同时为高电平时,此时握手成功,才传输数据。
(5) TLAST信号:主机告诉从机该次传输为突发传输的结尾;当TLAST为高时,表明当前数据是最后一次传输。
(6)TDATA信号:数据,可选宽度32、64、128、256bit;
(7)TKEEP信号:类似于字节修饰符,表示数据是有效的。
(8) TSTRB信号:每bit对应TDATA的一个有效字节,宽度为TDATA/8;
(9)TUSER信号:用户定义信号,宽度为128bit。
下面对这些信号的管脚做一个具体的说明。
图3.6.1是使用读地址和读数据通道实现读传输过程的示意图:
图3.6.1 读传输过程示意图
从上图中可以看到,在一个读传输过程中,主机首先在读地址通道给出读地址和控制信号,然后从机由读数据通道返回读出的数据。另外我们需要注意的是,这是一次突发读操作,主机只给出一个地址,从该地址连续突发读出四个数据。
写传输过程如图 3.6.2 所示,它用到了写地址、写数据和写响应三个通道。主机在写地址通道给出写地址和控制信号,然后在写数据通道连续突发写四个数据。从机在接收数据之后,在写响应通道给出响应信号。
图3.6.2 写传输过程示意图
AXI总线是基于突发传输的总线,若主机要开始一次突发传输,需要传输一次地址和相关控制信号,之后从机自动计算地址,但一次突发传输的地址范围不能跨越4KB。
(1)突发长度(AxLEN)
突发长度为每次突发传输的传输次数,范围限制116(AXI4增量模式1256)且不能跨越4kb的地址空间,每次突发传输不允许提前终止(可以通过关闭所有数据字段的方式使一段传输数据无效,但传输行为必须完成)。每次传输的突发长度为AxLEN[3:0] + 1(AXI增量模式AxLEN[7:0] + 1)。
ARLEN[7:0]:读地址通道的突发长度接口;
AWLEN[7:0]:写地址通道的突发长度接口。
对于回卷模式突发传输,突发长度仅能是2,4,8或16。
(2)突发尺寸(AxSIZE)
突发尺寸为每次传输的byte数量,与突发传输的地址预测相关性很强。每次的突发尺寸不能超过数据通道的宽度;若突发尺寸小于数据通道宽度,需要指定哪些位数是有效的。
ARSIZE[2:0]:读地址通道突发尺寸;
AWSIZE[2:0]:写地址通道突发尺寸。
AXIS 为 AXI Stream 的缩写
1、axi主要负责控制层面,axis主要负责数据层面。
2、axi的工作模式:
axi总线分为五个通道:
读地址通道,包含ARVALID, ARADDR, ARREADY信号;
写地址通道,包含AWVALID,AWADDR, AWREADY信号;
读数据通道,包含RVALID, RDATA, RREADY, RRESP信号;
写数据通道,包含WVALID, WDATA,WSTRB, WREADY信号;
写应答通道,包含BVALID, BRESP, BREADY信号;
系统通道,包含:ACLK,ARESETN信号;
其中ACLK为axi总线时钟,ARESETN是axi总线复位信号,低电平有效;读写数据与读写地址类信号宽度都为32bit;READY与VALID是对应的通道握手信号;WSTRB信号为1的bit对应WDATA有效数据字节,WSTRB宽度是32bit/8=4bit;BRESP与RRESP分别为写回应信号,读回应信号,宽度都为2bit,‘h0代表成功,其他为错误。
3、axis工作模式
axis分为:
tready信号:从告诉主做好传输准备;
tvalid信号:主告诉从数据传输有效;
tlast信号:主告诉从该次传输为突发传输结尾;
tdata信号:数据,可选宽度32,64,128,256bit
tstrb信号:为1的bit为对应tdata有效字节,宽度为tdata/8
tuser信号 :用户定义信号,宽度为128bit
aclk信号:总线时钟,上升沿有效;
aresetn信号:总线复位,低电平有效。
4、axi与axis是AXI4总线中通信复杂度较低的两条总线,最大开发难度存在于axi的控制平面向axis的数据平面下发参数时,由于axi与axis时钟频率不同而产生的跨时钟域数据传输问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。