ZYNQ学习之旅--PS

    技术2025-02-26  13

    目录标题

    简介BD设计软件设计AXI总线读写ddr时序

    简介

    ZYNQ 将高性能 ARM Cotex-A 系列处理器与高性能 FPGA 在单芯片内紧密结合,为设计带来了如减小 体积和功耗、降低设计风险,增加设计灵活性等诸多优点。在将不同工艺特征的处理器与 FPGA 融合在一个芯片上之后,片内处理器与 FPGA 之间的互联通路就成了 ZYNQ 芯片设计的重中之重。如果 Cotex-A9 与FPGA 之间的数据交互成为瓶颈,那么处理器与 FPGA 结合的性能优势就不能发挥出来。 我们在前面的实验中介绍了一些 ZYNQ PS 与 PL 交互所使用的接口,比如《EMIO 按键控制 LED 实 验》中的 EMIO,以及《AXI GPIO 按键控制 LED 实验》中的 AXI4-Lite 接口等。其中 AXI4-Lite 接口属于AXI4 总线协议,接下来我们将对该协议作一个更具体的介绍。AXI 的英文全称是 Advanced eXtensible Interface,即高级可扩展接口,它是 ARM 公司所提出的 AMBA(Advanced Microcontroller Bus Architecture)协议的一部分。在介绍 AXI 协议之前,我们首先要对通信协议有一个基本的概念。 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、 读地址 2、 读数据 3、 写地址 4、 写数据 5、 写响应

    下面是使用读地址和读数据通道实现读传输过程的示意图:

    BD设计

    这里的PL_DDR3_TEST只需要用创建的AXI总线的IP原来的例程就可了。

    软件设计

    #include <stdio.h> #include "xil_cache.h" #include "xparameters.h" #include "xparameters_ps.h" #include "xil_printf.h" #include "xil_io.h" #define DDR_BASEARDDR 0x10000000 //从设置基地址开始读取 #define DDR_HIGHADDR XPAR_DDR_MEM_HIGHADDR int main() { int i=0; char A; int rev; Xil_DCacheDisable(); print("PL RW DDR TEST!\n\r"); print("Please input A to get data\n\r"); while(1){ scanf("%c",&A); if(A=='A'){ printf("start\n\r"); while(i*4<4096){ rev = Xil_In32(DDR_BASEARDDR+i*4); xil_printf("the address at %x data is : %d \r\n" ,DDR_BASEARDDR+i*4, rev); ++i; } i=0; } } return 0; }

    AXI总线读写ddr时序

    可以看到这里是突发传输,每次突发64个字节。

    Processed: 0.009, SQL: 9