PS与PL通信(AXI DMA)

 

目录

1.1 概述

1.2 KU085的设计

1.3 7Z020的设计

1.3.1 PS侧

1.3.2 PL侧

1.3.3 中断表:

1.3.4 AXI_DMA配置:

1.4 软件调试

1.4.1 需要软件

1.4.2 软件使用

1.4.3 调试结果

1.5 源码

1.5.1 设备树

         1.5.2 驱动源码

1.5.3 axidma_test.c源码


1.1 概述

    平台使用zynq7020,数据流程,PS通过PL侧 AXI DMA访问KU085采集的数据,该数据存储在PL里面的硬盘中。最后将PS收到的数据通过UDP发送到PC中显示。

PC <--> PS <-->  AXI DMA <--> PL  <-- > KU085

验证示意:

 

 

验证框图:

 

                                   

 

1.2 KU085的设计

KU085的设计,完成FIFO的数据接收,用ILA抓取数据。

KU085的设计,完成FIFO的数据发送,用ILA抓取数据。产生模拟数据(COUNTER[15:0])发送。

 

1.3 7Z020的设计

7Z020的设计,由PS和PL配合完成。

1.3.1 PS侧

 

 

 

1.3.2 PL侧

主要是做AXI_DMA,FIFO的数据通道。

需要注意的是,AXI_DMA是AXIS的形式,需要有tlast信号。

Demo工程,接收侧设定每256个32比特数据,产生一个tlast信号。

Demo工程,发送侧由软件配置传输的数据长度。

 

 

 

地址分配:

 

 

 

 

GPIO_PL,demo中没有使用。

1.3.3 中断表:

0: PL_UART.

1: MCU_UART.

2: AXI_DMA_0 MM2S Interrupt.           31

3: AXI_DMA_0 S2MM Interrupt.             32

5: AXI_Interrupt_Controller Interrupt.          33

6: AXI_DMA_1 MM2S Interrupt.            34

7: AXI_DMA_1 S2MM Interrupt.             35

 

1.3.4 AXI_DMA配置:

 

1.4 软件调试

1.4.1 需要软件

  1. 驱动程序

PS侧使用AXI DMA的驱动,驱动文件包括:axi_dma.c axidma_chrdev.c axidma_dma.c,驱动编译成模块axidma.ko

    2. 应用程序

应用程序为axidma_test,具体功能包括:

  1. PS侧通过AXI DMA通道0将PS侧的数据发送到KU085;
  2. PS侧通过AXI DMA通道1将KU085采集到的数据发送到PC(UDP)。

   3.库文件

运行应用程序axidma_test时需要库文件libaxidma.so。

1.4.2 软件使用

板子调试串口为调试小板上的J3,上电自动启动后,调试网口的IP地址为192.168.11.233。

  1. 新建文件1.txt,在里面随意写入任何内容;
  2. 执行写操作:axidma_test 1.txt 2.txt -w;
  3. 执行读操作:axidma_test 1.txt 2.txt -d,每次读取1KB的内容。

1.4.3 调试结果

读数据测试结果:

 

 

1.5 源码

1.5.1 设备树

见另外一个博客《AXI DMA 设备树》https://blog.csdn.net/hongmao6/article/details/110631561

1.5.2 驱动源码

见另外一个博客《AXI DMA驱动与axidma_test测试源码》https://blog.csdn.net/hongmao6/article/details/110634450

1.5.3 axidma_test.c源码

axidma_test.c源码见另外博客《AXI DMA驱动与axidma_test测试源码》https://blog.csdn.net/hongmao6/article/details/110634450

 

 

  • 7
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Zynq是一款Xilinx公司的片上系统(SoC),它将传统的处理系统(PS,即Processing System)和可编程逻辑(PL,即Programmable Logic)集成在一起。PSPL之间的通信是通过DMA(Direct Memory Access)实现的。 DMA是一种高效的数据传输方式,它可以在不经过处理器的情况下直接将数据从一个设备传输到另一个设备的内存中。在Zynq中,DMA控制器可以在PSPL之间进行数据传输,以实现高速的数据交换。 在使用Zynq的PSPL之间进行通信时,首先需要在PL中实例化一个DMA控制器,并将其配置为与PS内存进行交互。然后,在PS中通过相应的软件驱动程序或API接口配置和控制DMA控制器。通过设置合适的寄存器和缓冲区,可以实现从PSPL的数据传输或从PLPS的数据传输,以及在传输过程中的中断处理。 PSPL之间的DMA通信可以实现快速的数据交换,因为数据可以直接在PL中进行处理,无需经过PS的干预。这对于需要高速数据处理的应用非常有用,比如图像处理、信号处理等。 需要注意的是,使用DMA进行PSPL之间的通信需要合理地配置和管理DMA控制器的缓冲区和寄存器,以及在PSPL之间的数据传输过程中进行正确的同步和互斥操作,以避免数据冲突和错误。 总之,Zynq PSPL之间的通信使用DMA可以实现高速的数据传输和处理,为嵌入式应用带来了更大的灵活性和高效性。 ### 回答2: Zynq系统中的PS(Processing System)与PL(Programmable Logic)之间的通信可以通过DMA(Direct Memory Access)实现。 DMA是一种特殊的数据传输机制,它可以在不需要CPU的干预下,在内存和外设之间直接传输数据。在Zynq系统中,PSPL之间的DMA通信可以通过AXI(Advanced eXtensible Interface)总线实现。 首先,在Zynq系统中,PS可以使用AXI DMA控制器来设置数据传输的源地址、目的地址、传输长度等参数。这些参数可以通过PS的程序来配置。 然后,在PL中,我们可以使用AXI接口来设计自定义的IP(Intellectual Property)核,该IP核可以与AXI DMA进行通信。这个IP核可以通过PL的开发工具进行开发和配置。 接下来,通过适当的设计和配置,我们可以在PL中连接AXI DMA核和其他IP核,以实现PSPL之间的数据传输。例如,我们可以将一个读取数据的IP核连接到AXI DMA的输入端口,将一个写入数据的IP核连接到AXI DMA的输出端口。这样,当AXI DMA启动数据传输时,读取数据的IP核将从PL的某个存储器中读取数据,然后通过DMA传输到PS的某个存储器中,而写入数据的IP核将从PS的某个存储器中读取数据,然后通过DMA传输到PL的某个存储器中。 总之,通过使用AXI DMA和适当的设计和配置,Zynq系统中的PSPL之间可以进行高效的数据传输和通信。这种方式可以提高系统的性能和可扩展性,并且降低了CPU的负载,提供了更好的系统整合能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值