vivado 創建PS工程


前言

本文簡要介紹在vivado中創建PS工程。單純使用zynq芯片的PS部分就像使用普通ARM芯片一樣,只是多了建立Zynq硬件系統這一個步驟。vivado創建PL工程參見此處

新建工程

vivado 創建FPGA工程相同

建立Zynq硬件系統

新建塊設計

添加zynq處理器IP核

自動配置

添加一個GPIO IP核,同樣自動配置,然后在空白處右擊選擇Regenerate Layout,重新布局

可以將GPIO核改名為LED,核的端口也改為LED

配置

雙擊zynq核進行配置,此處不需要配置
雙擊GPIO核,將端口設為輸出,因為vivado有ZedBoard的信息,所以不用自己配置IP configuration

新建約束文件

生成頂層文件

先右擊system → Generate Output Products → Generate
再右擊system → Create HDL Wrapper → OK
Vivado會為IP子系統生成一個頂層文件,以便對該系統進行綜合、實現並生成比特流

生成比特流

工程配置完成,點擊左下側Generate Bitstream生成比特流,點擊Yes。若沒有其他錯誤,比特流生成完成。

外設地址

硬件工程設計好之后,可在以下窗口中看到系統分配給外設的地址

將硬件工程導出到SDK

VIVADO -> File → Export Hardware 導出硬件到SDK,打鈎,包括比特流,點擊OK

新建軟件工程


注意點next選擇empty application

新建.c源文件

錄入代碼

//點亮燈,需要流水燈代碼請自行修改
#include "xparameters.h"
#include"xgpio.h"
#define LED_CHANNEL 1
XGpio GpioOutput;
int main()
{
	XGpio_Initialize(&GpioOutput,XPAR_LED_DEVICE_ID);
	XGpio_SetDataDirection(&GpioOutput,LED_CHANNEL,0x0);
	while (1)
	{
		XGpio_DiscreteWrite(&GpioOutput,LED_CHANNEL,0xFF);//點亮全部LED燈
	}
}

下載

回到Vivado,program device

再到SDK,運行

效果

說明

bsp是與硬件配置有關的板級支持包,可以方便調用bsp包內的函數實現對外設的控制,而不用關心底層驅動實現。
.elf文件是生成的可執行文件

關於處理器系統

Zynq搭載的是一顆雙核ARM-Cortex-A9處理器,是一顆“硬”處理器,而Xilinx MicroBlaze是由可編程邏輯組成的“軟”處理器,MicroBlaze也可以在Zynq芯片上實現


上圖綠框是應用處理單元(APU),包含兩個ARM核等處理資源。NEON引擎實現了單指令多數據功能來實現DSP類算法的加速,NEON指令是對ARM指令集的擴展,可以直接使用。浮點擴展(FPU)則實現了浮點運算的硬件加速

zynq的GPIO

zynq的GPIO實現方式有三種:MIO、EMIO、AXI_GPIO。PS通過這三種GPIO和外部接口通信。上面例子點亮LED燈使用的是AXI_GPIO,是一個IP核,消耗PL邏輯資源和PL管腳資源,掛載在AXI總線上,通過AXI總線地址訪問。MIO直接和PS相連接,不消耗PL資源,共有54個。EMIO接口位於PS和PL之間,連接到PL的管腳時不消耗PL邏輯資源,連接到PL實現的外設時不消耗PL的邏輯資源也不消耗PL的管腳資源。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM