DDR3的使用(五)利用XILINX MIGIP核(native)读写DDR3—AXI接口

我们在生成mig ip核控制DDR3时有一个选项,用来生选择生成IP核的类型,如果勾选则生成AXI接口,否则接口类型是native类型:请添加图片描述
那么什么是AXI接口,他有什么优势呢?
一.AXI 的英文全称是AdvancedeXtensible Interface,即高级可扩展接口,它是 ARM 公司所提出的 AMBA(AdvancedMicrocontroller Bus Architecture)协议的一部分。之所以要采用 AXI4 接口对 ddr 进行读写是因为 Xilinx 的 mig ddr Ip 核,无论是 6 系列还是 7 系列还是最新的 FPGA,都集成了 AXI4 接口,为了采用 AXI4 接口进行读写,后续可以兼容 xilinx的其他 fpga,可复用性更强。
AXI 协议是一种高性能、高带宽、低延迟的片内总线,具有如下特点:
1、总线的地址/控制和数据通道是分离的;
2、支持不对齐的数据传输;
3、支持突发传输,突发传输过程中只需要首地址;
4、具有分离的读/写数据通道;
5、支持显著传输访问和乱序访问;
6、更加容易进行时序收敛。
在数字电路中只能传输二进制数 0 和 1,因此可能需要一组信号才能高效地传输信息,这一组信号就组成了接口。AXI4 协议支持以下三种类型的接口:
1、AXI4:高性能存储映射接口。
2、AXI4-Lite:简化版的 AXI4 接口,用于较少数据量的存储映射通信。
3、AXI4-Stream:用于高速数据流传输,非存储映射接口。
在这里我们首先解释一下存储映射(Meamory Map)这一概念。如果一个协议是存储映射的,那么主机所发出的会话(无论读或写)就会标明一个地址。这个地址对应于系统存储空间中的一个地址,表明是针对该存储空间的读写操作。AXI4 协议支持突发传输,主要用于处理器访问存储器等需要指定地址的高速数据传输场景。AXI-Lite 为外设提供单个数据传输,主要用于访问一些低速外设中的寄存器。而 AXI-Stream 接口则像 FIFO 一样,数据传输时不需要地址,在主从设备之间直接连续读写数据,主要用于如视频、高速AD、PCIe、DMA 接口等需要高速数据传输的场合。

AXI4 接口

  1. AXI4 接口,它由五个独立的通道构成:
    1、读地址
    2、读数据
    3、写地址
    4、写数据
    5、写响应
    下面是使用读地址和读数据通道实现读传输过程的示意图:
    在这里插入图片描述
    从上图中可以看到,在一个读传输过程中,主机首先在读地址通道给出读地址和控制信号,然后从机由读数据通道返回读出的数据。另外我们需要注意的是,这是一次突发读操作,主机只给出一个地址,从该地址连续突发读出四个数据。写传输过程如下图所示,它用到了写地址、写数据和写响应三个通道。主机在写地址通道给出写地址和控制信号,然后在写数据通道连续突发写四个数据。从机在接收数据之后,在写响应通道给出响应信号。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    3.突发写时序:
    AXI4 突发写可以分为 7 个状态,写空闲,写通道写地址等待,写通道写地址,写数据等待,写数据循环,接受写应答,写结束这 7 种状态。之所以划分为 7 个状态是为了后续写程序的状态机做准备。
    写空闲:等待触发突发信号。
    写通道写地址等待:准备好写地址 AWADDR,然后拉高 AWVALID。
    写通道写地址:从机接受到 AWVALID,发出 AWREADY。
    写数据等待:准备好数据 WDATA,拉高 WVALID。
    写数 据 循 环 : 从 机 接 受 WVALID ,确 认 数 据 WDATA 有效 并 且 接 受 , 发 出WREADY,AXI 是突发传输:循环该操作到接受到 WLAST 最后一个数据标志位。
    接受写应答:接受到从机发出的 BVALID,主机发出 BREADY。
    写结束:拉低未拉低的信号,进入写空闲。
    在这里插入图片描述
    4.突发读时序:
    AXI4 突发读可以分为 6 个状态,读空闲,读通道写地址等待,读通道写地址,读数据
    等待,读数据循环,读结束这 6 种状态。之所以划分为 6 个状态是为了后续写程序的状态
    机做准备。
    读空闲:等待触发突发信号。
    读通道写地址等待:准备好写地址 ARADDR,然后拉高 ARVALID。
    读通道写地址:从机接受到 ARVALID,发出 ARREADY。
    读数据等待:从机器准备好数据 WDATA,从机拉高 RVALID。
    读数据循环:主机接受 RVALID,确认数据 RDATA 有效并且接受,发出 RREADY 给
    从机,AXI 是突发传输:循环该操作到接受到 RLAST 最后一个数据标志位。
    读结束:拉低未拉低的信号,进入读空闲。
    从上面的时序图与时序分析可知两种关系必须被保持:
    (1)读数据必须总是跟在与其数据相关联的地址之后。
    (2)写响应必须总是跟在与其相关联的写事务的最后出现。
    AXI4 握手信号
    AXI 总线中的每个通道都包含了一组信息信号,还有一个 VALID 和一个READY 信号。由上面的读写时序图与时序分析,可知 AXI 接口的读写在于握手信号 VALID 与READY。
    AXI 总线分为五个通道:
    读地址通道,包含 ARVALID、ARADDR、ARREADY 信号;
    写地址通道,包含 AWVALID、AWADDR、AWREADY 信号;
    读数据通道,包含 RVALID、RDATA、RREADY、RRESP 信号;
    写数据通道,包含 WVALID、WDATA、WSTRB、WREADY 信号;
    写应答通道,包含 BVALID、BRESP、BREADY 信号;
    VALID 信号由源端(source)产生,表示当前地址或者数据线上的信息是有效的;而READY 信号由目的端(destination)产生,则表示已经准备好接收地址、数据以及控制信息。VALID 和 READY 信号提供了 AXI 总线中的 3 种握手机制,如下图所示:
    在这里插入图片描述
    ACLK 为时钟信号,在 AXI 协议中,所有的输入信号都在是 ACLK 的上升沿采样,所有的输出信号必须在 ACLK 的上升沿之后才能改变。在 T1 之后,源端将 VALID 拉高,表明 INFORMATION 信号线上传输的是有效的地址、数据或者控制信息。目的端在 T2 之后将 READY 拉高,表明它已经准备好接收数据,此时源端必须保持 INFORMATION 数据稳定不变,直到 T3 时刻进行数据传输。需要注意的是,源端不允许等目的端的 READY 信号拉高之后,才将 VALID 信号置为有效状态。而且,一旦 VALID 拉高,源端必须保持其处于有效状态,直至成功握手(在时钟上升沿检测到 VALID 和 READY 同时为有效状态)。通俗来讲,VALID 必须持续坚持到 READY 信号后才可拉低。

写地址通道:当主机驱动有效的地址和控制信号时,主机可以断言 AWVALID,一旦断言,需要保持 AWVALID 的断言状态,直到时钟上升沿采样到从机的 AWREADY。AWREADY 默认值可高可低,推荐为高(如果为低,一次传输至少需要两个周期,一个用来断言 AWVALID,一个用来断言 AWREADY);当 AWREADY 为高时,从机必须能够接受提供给它的有效地址。
写数 据 通 道 :在 写 突 发 传 输 过 程 中 , 主 机 只 能 在 它 提 供 有 效 的 写 数 据 时 断 言WVALID,一旦断言,需要保持断言状态,知道时钟上升沿采样到从机的 WREADY。WREADY 默认值可以为高,这要求从机总能够在单个周期内接受写数据。主机在驱动最后一次写突发传输是需要断言 WLAST 信号。
写响应通道:从机只能它在驱动有效的写响应时断言 BVALID,一旦断言需要保持,直到时钟上升沿采样到主机的 BREADY 信号。当主机总能在一个周期内接受写响应信号时,可以将 BREADY 的默认值设为高。
读地址通道:当主机驱动有效的地址和控制信号时,主机可以断言 ARVALID,一旦断言,需要保持 ARVALID 的断言状态,直到时钟上升沿采样到从机的 ARREADY。ARREADY 默认值可高可低,推荐为高(如果为低,一次传输至少需要两个周期,一个用来断言 ARVALID,一个用来断言ARREADY);当 ARREADY 为高时,从机必须能够接受提供给它的有效地址。
读数据通道:只有当从机驱动有效的读数据时从机才可以断言 RVALID,一旦断言需要保持直到时钟上升沿采样到主机的 BREADY。BREADY 默认值可以为高,此时需要主机任何时候一旦开始读传输就能立马接受读数据。当最后一次突发读传输时,从机需要断言 RLAST。

通道握手信号之间的依赖性
单箭头指向的信号能在箭头起点信号之前或之后断言;双箭头指向的信号必须在箭头起点信号断言之后断言
读事务握手依赖关系如图:
(1)设备可以在 ARVALID 出现的时候在给出 ARREADY 信号,也可以先给出
ARREADY 信号,再等待 ARVALID 信号。
(2)但是设备必须等待 ARVALID 和 ARREADY 信号都有效才能给出 RVALID 信号,开始数据传输。
在这里插入图片描述
写事务握手依赖关系如图:
(1)主机不一定得等待设备先给出 AWREADY 或 WREADY 信号信号后再给出信号AWVALID 或 WVLAID。
(2)设备可以等待信号 AWVALID 或 WVALID 信号有效或者两个都有效之后再给出AWREADY 信号。
(3)设备可以等待 AWVALID 或 WVALID 信号有效或者两个信号都有效之后再给出WREADY 信号。
在这里插入图片描述
地址通道的控制信号与地址描述

  1. 地址 ID
    AWID[3:0]与 ARID[3:0]:对于只有一个主机从机设备,改值可设置为任意值。
  2. 地址结构
    AWADDR[31:0]与 ARADDR[31:0]:AXI 协议是基于 burst 的,主机只给出突发传输的第一个字节的地址,从机必须计算突发传输后续的地址。突发传输不能跨 4KB 边界(防止突发跨越两个从机的边界,也限制了从机所需支持的地址自增数)。
  3. 突发长度
    AWLEN[7:0]与 ARLEN[7:0]:ARLEN[7:0]决定读传输的突发长度,AWLEN[7:0]决定写传输的突发长度。AXI4 扩展突发长度支持 INCR 突发类型为 1~256 次传输,对于其他的传输类型依然保持 1~16 次突发传(Burst_Length=AxLEN[7:0]+1)。
    burst 传输具有如下规则:
    wrapingburst,burst 长度必须是 2,4,8,16
    burst 不能跨 4KB 边界
    不支持提前终止 burst 传输
    所有的组件都不能提前终止一次突发传输。然而,主机可以通过解断言所有的写的strobes 来使非所有的写字节来减少写传输的数量。读 burst 中,主机可以忽略后续的读数据来减少读个数。也就是说,不管怎样,都必须完成所有的 burst 传输。
  4. 突发大小
    ARSIZE[2:0],读突发传输;AWSIZE[2:0],写突发传输。
    在这里插入图片描述
    如果是 16 位的数据宽度,16 位等于 2 字节,那么 AxSIZE 将为 3’b001;如果是 32 位宽度,就是 4 字节,AxSIZE 为 3’b010;如果是 64 位数据宽度,AxSIZE 为 3’b011;对于AXI 接口,比较常用的是 32,64,128 位数据宽度。
  5. 突发类型
    AWBURST[1:0]与 ARBURST[1:0]:
    FIXED:突发传输过程中地址固定,用于 FIFO 访问
    INCR:增量突发,传输过程中,地址递增。增加量取决 AxSIZE 的值。
    WRAP:回环突发,和增量突发类似,但会在特定高地址的边界处回到低地址处。回环突发的长度只能是 2,4,8,16 次传输,传输首地址和每次传输的大小对齐。最低的地址整个传输的数据大小对齐。回环边界等(AxSIZE*AxLEN)。应用中常使用的是 INCR 增量突发。
    在这里插入图片描述
    数据通道信号描述
    WDATA 与 RDATA:写与读数据线信号
    WSTRB :有 效 字 节 , WSTRB[n:0] 对应 于 对应 的 写 字 节 , WSTRB[n] 对应WDATA[8n+7:8n],也就是对于的数据宽度的字节数是否有效。WVALID 为低时,WSTRB可以为任意值,WVALID 为高时,WSTRB 为高的字节线必须指示有效的数据。对于一般应用,将 WSTRB 全部置 1 即可,保证全部数据有效。读通道无该信号。WLAST 与 RLAST:写与读最后一个字节,拉高表示传输最后一个字节,也意味着传输结束。
    在完成对 DDR3 SDRAM 理论知识的系统性学习后,我们进入 DDR3 SDRAM 控制器的设计实验环节,将所学理论知识与实际相结合 ,设计实现一个 AXI 接口的 DDR3SDRAM 读写控制器,并上板验证。
    我们后面其他要使用DDR3的情况也要用到AXI接口,所以我们需要花一些时间去熟悉运用起来。
  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值