ZYNQ第七章-PS与PL数据交互第二篇

ZYNQ第七章-PS与PL数据交互第二篇在上一篇内容当中 介绍了 PS 端通过 M AXI GP 接口和 PL 端进行交互 但由于 M AXI GP 接口是一个 AXI Lite 接口 所以更多时候作为 PS 端控制 PL 端一些寄存器时使用 若要进行大量数据交互 则行不同

大家好,欢迎来到IT知识分享网。

前言

在上一篇内容当中,介绍了PS端通过M_AXI_GP接口和PL端进行交互,但由于M_AXI_GP接口是一个AXI_Lite接口,所以更多时候作为PS端控制PL端一些寄存器时使用,若要进行大量数据交互,则行不同。

交互方式

在这里插入图片描述
GP接口都是32bit的AXI_Lite接口,HP接口则可以实现32/64bit的长数据流传输,HP接口是将数据写入了DDR当中(这样子的话ARM读数据需要先刷新cache,然后再读数据),还有一种适合大量数据交互的接口是ACP,它是直接将数据给到了ARM(也可能是直接给到了cache,反正就是不需要先到DDR当中),速度更加快。
在这里插入图片描述

一、基于HP接口交互

1、BD框图

在这里插入图片描述

2、PL端工作

ZYNQ第七章-PS与PL数据交互第二篇

3、PS端工作

和上一篇代码基本一致,就是读数据位宽变为64,地址一次加8.

#include <stdio.h> #include "platform.h" #include "xil_printf.h" #include "sleep.h" #include "xparameters.h" #include "xil_cache.h" #include "xil_io.h" int main() { 
    init_platform(); Xil_DCacheDisable(); Xil_ICacheEnable(); print("Disabled cache\n\r"); u64 Data[10]; int i; while(1){ 
    for(i=0; i<10; i++){ 
    Data[i] = Xil_In64(XPAR_PS7_RAM_0_S_AXI_BASEADDR + i*8); } usleep(5000); } cleanup_platform(); return 0; } 

二、上板效果

PL端AXI_Mater模块写数据过程:
在这里插入图片描述
通过AXI_smartconnect向ARM写数据,与上面波形是一样的,就是过了一级AXI_smartconnect。同时我们也可以看到PS端AXI_S_HP接口是AXI_FULL接口。
在这里插入图片描述
PS端读数据过程:
可以看到PS端读数据正常
在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/150034.html

(0)
上一篇 2025-03-20 22:10
下一篇 2025-03-20 22:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信