一、AXI总线概述
1.三种AXI总线
AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映射通信的需求,是面向地址映射的接口,允许最大 256 轮的数据突发传输;
AXI4-Lite:(For simple, low-throughput memory-mapped communication )是一个轻量级的地址映射单次传输接口,占用很少的逻辑单元。
AXI4-Stream:(For high-speed streaming data.)面向高速流数据传输;去掉了地址项,允许无限制的数据突发传输规模。
2.AXI通道
AXI4 总线和 AXI4-Lite 总线具有相同的组成部分:
(1)读地址通道,包含 ARVALID, ARADDR, ARREADY 信号;
(2)读数据通道,包含 RVALID, RDATA, RREADY, RRESP 信号;
(3)写地址通道,包含 AWVALID,AWADDR, AWREADY 信号;
(4)写数据通道,包含 WVALID, WDATA,WSTRB, WREADY 信号;
(5)写应答通道,包含 BVALID, BRESP, BREADY 信号;
(6)系统通道,包含:ACLK,ARESETN 信号。
AXI4-Stream 总线的组成有:
(1)ACLK 信号:总线时钟,上升沿有效;
(2)ARESETN 信号:总线复位,低电平有效
(3)TREADY 信号:从机告诉主机做好传输准备;
(4)TDATA 信号:数据,可选宽度 32,64,128,256bit
(5)TSTRB 信号:每一 bit 对应 TDATA 的一个有效字节,宽度为 TDATA/8
(6)TLAST 信号:主机告诉从机该次传输为突发传输的结尾;
(7)TVALID 信号:主机告诉从机数据本次传输有效;
(8)TUSER 信号 :用户定义信号,宽度为 128bit。
二、AXI4协议
AXI4 所采用的是一种 READY,VALID 握手通信机制,简单来说主从双方进行数据通信前,有一个握手的过程。
1.时序
其时序如图:
2.信号
master
FPGA——DDR3 AXI控制接口实现 - CNL中子 - 博客园 (cnblogs.com)
信号介绍
//system
input clk; //时钟
input rst_n; //复位
input init_calib_complete; //DDR3存储器初始化和校准已经完成
//read address
input m_axi_arready; //读地址就绪 指明设备已经准备好接受数据了
output m_axi_araddr; //读地址,一次读突发传输的读地址
output m_axi_arvalid; //读地址有效。信号一直保持,直到 ARREADY 为高
output m_axi_arid ; //读地址 ID,用来标志一组读信号
output m_axi_arsize ; //突发式读大小,每个突发传输数据的字节数
output m_axi_arburst; //突发式读类型
output m_axi_arlock ; //总线锁信号,可提供操作的原子性
output m_axi_arcache; //Cache 类型
output m_axi_arprot ; //保护类型,一次传输的特权级及安全等级
output m_axi_arqos ; //质量服务 QoS
//write address
input m_axi_awready; //写地址准备好 来指明设备已经准备好接受地址和控制信息了
output m_axi_awvalid; //写地址有效
output m_axi_awlen; //突发式写的长度,突发式写所传输的数据的个数。数据个数= AWLEN + 1 "Burst Length: 0-255"
output m_axi_awid ; //写地址ID
output m_axi_awsize ; //每个数据的字节数 "Burst Size: Fixed 2'b011"
output m_axi_awburst; //突发式写的类型 "Burst Type: Fixed 2'b01(Incremental Burst)"
output m_axi_awlock ; //锁类型 "Lock: Fixed 2'b00"
output m_axi_awcache; //Cache 类型。这信号指明事务的 bufferable、cacheable、write-through、write-back、allocate attributes 信息 " Cache: Fiexd 2'b0011"
output m_axi_awprot ; //保护类型,表明一次传输的特权级及安全等级 "Protect: Fixed 2'b000 "
output m_axi_awqos ; //质量服务 QoS "QoS: Fixed 2'b0000"
output m_axi_awaddr; //写地址,给出一次写突发传输的写地址
//write data
input m_axi_wready; //写就绪 指明设备已经准备好接受数据了
output m_axi_wstrb ; //写数据有效的字节阀门,用来表明哪 8bits 数据是有效的。WSTRB[n]标示的区间为 WDATA[(8*n)+7:(8*n)]
output m_axi_wdata ; //写的数据
output m_axi_wvalid; //写有效
output m_axi_wlast; //此次传输是最后一个数据传输
//write respose
input m_axi_bid; //写响应 ID , 这个数值必须与 AWID 的数值匹配
input m_axi_bvalid; //写响应有效
input m_axi_bresp; //写响应 这个信号指明写事务的状态
output m_axi_bready; //接受响应就绪。该信号表示主机已经能够接受响应信息
//read data
input m_axi_rid; //读响应 ID , 这个数值必须与 ARID 的数值匹配
input m_axi_rvalid; //读数据有效
input m_axi_rlast; //读事务传送的最后一个数据
input m_axi_rresp; //读响应。这个信号指明读传输的状态
output m_axi_rready; //读数据就绪
三、AXI通道信号定义