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

前言

在上一篇内容当中,介绍了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端工作

主要实现了一个AXI_FULL主机模块,具体代码可以看之前的一篇博客内容:https://blog.csdn.net/m0_56222647/article/details/136459976

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端读数据正常
在这里插入图片描述

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顺子学不会FPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值