总线:是指传输通道,是各种逻辑器件构成的传输数据的通路,一般由数据线、地址线、控制线组成;
接口:是一种连接标准,又被称为物理接口;
协议:是指传输数据的规则。
三种AXI总线分别是:
AXI4:面向高性能映射通信需求,是面向地址映射的接口,允许最大突发长度256轮
AXI4-Lite:轻量级地址映射单次传输接口,占用较少的逻辑资源
AXI4-Stream:面向高速流传输,没有地址项,允许无限制的数据突发传输规模
三种AXI接口分别是:
AXI-GP接口:通用的AXI接口,包括两个32位主设备接口和两个32位从设备接口,通过该接口可以访问PS片内外设。
AXI-HP接口:高性能带宽的标准接口,PL模块作为主设备连接。主要用于PL访问PS上的存储器(DDR和片内RAM)。
AXI-ACP接口:是ARM多核架构定义的一种接口,中文翻译为加速一致性端口,用来管理DMA之类的不带缓存的AXI外设,PS端是SLAVE接口。
一、AXI总线
1.AXI总线概述
AXI(Advanced extensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA3.0中最重要的部分,是一种面向高性能、高带宽、高延迟的片内总线。AMBA4.0将其修改升级为AXI4.0。
在Xilinx系列FPGA及其有关IP核中,经常见到AXI总线接口,AXI总线又分为三种:AXI-Lite,AXI-Full以及AXI-Stream,其中AXI-Lite和AXI-Full都是基于memory map的形式实现数据传输(既包括地址总线),而AXI-Stream是以数据流的形式传输,无地址。
其中AXI-Lite是AXI-Full的简化版,适合小批量的数据传输,常用来进行命令的传输,IP核的初始化等。
AXI-Full则适用于大批量,高性能的数据传输。
1.1 AXI协议特点
AMBA AXI协议支持高性能、高频率系统设计。
·适合高带宽低延时设计
·无需复杂的桥就能实现高频操作
·能满足大部分器件的接口要求
·适合高初始延时的存储控制器
·提供互联架构的灵活性与独立性
·向下兼容已有的AHB和APB接口
关键特性:
·分离的地址/控制、数据相位
·使用字节选通,支持非对齐的数据传输
·基于burst传输,只需传输首地址
·读写数据通道分离,能提供低功耗DMA
·支持多种寻址方式
·支持乱序传输
·易于添加寄存器级来进行时序收敛
1.2 AXI读写架构
AXI协议是基于burst的传输,并且定义了以下5个独立的传输通道:
·读地址通道;
·读数据通道;
·写地址通道;
·写数据通道;
·写响应通道;
地址通道携带控制消息,用于描述被传输的数据属性;数据传输使用写通道来实现master到slave的传输,slave使用写响应通道来完成一次写传输;读通道用来实现从slave到master的传输。
通道名称 | 通道功能 | 数据流写 |
Read address | 读地址通道 | 主机→从机 |
Read data | 读数据通道 | 从机→主机 |
Write address | 写地址通道 | 主机→从机 |
Write data | 写数据通道 | 主机→从机 |
Write response | 写响应通道 | 从机→主机 |
读架构:
写架构
AXI使用基本VALID/READY的握手机制数据传输协议,传输源端使用VALID表明地址/控制信号、数据是有效的,目的端使用READY表明自己能够接受信息。
·读/写地址通道:读、写传输每个都有自己的地址通道,对应的地址通道承载着对应传输的地址控制信息。
·读数据通道:写数据通道承载着读数据和读响应信号包括数据总线(8/16/32/64/128/256/512/1024 bit)和指示读传输完成的读响应信号。
·写数据通道:写数据通道的数据信息被认为是缓冲(buffered)了的,master无需等待slave对上次写传输的确认即可发起一次新的写传输。写通道包括数据总线(8/16…1024 bit)和字节线(用于指示8bit数据信号的有效性)。
·写响应通道:slave使用写响应通道对写传输进行响应。所有的写传输需要写响应通道的完成信号。
1.3接口和互联
AXI协议提供单一的接口定义,能用在下述三种接口之间:master/interconnect、slave/interconnect、master/slave。可以使用以下几种典型的系统拓扑架构:
·共享地址与数据总线
·共享地址总线,多数据总线
·multilayer多层,多地址总线,多数据总线
在大多数系统中,地址通道的带宽要求没有数据通道高,因此可以使用共享地址总线,多数据总线结构来对系统性能和互联复杂度进行平衡。
1.4复位
复位信号可以是异步复位,但必须同步释放,复位时,信号要求如下:
·主机驱动的所有VALID信号(ARVALID,AWVALID和WVALID)必须被拉低 ·从机驱动的所有VALID信号(RVALID和BVALID)必须被拉低 ·其他信号无要求 |
2.信号描述
2.1全局信号
信号名 | 源 | 描述 |
ACLK | 时钟源 | 全局时钟信号 |
ARESETn | 复位源 | 全局复位信号,低有效 |
2.2写地址通道信号
信号名 | 源 | 描述 |
AWID | 主机 | 写地址ID,用来标志一组写信号 |
AWADDR | 主机 | 写地址,给出一次写突发传输的写地址 |
AWLEN | 主机 | 突发长度,给出突发传输的次数 |
AWSIZE | 主机 | 突发大小,给出每次突发传输的字节数 |
AWBURST | 主机 | 突发类型,FIXED,INCR,WRAP |
AWLOCK | 主机 | 总线锁信号,可提供操作原子性,normal,exclusive,locked |
AWCACHE | 主机 | 内存Cache类型,表明一次传输是怎样通过系统的bufferable,cacheable,read-allocate,write-allocate |
AWPORT | 主机 | 保护类型,表明一次传输的特权级及安全等级 |
AWQOS | 主机 | 质量服务QoS。可作为安全级标志 |
AWREGION | 主机 | 区域标志,能实现单一物理接口对应的多个逻辑接口,也可以对某些地址进行保护 |
AWUSER | 主机 | 用户自定义信号 |
AWVALID | 主机 | 有效信号,表明此通道的地址控制信号有效 1=地址和控制信息有效 0=地址和控制信息无效 这个信号会一直保持,直到AWREADY变为高 |
AWREADY | 从机 | 表明从设备可以接收地址和对应的控制信号 写地址准备好。这个信号用来指明设备已经准备好接收地址和控制信息。 1=设备准备好 0=设备没准备好 |
2.3写数据通信信号
信号名 | 源 | 描述 |
WID | 主机 | 一次写传输的ID |
WDATA | 主机 | 写数据 |
WSTRB | 主机 | 写数据有效的字节线,用来表明哪8bits数据是有效的 |
WLAST | 主机 | 表明此次传输是最后一个突发传输 |
WUSER | 主机 | 用户自定义信号 |
WVALID | 主机 | 写有效,表明此次写有效 |
WREADY | 从机 | 表明从机可以接收写数据 |
2.4写响应通道信号
信号名 | 源 | 描述 |
BID | 从机 | 写响应ID |
BRESP | 从机 | 写响应,表明写传输的状态,OKAY,EXOKAY,SLVER,DECERR |
BUSER | 从机 | 用户自定义 |
BVALID | 从机 | 写响应有效 |
BREADY | 主机 | 表明主机能够接收写响应 |
2.5读地址通道信号
信号名 | 源 | 描述 |
ARID | 主机 | 读地址ID,用来标志一组写信号 |
ARADDR | 主机 | 读地址,一次突发读的首地址 |
ARLEN | 主机 | 突发长度,给出突发传输的次数 |
ARSIZE | 主机 | 突发大小,给出每次突发传输的字节数 |
ARBURST | 主机 | 突发类型,FIXED,INCR,WRAP |
ARLOCK | 主机 | 总线锁信号,可提供操作原子性,normal,exclusive,locked |
ARCACHE | 主机 | 内存Cache类型,表明一次传输是怎样通过系统的bufferable,cacheable,read-allocate,write-allocate |
ARPORT | 主机 | 保护类型,表明一次传输的特权级及安全等级 |
ARQOS | 主机 | 质量服务QoS。可作为安全级标志 |
ARREGION | 主机 | 区域标志,能实现单一物理接口对应的多个逻辑接口,也可以对某些地址进行保护 |
ARUSER | 主机 | 用户自定义信号 |
ARVALID | 主机 | 有效信号,表明此通道的地址控制信号有效 |
ARREADY | 从机 | 表明从设备可以接收地址和对应的控制信号 |
2.6读数据通道信号
信号名 | 源 | 描述 |
RID | 从机 | 一次读传输的ID |
RDATA | 从机 | 读数据 |
RRESP | 从机 | 读响应,表明读传输的状态 |
RLAST | 从机 | 表明读突发的最后一次传输 |
RUSER | 从机 | 用户自定义 |
RVALID | 从机 | 表明此通道信号有效 |
RREADY | 主机 | 表明主机能够接收读数据和响应信息 |
2.7低功耗接口信号
信号名 | 源 | 描述 |
CSYSREQ | 时钟控制器 | 系统低功耗请求,此信号从“时钟控制器”到“外设”,使外围设备进入低功耗状态 |
CSYSACK | 外设 | 低功耗请求应答 |
CSYTIVE | 外设 | Clock active 1=外围设备时钟请求 0=外围设备时钟无请求 |
每个数据通道有独立的xVALID/xREADY握手信号对。