最近,因为需要,学习了AXI总线协议和DDR3相关的知识,花了很多的时间去找各种相关的资料,深刻明白查资料的不容易,这里将所学到的东西做一个总结,同时给需要的人提供一些便利,有问题的欢迎一起讨论学习、共同进步。
1 AXI总线
首先来说一下有关AXI总线的知识,刚开始听到AXI的时候,因为不太了解的原因,觉得它非常复杂,其实我想告诉大家的是,等我们去了解它的时候,会发现它并没有想象中的那么复杂,和其他的总线很类似,只是用了不同的协议而已。
1.1 AXI总线的特点
AXI总线支持高性能、高频率系统设计,具有以下一些特点:(1)它适合高带宽的低延时设计,满足大部分器件的接口,适合高初始延时的存储控制器,提供互联结构的灵活性与独立性,向下兼容AHB/APB这些已有的接口。(2)它具有分离的地址/控制、数据相位。(3)使用字节选通,支持非对齐的数据传输。(4)基于(BURST)突发传输,只需传输首地址。(5)读、写数据通道分离,能提供低功耗DMA。(6)支持多种寻址方式、支持乱序传输、易于添加寄存器级进行时序收敛,AXI的设计目标可以在高时钟频率下运行,并在延迟时间长的状况下仍可以达到最高数据吞吐率。AXI总线将读/写结果相分离,将数据写入和数据读出的信号相分离,可同时进行写入和读出操作。其实主要就是讲,AXI是一种高性能的总线,它的速度很快。突发传输是指,给出一个首地址之后,剩下的数据会依次传输,传输对应的地址是根据数据位宽来自增的,比如32bit的数据,突发长度为16(突发长度指的是每次突发传输所需传输数据的次数),那么它每次传输一个数据对应4BYTE,地址增加4,那么一次突发传输的地址就会增加64。
1.2 AXI总线的互联
如图所示,AXI协议提供单一的接口定义,能用在下述三种接口之间:master/interconnect、slave/interconnect、master/slave。此外,它可以使用以下几种典型的系统拓扑架构:(1)共享地址与数据总线;(2)共享地址总线,多数据总线;(3)multilayer多层,多地址总线,多数据总线。
一般情况下,我们对数据位宽要求比较高,而对地址总线的要求较低一些,因此可以采用共享地址总线、多数据总线的结构。
2 AXI的信号描述
2.1 全局信号
全局信号有时钟信号和复位信号。
2.1.1 时钟(ACLK)
每个AXI interface都要求有一个全局时钟信号ACLK,数据的传输都是基于这个ACLK来实现的。在主机和从机接口上,输入信号与输出信号之间不能存在组合逻辑路径。
2.1.2 复位(ARESETn)
ARESETn信号是一个全局复位信号,低有效。对于它的描述是这样的:
在复位期间:(1)主机接口必须将ARVALID,AWVALID,WVALID拉低;(2)从机接口必须将RVALID,BVALID拉低;(3)其他的信号可以是任意值。容易理解的是,VALID信号为高的最早时刻是ARESETn信号拉高后的第一个ACLK的上升沿。
2.2 其他信号
AXI有五个通道,每个通道都有各自对应的信号,但是有很多平时都不太能用到,这里只说一些比较常用的信号。
2.2.1 写地址通道信号
AWADDR是写地址,一次突发写的首地址。AWLEN是突发长度,突发写传输数据的个数。
AWSIZE是突发大小,每次突发传输的字节数。AWBURST是突发类型,有FIXED,INCR,WRAP三种类型。AWVALID表明此通道的地址控制信号有效。AWREADY表明从设备已经准备好接受地址和控制信息。
2.2.2 写数据通道信号
WDATA是写主机向从机发送的数据。WSTRB是写数据有效的字节线,用来表明哪8bits数据是有效的,它类似于一个频闪信号,可以将写入数据的某些位设为无效。WVALID表示主机已经准备好向从机发送的数据。WREADY表明从机可以接收主机发送的数据。
2.2.3 写响应通道信号
BRESP是写响应信号,表明写事务的状态,有OKAY,EXOKAY,SLVERR,DECERR四种状态。BVALID表示从机已经将写响应信号准备好。BREADY表示能够接收写响应信号。
2.2.4 读地址通道信号
ARADDR是读地址,代表一次突发读的首地址。ARLEN是突发长度,突发读传输数据的个数。ARSIZE是突发大小,每次突发传输的字节数。ARBURST突发类型,分别是FIXED,INCR,WRAP。ARVALID表示此通道的地址控制信息有效。ARREADY表示从机已经准备好接收地址和控制信息。
2.2.5 读数据通道信号
RDATA是主机从从机中读取的数据。RRESP是读响应信号,表示读事务的状态。RLAST是突发读传输的最后一个数据。RVALID表明从机已经将要读取的数据准备好。RREADY表明主机能够读取从机的数据。
3 AXI的五个通道
前面提到过,AXI将读写通道分离,可以同时进行读/写操作。其实,如下图所示,AXI具有5个双向流量控制的通道(通过VALID/READY握手协议,传输双方都可以控制传输速率)。这里借用他人的图片进行说明。
AXI协议是基于VALID/READY的握手机制进行传输的。VALID信号为高表示的是发送方的数据已经准备好,可以进行发送;READY信号为高则表示接收方可以进行数据的接收,只有当VALID信号和READY信号同时为高时,数据才能进行传输。
这里有一个握手依赖关系需要说明,简单理解就是,VALID和READY信号之间没有任何依赖,谁前谁后都可以,只有在双发同时为高时,才表示握手成功。
解释了VALID/READY握手机制,再理解AXI的五个通道就容易多了。AXI具有写地址通道、写数据通道、写响应通道、读地址通道以及读数据通道这五个通道,在传输时互不干扰。以写时序为例,当主机需要发送数据给从机时,首先在写地址通道握手成功后,向从机写入数据的写入地址,然后在写数据通道成功握手之后,向从机写入需要发送的数据,WLAST信号代表发送到最后一个数据,最后,在写入成功后,从机通过写响应通道,向主机返回响应信号(同时需要握手成功才能传输)。读时序与之类似,不过需要注意的是,读传输也有一个响应信号,它是在读数据通道中进行传输的。
4 AXI的突发传输机制
AXI总线是基于BURST传输的,所谓突发传输的概念在上面已经提到了,就是给定一个突发长度LEN,一次传输就可以传输LEN个数据,地址会根据数据位宽自加。
4.1 传输流程
(1)起始地址(AxADDR)->突发传输长度(AxLEN)->数据宽度(AxSIZE)->突发类型(AxBURST)。
(2)从机在接到起始地址后,一次接收写数据或将数据读取给主机。
4.2 突发传输类型
(1)FIXED:突发传输中所有数据使用的起始地址。
(2)INCR:后序的数据的地址在起始地址的基础上递增,递增幅度与传输宽度相同。(最常用的传输类型,假设传输数据位宽为32位,即突发大小为4个字节,则每次地址自增4;数据的位宽可以是8,16,32,64,128,256,512,1024bits)。
(3)WRAP:首先会根据起始地址计算得到绕回的边界的地址,在到达这个地址后会重新回到起始地址,在其他情况下与第二种类型一样。地质边界可通过下式计算:
Wrap_Boundary=(INT(Start_Address / (Number_Bytes x Burst_Length))) x (Number_Bytes x Burst_Length)
4.3 突发传输限制
(1)WRAP模式下,突发传输长度只能是2,4,8,16,而在INCR模式下,AXI4接口可以达到1~256的突发长度。
(2)在一次突发传输中,地址不能跨越4KB地址边界(4KB=4096BYTE)。
(3)一次突发传输,必须完成所有的数据传输,不能提前结束(可以通过WSTRB信号将一些不想要的信号设置为无效)。
以上就是对AXI一些常用知识的介绍,更多的内容可以参考以下两个博客,我觉得他们写的特别好,有很多东西都是看了他们的文章才明白的。https://blog.csdn.net/ivy_reny/article/details/56274238
https://blog.csdn.net/meng1506789/article/details/111565579文章来源:https://www.toymoban.com/news/detail-481655.html
另外可以找一下正点原子ZYNQ系列中AXI的讲解,讲的比较比较详细。文章来源地址https://www.toymoban.com/news/detail-481655.html
到了这里,关于使用VIVADO中的MIG控制DDR3(AXI接口)一——AXI简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!