使用Block Memory進行PS和PL的數據交互或者數據共享,通過zynq PS端的Master GP0端口向BRAM寫數據,然后再通過PS端的Mater GP1把數據讀出來,將結果打印輸出到串口終端顯示。
涉及到AXI BRAM Controller 和 Block Memery Generator等IP的使用。
本文所使用的開發板是zedboard
PC 開發環境版本:Vivado 2016.2 Xilinx SDK 2016.2
---------------------
作者:wangdaling
來源:CSDN
原文:https://blog.csdn.net/rzjmpb/article/details/50365915 https://blog.csdn.net/rzjmpb/article/details/50365915
一、實現的結構原理圖
1、PL端硬件架構搭建
新建工程后在Create Block Design中添加IP,點擊添加IP的按鈕后在彈出的搜索框中搜索ZYNQ時添加PS,搜索BRAM時添加AXI BRAM Controller 和Block Memory Generator,然后對PS中的相應接口做參數設置
2、軟件SDK中的代碼如下:
#include <stdio.h>
#include "platform.h"
#include "xparameters.h"
#include"xparameters_ps.h"
#include"xil_printf.h"
#include"xil_io.h"
//#define DDR_BASEARDDR XPAR_DDR_MEM_BASEADDR+0x10000000
int main()
{
init_platform();
int i;
int rev;
xil_printf("-----The test is start...\n\r");
for(i=0;i<15;i++)
{
Xil_Out32(XPAR_BRAM_0_BASEADDR+i*4,0x10000000+i);
}
for(i=0;i<15;i++)
{
rev=Xil_In32(XPAR_BRAM_0_BASEADDR+i*4);
xil_printf("the address at %x data is: %x \n\r",XPAR_BRAM_0_BASEADDR+i*4,rev);
}
xil_printf("-----The test is end!-------\n\r");
cleanup_platform();
return 0;
}
3、編譯軟件部分的代碼,
4、將zedboard 板子的JTAG和PROG的端口與PC電腦端相連
5、然后program FPGA(從硬件部分生成的bitstream),run configuration,run