大家好,欢迎来到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