FPGA-AXI4协议

一、什么是AXI

AXI是一种总线协议,该协议的第一个版本AXI3是ARM公司提出的AMBA3.0协议中最重要的部分。2010发布的AMBA4.0包含了AXI的第二个版本AXI4。

AXI4协议主要是给DDR3里面进行数据的存储,在AXI中称为突发。

AXI4包含3种类型的接口:

(1)AXI4:面向地址映射的接口,在单地址传输的情况下最大允许256个时钟周期的数据突发长度(突发数据)(地址映射模式)

(2)AXI4-Lite:一个轻量级的地址映射单次传输接口,适用于吞吐量较小的地址映射通信总线;

(3)AXI4-Stream:面向高速流数据传输,去掉了地址传输的功能,允许无限制的数据突发传输,无需考虑地址映射。

 二、AXI的优势

(1)高效:通过标准化的AXI接口,开发者只需要学习一种IP核的通讯协议即可;

(2)易用:针对具体应用提供合适的接口协议。

(3)标准化的AXI接口协议资源,不仅可以在xilinx官网上获得,也可以在全球范围内ARM的所有合作伙伴处获得。

(4)大量的IP core支持AXI4协议;

(5)大量的第三方AXI工具可提供多样的系统开发、验证和功能定制。

三、AXI4的读写操作

1.AXI4通道

AXI 协议(AXI4和AXI4-Lite)定义了5个通道,分别为:

  • 写地址通道
  • 写数据通道
  • 写响应通道
  • 读地址通道
  • 读数据通道

2. AXI4数据传输的过程

在单个通道上传输的一段数据称为传输。当reday和valid信号都为高电平而时钟出现上升沿时,就会发生传输。如上图所示,数据的传输发生在T3时期。

数据可以在主从设备间同步的双向传输,并且数据传输大小可以改变。AXI4将数据传输的突发长度限制为最大256。

3.AXI4读操作

一次AXI 读操作需要在AXI的两个读通道上完成多次数据传输。

首先,Master在读地址通道上发送读地址以及相应的控制信号给SLAVE,然后SLAVE将相应地址上的数据从读数据通道返回给Master,从而完成一次读事务。值得注意的是,Master给一次地址可以完成多个传输(Transfers),即完成多个数据的传输,也叫突发(Brust)

AXI4协议主从设备间的读操作使用独立的读地址和读数据通道,只需要一个地址就可以执行最大为256的突发长度的读操作。

(1)首先Master判断arready的信号是否为高电平,若该信号为高电平时,代表slave已经准备好接收新的地址信息,否则Master不能给Slave发送地址信息。

(2)当判断完成后,Master给Slave发送地址信息,即发送araddr;在进行地址发送时,arvalid为高电平,arvalid为高电平,发送araddr。

(3)当地址发送结束之后,slave就会通过read_data通道返回数据,master必须在rready和rvalid信号同时为高时,将数据读取,否则不能读取数据;当最后一个数据发送时,slave会将rlast信号同时拉高,代表最后一个数据发送完成。

4.AXI4写操作

 

 AXI写事务是在3个写通道上完成多次数据传输(transfers)

(1)MASTER将写地址及相应的控制信息通过写地址通道发送给SLAVE

(2)MASTER将需要写入该地址的数据通过写输入通道发送给SLAVE

(3)SLAVE将写结果通过写反馈通道发送给MASTER,表明写入是否成功

具体操作如下图所示:

 四、AXI4和AXI4-Lite接口信号

(1)全局信号

信号名

AXI4

AXI4-Lit

ACLK

全局时钟

ARESETN

全局复位,低有效

(2)写地址通道信号

信号名

AXI4

AXI4-Lit

AWID

写地址ID。这个信号用于写地址信号组的标记,用来标识数据传输顺序。详见协议定义。

不支持

AWADDR

写地址。写地址给出突发数据传输的第一个传输地址。

AWLEN

突发长度。给出突发传输中准确的传输个数。支持INCR和WRAP传输模式。(长度)

突发长度=awlen+1

不支持

AWSIZE

突发大小。这个信号用于确定突发传输中每个传输的大小。(宽度)

总线位宽=2^size Betyes

不支持

AWBURST

突发类型。该信息与突发大小信息一起,表示在突发过程中,地址如何应用于每个传输。支持INCR和WRAP传输模式。

不支持

AWLOCK

锁类型。该信号提供了关于传输原子特性的额外信息(普通或互斥访问)。AXI3支持,AXI4不支持

不支持

AWCACHE

缓存类型,建议值为0011。Memory type. This signal indicates how transactions are required to progress through a system.

AWPROT

保护类型,访问权限,建议值为000。

AWQOS

QoS标识符,xilinx AXI4不支持。

不支持

AWREGION

用于每个写操作的地址通道上的域标识符。通过该标识实现一个物理端口对应多个逻辑端口

不支持

AWUSER

xilinx AXI4不支持。

不支持

AWVALID

写地址有效信号。为高指示地址有效。

AWREADY

写地址准备信号为高表示从设备空闲,准备接收地址;为低表示从设备忙。

(3)写数据通道信号

信号名

AXI4

AXI-Lite

WDATA

写数据,32位到1024位宽

只支持32位宽

WSTRB

写字节选通,用于表示更新存储器的字节通道,对于数据总线的每8位数据有一位写选通信号。

从设备端可选择忽略。

WLAST

写最后一个数据指示信号。表示突发传输中的最后一个数据。

不支持

WUSER

xilinx AXI4不支持。

不支持

WVALID

写有效。为高指示数据有效。

WREADY

写准备。为高表示从设备空闲,准备接收数据;为低表示从设备忙。

(4)写响应通道

信号名

AXI4

AXI-Lite

BID

响应ID。写响应识别标记,BID值必须匹配AWID值。

不支持

BRESP

写响应。该信号表示写状态,可允许相应的表示为OKAY\EXOKAY\SLVERR\DECERR。

EXOKAY状态不支持

BUSER

xilinx AXI4不支持。

不支持

BVALID

写响应有效。为高指示响应数据有效。

BREADY

写响应准备。为高表示主设备空闲,准备接收写响应;为低表示主设备忙。

(5)读地址通道

信号名

AXI4

AXI-Lite

ARID

读地址ID。这个信号用于读地址信号组的标记。

不支持

ARADDR

读地址。读地址给出突发数据传输的第一个传输地址。

ARLEN

突发长度。给出突发传输中准确的传输个数。支持INCR和WRAP传输模式。

不支持

ARSIZE

突发大小。这个信号用于确定突发传输中每个传输的大小。

不支持

ARBURST

突发类型。该信息与突发大小信息一起,表示在突发过程中,地址如何应用于每个传输。支持INCR和WRAP传输模式。

不支持

ARLOCK

锁类型。该信号提供了关于传输原子特性的额外信息(普通或互斥访问)。

不支持

ARCACHE

缓存类型,建议值为0011。

ARPROT

保护类型,建议值为000。

ARQOS

QoS标识符,xilinx AXI4不支持。

不支持

ARREGION

用于每个读操作的地址通道上的域标识符。

不支持

ARUSER

xilinx AXI4不支持。

不支持

ARVALID

读地址有效信号。为高指示地址有效。

ARREADY

读地址准备信号。为高表示从设备空闲,准备接收地址;为低表示从设备忙。

(6)读数据通道

信号名

AXI4

AXI-Lite

RID

读ID标记,该信号是读数据信号组标记,由从设备产生RID,RID必须和读交易中的ARID匹配。

不支持

RDATA

读数据。32位到1024位宽

只支持32位宽

RRESP

读响应。该信号表示读状态,可允许相应的表示为OKAY\EXOKAY\SLVERR\DECERR。

EXOKAY状态不支持

RLAST

读最后一个数据指示信号。表示突发传输中的最后一个数据。

不支持

RUSER

xilinx AXI4不支持。

不支持

RVALID

读有效。为高指示数据有效。

RREADY

读准备。为高表示主设备空闲,准备接收数据;为低表示主设备忙。

(7)AXI4-Stream信号

信号名

默认值

功能

TVALID

No

N/A

Stream读写数据有效。为高指示数据有效。

TREADY

Yes

1

Stream读写读准备。为高表示对端设备空闲,准备接收数据;为低表示对端设备忙。

TDATA

Yes

0

Stream读写数据,8到4096位宽。

TSTRB

Yes

同TKEEP,否则为1

字节选通信号。用于表示更新存储器的字节通道,对于数据总线的每8位数据有一位选通信号。

TKEEP

Yes

1

字节选通信号。TKEEP未被确认的那些相关的字节是空字节,可以从数据流中去除。

TLAST

Yes

0

表明包的边界。

TID

Yes

0

数据流标识符。

TDEST

Yes

0

数据流路由信息。

TUSER

Yes

0

用户定义的边带信息,这些信息能伴随数据流进行发送。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
FPGA(现场可编程门阵列)是一种灵活可编程的硬件平台,可以用于实现各种不同的电路功能。而AXI(Advanced eXtensible Interface)是一种高性能、低功耗的总线接口协议,用于连接FPGA与外部设备,如DDR3(双倍数据速率3代)内存。 要通过AXI读取DDR3内存数据,首先需要在FPGA上实例化AXI接口和DDR3控制器模块。AXI接口模块负责与外部设备通信,而DDR3控制器模块则负责管理DDR3内存存取操作。 在设计中,需要按照AXI协议规范进行接口的连接和配置。AXI协议定义了读写操作的时序和数据传输约束。通过连接AXI接口与DDR3控制器,FPGA可以通过AXI总线发送读取指令到DDR3内存,然后读取数据返回。 具体而言,通过AXI读取DDR3的操作步骤如下: 1. 配置AXI接口和DDR3控制器模块,并确保其正确连接。 2. 在FPGA中编写相应的代码,按照AXI协议要求构建读取指令。 3. 将读取指令通过AXI接口发送到DDR3控制器模块。 4. DDR3控制器模块接收到读取指令后,根据指令的地址信息,从DDR3内存中读取相应数据。 5. 读取的数据通过AXI接口返回给FPGA,供后续处理使用。 需要注意的是,AXI与DDR3之间的通信速度和性能受到FPGA资源、时钟频率、数据宽度等因素的影响。因此,在设计中需要根据实际情况进行综合考虑,以保证数据的准确读取和传输。同时,还需要确保AXI接口和DDR3控制器模块的接口匹配和正确配置,以确保数据的正确传输和存取。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值