日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

zynqpl端时钟_第十二章 ZYNQ-MIZ702 PS读写PL端BRAM

發布時間:2024/9/19 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zynqpl端时钟_第十二章 ZYNQ-MIZ702 PS读写PL端BRAM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇文章目的是使用Block Memory進行PS和PL的數據交互或者數據共享,通過zynq PS端的Master GP0端口向BRAM寫數據,然后再通過PS端的Mater GP1把數據讀出來,將結果打印輸出到串口終端顯示。

涉及到AXI BRAM Controller 和 Block Memery Generator等IP的使用。

本系列文章盡可能的讓每一個實驗都相對獨立,過程盡可能保證完整性,保證實驗的可重現性。 但是用到的模塊或者IP的具體作用和用法不保證都重復詳細的介紹。

本文所使用的開發板是Miz702 PC 開發環境版本:Vivado 2015.4 Xilinx SDK 2015.4

2.0本章難度系數★★☆☆☆☆☆

Step1:新建一個名為為Miz702_sys的工程

Step2:選擇RTL Project 勾選Do not specify source at this time

Step3:由于Miz702兼容zedboard 因此選擇zedboard開發包

Step4:單擊Finish

Step1:單擊Create Block Design

Step2:輸入system

Step3:單擊下圖中添加IP按鈕

Step4:搜素單詞z選擇ZYNQ7 Processing System,然后雙擊

Step5:添加進來了ZYNQ CPU IP,然后單擊Run Block Automation

Step6:直接單擊OK

Step7:在你點擊了OK后,你會發現DDR以及FICED_IO自勱的延伸出來。

Step8:連線的作用就是把PS的時鐘可以接入PL部分,當然這里我們暫時用不到PL部分的資源。在Block文件中,我們迚行連線,將鼠標放在引腳處,鼠標變成鉛筆后迚行拖拽,連線如下圖所示:

Step9:雙擊 ZYNQ,打開Re-customize IP對話框,在PL-PS Configuration下,選中 GP0和GP1然后 點擊ok

Step10:點擊,Add IP,連續添加兩個 AXI BRAM Controller

Step11:分別雙擊AXI BRAM Controller模塊,把number of BRAM interfaces 全部修改成1

Step12:點擊ADD IP,添加Block Memory Generator

Step13:雙擊Block Memory Generator ,修改Memory Type。

Step14:點擊run Connection Automation,把axi_bram_ctrl_1的S_AXI端口的連接目標修改為如圖所示:

Step15:點擊重新布局,生成好的硬件框架如下

Step16:點擊Address Editor 可以看到系統已經為我們自動分配好了正確的地址

Step17: 右擊 system.bd, 單擊Generate Output Products

Step18:支部操作會產生執行、仿真、綜合的文件

Step19:右擊system.bd 選擇 Create HDL Wrapper 這步的作用是產生頂層的HDL文件

Step20:選擇Leave Let Vivado manager wrapper and auto-update 然后單擊OK

Step21:執行->產生bit文件

Step1:File->Export->Export Hardware

Step2:勾選Include bitstream 直接單擊OK

Step3:File->Launch SDK加載到SDK

Step4:單擊OK

2.4軟件工程

Step1:打開的SDK界面如下,這里的信息是和硬件相關的,例如在Address Map 這一欄下可以看到axi_bram_ctrl_0和剛剛在vavado Address Editor下的地址是一致的

Step2: 新建一個名為BRAM_Test的空的工程,并且新建一個main.c文件,添加如下代碼。/*

* mai.c

*

*? Created on: 2016年6月26日

*????? Author: Administrator

*/

#include

#include "xil_io.h"?? //這個頭文件下面包含很重要的IO讀寫函數

#include "xparameters.h"? //這個頭文件里把硬件的地址映射等參數都寫成了宏定義方便使用

//void print(char *str);

int main()

{

int num;

int rev;

xil_printf("------The test is start...------\n\r");

//XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR是axi_bram_ctrl_0的地址,Xil_Out32通過控制axi_bram_ctrl_0,向blk_mem_gen_0寫數據

for( num=0; num<15; num++ )

{

Xil_Out32(XPAR_BRAM_0_BASEADDR + num*4, 0x10000000+num);???? //

}

//XPAR_AXI_BRAM_CTRL_1_S_AXI_BASEADDR是axi_bram_ctrl_1的地址,Xil_In32 通過控制axi_bram_ctrl_0,把blk_mem_gen_0里的數據讀出來

//PS和PL可以在blk_mem_gen_0里共享數據

for( num=0; num<15; num++ )

{

rev = Xil_In32(XPAR_BRAM_0_BASEADDR + num*4);

xil_printf( "The data at %x is %x \n\r",XPAR_BRAM_0_BASEADDR + num*4,rev);

}

xil_printf("------The test is end!------\n\r");

return 0;

}

2.5測試結果

串口終端打印輸出信息如下:

------The test is start...------

The data at 80000000 is 10000000

The data at 80000004 is 10000001

The data at 80000008 is 10000002

The data at 8000000C is 10000003

The data at 80000010 is 10000004

The data at 80000014 is 10000005

The data at 80000018 is 10000006

The data at 8000001C is 10000007

The data at 80000020 is 10000008

The data at 80000024 is 10000009

The data at 80000028 is 1000000A

The data at 8000002C is 1000000B

The data at 80000030 is 1000000C

The data at 80000034 is 1000000D

The data at 80000038 is 1000000E

------The test is end!------

2.6本章小結

本文通過PS端把數據寫入到PL端的BRAM,然后從而又把數據從PL端讀到PS端,從而簡單的實現了PL和PS的數據交互和共享。

總結

以上是生活随笔為你收集整理的zynqpl端时钟_第十二章 ZYNQ-MIZ702 PS读写PL端BRAM的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。