AXI总线之AXI-LITE总线分析与实现

AXI是由ARM公司提供的一种总线协议,Xilinx从6系列的FPGA开始对AXI总线提供支持,现如今已经发展到AXI4这个版本。在Xilinx的ZYNQ系列中,AXI是经常用的一种接口。AXI有3个概念需要分清楚,总线、接口、协议。总线是指传输通道,是各种逻辑器件构成的传输数据的通路,一般由数据线、地址线、控制线组成;接口是一种连接标准,又被称为物理接口;协议是值传输数据的规则。Zynq支持三种AXI总线,有三种AXI接口,都是AXI协议。

三种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协议中,将读地址通道、读数据通道、写地址通道、写数据通道、写应答通道分开,各自有自己的握手机制,每个通道互相不干扰。

接下来,讲解一下AXI-Lite总线的时序和仿真。AXI-Lite总线写时序由写地址通道、写数据通道、写应答通道组成,其时序如下图所示:
AXI总线之AXI-LITE总线分析与实现_第1张图片
AXI-Lite总线读时序由读地址通道、读数据通道组成,其时序图如下图所示:
AXI总线之AXI-LITE总线分析与实现_第2张图片
需要注意的是,每次只进行一次地址数据的读写操作,不能连续读写多个数据。

根据AXI-Lite读写时序,可以建一个小工程来测试AXI-Lite时序。PS端通过AXI-Lite总线控制RAM的读写地址、使能信号和写入的数据,从RAM中读出来的数据可以通过AXI-Lite的读通道将数据读取出来,并在PS端通过串口打印出读上来的值。下图是该工程的原理框架图。(测试工程在此链接:https://download.csdn.net/download/leo_xu_/13327583)
AXI总线之AXI-LITE总线分析与实现_第3张图片

该工程的时序仿真图如下所示,红色线是写通道的所有信号线,蓝色线是读通道的所有信号线。AXI_wdata信号包含了读写RAM的地址、写入RAM的数据和写RAM的使能信号,AXI_rdata信号包含了从RAM中读出来的数据。
AXI总线之AXI-LITE总线分析与实现_第4张图片
AXI总线之AXI-LITE总线分析与实现_第5张图片

新建一个SDK工程,SDK代码如下图所示。

  1. 宏定义一个地址0x4c000000,作为AXI-LITE的基地址,偏移地址可以根据自己需求进行设定,可自定义一个偏移地址。

  2. 在偏移地址0x10处,写入32比特数据。[17:9]填写RAM的写地址,[8:1]填写RAM的写数据,[0]填写RAM的写使能信号。

  3. 在偏移地址0x20处,写入32比特数据。[17:9]填写RAM的读地址,[0]填写RAM的读使能信号。

  4. 在偏移地址0x20处,将RAM读出来的数据传送到ARM端,并通过串口打印出来。
    AXI总线之AXI-LITE总线分析与实现_第6张图片

    串口打印出来的值如下:
    AXI总线之AXI-LITE总线分析与实现_第7张图片

上板实抓信号,抓取了各个通道的信号时序,如下图所示。

AXI总线之AXI-LITE总线分析与实现_第8张图片
AXI总线之AXI-LITE总线分析与实现_第9张图片

AXI总线之AXI-LITE总线分析与实现_第10张图片

AXI总线之AXI-LITE总线分析与实现_第11张图片

AXI总线之AXI-LITE总线分析与实现_第12张图片

关注【FPGA Geeker】公众号或者识别下方二维码,获取更多FPGA相关方面的知识。

​​​​​​AXI总线之AXI-LITE总线分析与实现_第13张图片

你可能感兴趣的:(EBAZ4205,fpga)