vivado 建立PS工程

前言

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

新建工程

vivado 建立FPGA工程相同算法

創建Zynq硬件系統

新建塊設計
編程

添加zynq處理器IP核
app

自動配置
函數

添加一個GPIO IP核,一樣自動配置,而後在空白處右擊選擇Regenerate Layout,從新佈局
佈局

能夠將GPIO核更名爲LED,核的端口也改成LED設計

配置

雙擊zynq核進行配置,此處不須要配置
雙擊GPIO核,將端口設爲輸出,由於vivado有ZedBoard的信息,因此不用本身配置IP configuration
3d

新建約束文件

生成頂層文件

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

生成比特流

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

外設地址

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

將硬件工程導出到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的管腳資源。

相關文章
相關標籤/搜索