免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

學(xué)會(huì)Zynq(1)搭建Zynq

 wanglh5555 2019-09-19

有三四個(gè)月沒有記錄blog了,這段時(shí)間也參加了一些比賽,以及上課。Vivado的資料還沒有記錄完,不過還是先記錄下這段日子用的比較多的Zynq, 也為接下來的項(xiàng)目做做準(zhǔn)備。學(xué)習(xí)主要還是看官方資料,還有黑金米聯(lián)的一些教程(雖然一些細(xì)節(jié)、概念有錯(cuò)誤,但能讓入門更快也是好事)。


FPGA嵌入式開發(fā)概述

使用Xilinx FPGA進(jìn)行嵌入式設(shè)計(jì)有兩種解決方案:(1).使用MicroBlaze軟核處理器進(jìn)行設(shè)計(jì),適用于純FPGA平臺(tái);(2).基于Zynq-7000 AP SoC處理器進(jìn)行設(shè)計(jì),只適用于Zynq系列FPGA。Zynq芯片內(nèi)部包括ARM處理器(通常稱為PS部分)與可編程邏輯部分(通常稱為PL部分)。

本系列將講述如何使用Vivado完成基于Zynq平臺(tái)的嵌入式系統(tǒng)設(shè)計(jì)。一個(gè)完整的嵌入式系統(tǒng)設(shè)計(jì)要考慮硬件、軟件、FPGA設(shè)計(jì)三個(gè)部分。Xilinx為了盡量簡化設(shè)計(jì)流程,提供如下兩個(gè)主要設(shè)計(jì)工具:

  • Vivado IDE中的IP Integrator,將基于處理器的設(shè)計(jì)連接在一起,以圖形化的方式設(shè)置器件、選擇外設(shè)、配置硬件設(shè)置。

  • Vivado開發(fā)套件中的另一款軟件開發(fā)工具SDK(Software Development Kit),對(duì)基于微處理器的系統(tǒng)和嵌入式軟件應(yīng)用進(jìn)行設(shè)計(jì)、調(diào)試。

目前Zynq包含Zynq UltraScale+ MPSoC系列(內(nèi)置Cortex-A53)和Zynq 7000 SoC系列(內(nèi)置Cortex-A9雙核)。本博客系列主要以Zynq 7000系列為主,其嵌入式開發(fā)流程相對(duì)比較簡單,開發(fā)板采用米聯(lián)的MZ7X(淘寶可購買,適合新手)和火龍果、ZedBoard(適合進(jìn)階階段,較貴)。相關(guān)學(xué)習(xí)資料可以參考官方文檔UG898、UG940、UG585、UG821、UG782。


嵌入式系統(tǒng)設(shè)計(jì)流程

Xilinx提供的工具,既支持開發(fā)無需操作系統(tǒng)的裸機(jī)應(yīng)用,也支持開發(fā)基于開源Linux操作系統(tǒng)的應(yīng)用。下圖給出了一個(gè)大致流程:
在這里插入圖片描述
完成一個(gè)嵌入式處理器設(shè)計(jì)的大致步驟如下:

  1. 創(chuàng)建一個(gè)Vivado工程。
  2. 在IP Integrator中創(chuàng)建一個(gè)塊設(shè)計(jì),實(shí)例化Zynq處理器與其它Xilinx IP和自定義IP。
  3. 為塊設(shè)計(jì)中的IP生成輸出產(chǎn)品。
  4. 創(chuàng)建頂層封裝wrapper,將塊設(shè)計(jì)實(shí)例化到頂層RTL設(shè)計(jì)中。
  5. 運(yùn)行綜合、實(shí)現(xiàn)、生成bit流,導(dǎo)出硬件到SDK中。
  6. 在SDK中創(chuàng)建軟件應(yīng)用,將可執(zhí)行的ELF文件與硬件設(shè)計(jì)聯(lián)系在一起。
  7. 下載程序到開發(fā)板中。

IP Integrator中的連線

配置好Zynq處理器后,通常還要添加一些其它IP。IP Integrator中的設(shè)計(jì)助手(Designer Assistance)特性可以幫助設(shè)計(jì)者完成系統(tǒng)搭建與端口之間的連線,主要包括如下兩個(gè)功能:

  • Block Automation,模塊自動(dòng)化幫助設(shè)計(jì)者完成一些模塊的配置,完成基本系統(tǒng)的創(chuàng)建,支持交叉觸發(fā)(cross-trigger)特性。
  • Connection Automation,連線自動(dòng)化在檢測(cè)到當(dāng)前實(shí)例化的IP之間可能需要連線時(shí),可以自動(dòng)完成連線操作。

當(dāng)然,連線也可以手工完成。當(dāng)工具檢測(cè)到某些工作可以通過設(shè)計(jì)助手完成時(shí),會(huì)在窗口上方給出提示,如下圖:
在這里插入圖片描述
系統(tǒng)搭建完成后,最好運(yùn)行DRC檢查避免設(shè)計(jì)中存在錯(cuò)誤。點(diǎn)擊上圖中的Validate Design按鈕(倒數(shù)第4個(gè)),如果沒有錯(cuò)誤會(huì)彈出如下提示窗口:
在這里插入圖片描述


把塊設(shè)計(jì)集成到頂層設(shè)計(jì)中

本節(jié)具體講述下設(shè)計(jì)步驟的3、4步。生成輸出產(chǎn)品會(huì)產(chǎn)生IP核的源文件與約束文件。導(dǎo)出文件的語言由工程設(shè)置決定,如果某IP核不支持該語言,導(dǎo)出時(shí)會(huì)提示相關(guān)信息。源窗口中選中IP Integrator驗(yàn)證好的塊設(shè)計(jì),右鍵->Generate Output Products,或在左側(cè)Flow Navigator中點(diǎn)擊IP INTEGRATOR->Generate Block Design,可導(dǎo)出該塊設(shè)計(jì)中所有IP的輸出文件。
在這里插入圖片描述
點(diǎn)擊上圖中的Create HDL Wrapper,可以將塊設(shè)計(jì)集成到一個(gè)更高層次的設(shè)計(jì)中。Vivado提供兩種封裝方式,如下圖:
在這里插入圖片描述
第一項(xiàng)允許設(shè)計(jì)者修改封裝文件,但如果塊設(shè)計(jì)的端口發(fā)生變化,設(shè)計(jì)者要記得更新封裝文件。第二項(xiàng)生成的封裝文件為Read-Only模式,Vivado自動(dòng)管理和更新該文件。封裝好后便可以執(zhí)行綜合、實(shí)現(xiàn)、生成bit流等操作。


硬件設(shè)計(jì)導(dǎo)出到SDK

當(dāng)把IP Integrator中的處理器硬件設(shè)計(jì)導(dǎo)出到SDK時(shí),會(huì)生成下表中格式的一些文件。

文件名功能
system.xml運(yùn)行SDK時(shí)默認(rèn)打開,顯示系統(tǒng)的地址映射相關(guān)信息
Ps<#>_init.c Ps<#>_init.h包含Zynq處理器系統(tǒng)的初始化代碼,還有DDR、時(shí)鐘、PLL和MIO的初始化設(shè)置信息
PS<#>_init.tcl初始化文件的Tcl版本
PS<#>_init.html描述初始化數(shù)據(jù)

SDK提供了為Xilinx嵌入式處理器創(chuàng)建軟件應(yīng)用的完整開發(fā)環(huán)境,具體包括:基于GNU的編譯工具鏈(GCC編譯器、TCF系統(tǒng)調(diào)試器、相關(guān)單元和庫)、JTAG調(diào)試器、Flash編程器、Xilinx IP和裸機(jī)板級(jí)支持包的驅(qū)動(dòng)、使用C/C++進(jìn)行裸機(jī)開發(fā)或Linux應(yīng)用開發(fā)的IDE。SDK基于開源的Eclipse平臺(tái)開發(fā),還包含了C/C++開發(fā)工具箱。

當(dāng)設(shè)計(jì)已經(jīng)實(shí)現(xiàn)并生成了bit流時(shí),通常都需要將設(shè)計(jì)導(dǎo)出到SDK中進(jìn)行軟件應(yīng)用開發(fā)。某些設(shè)計(jì)中PL部分可能不包含任何邏輯(即單純地把Zynq當(dāng)作ARM來使用),無需實(shí)現(xiàn)和生成bit流便可導(dǎo)出設(shè)計(jì)。先點(diǎn)擊File->Export->Export Hardware,彈出如下窗口:
在這里插入圖片描述
選中“Include bitstream”,點(diǎn)擊OK導(dǎo)出硬件信息。完成后再點(diǎn)擊File->Launch SDK即可運(yùn)行SDK。之后便可以在SDK中進(jìn)行軟件應(yīng)用設(shè)計(jì)。設(shè)計(jì)完成后還可以在SDK中調(diào)試、下載軟件,也可以導(dǎo)出ELF文件,在Vivado中和bit流一起進(jìn)行下載、測(cè)試。


Hello World實(shí)例

本文前面介紹了一些FPGA嵌入式開發(fā)的基本知識(shí)和軟件特性,本小節(jié)將以一個(gè)完整的Hellow World實(shí)例熟悉如何搭建Zynq-700 AP SoC處理器。這個(gè)過程中將運(yùn)用到上述特性,也會(huì)出現(xiàn)一些大家不熟悉的概念。本節(jié)著重體會(huì)一個(gè)大致的流程,具體概念在下一篇著重講述。

  1. Vivado中建立一個(gè)工程,選擇芯片時(shí)選擇一個(gè)與開發(fā)板相符的型號(hào)。
  2. 點(diǎn)擊IP INTEGRATOR->Create Block Design,為塊設(shè)計(jì)命名。
  3. 白板中添加IP核“ZYNQ7 Processing System”,注意上方彈出設(shè)計(jì)助手,點(diǎn)擊Run Block Automation,彈出窗口如下:
    在這里插入圖片描述
  4. 設(shè)計(jì)助手提示我們會(huì)自動(dòng)創(chuàng)建FIXED_IO和DDR,直接點(diǎn)擊OK:
    在這里插入圖片描述
  5. 將M_AXI_GP0_ACLK和FCLK_CLK0手工連在一起:
    在這里插入圖片描述
  6. 雙擊ZYNQ,對(duì)IP核進(jìn)行配置。首先在“Clock Configuration”中配置時(shí)鐘,參數(shù)要與開發(fā)板相符。這里PS時(shí)鐘為33.3M。
    在這里插入圖片描述
  7. DDR Configuration中配置DDR內(nèi)存,同樣要與開發(fā)板相符,DDR Controller Configuration->Memory Part中要選擇正確的DDR芯片型號(hào)。
    在這里插入圖片描述
  8. 接下來在MIO Configuration中配置PS部分的外部I/O信息,我這里只希望用一組串口打印“Hello World”,因此只配置了UART1,另外Bank0核Bank1的I/O電壓設(shè)置也要與開發(fā)板相符。
    在這里插入圖片描述
  9. 配置完成后,依次生成輸出產(chǎn)品、用wrapper封裝、生成bit流、導(dǎo)出硬件、啟動(dòng)SDK(注意某些開發(fā)板需要在啟動(dòng)SDK前便與電腦連接好)。
  10. 耐心等待SDK啟動(dòng)和加載完硬件,窗口如下。左側(cè)Project Explorer顯示了硬件平臺(tái)信息,中間顯示了地址映射關(guān)系。基于創(chuàng)建好的硬件平臺(tái),我們可以創(chuàng)建多個(gè)軟件應(yīng)用。
    在這里插入圖片描述
  11. 點(diǎn)擊File->New->New Application Project創(chuàng)建新的應(yīng)用,這里只設(shè)置了工程名,如下:
    在這里插入圖片描述
  12. 點(diǎn)擊Next,選擇示例工程Hello World,點(diǎn)擊Finish。
    在這里插入圖片描述
  13. 接下來對(duì)該示例工程進(jìn)行調(diào)試,選擇如下圖:
    在這里插入圖片描述
  14. 彈出窗口中,Xilinx C/C++ application(System Debugger)->右鍵->new:
    在這里插入圖片描述
  15. 彈出如下窗口。如果導(dǎo)出硬件時(shí)沒有選擇Include bitstream,此處Bitstream File窗口顯示為空,點(diǎn)擊Browse選擇即可。選中Reset entire system和Program FPGA,點(diǎn)擊Apply,再點(diǎn)擊Debug。
    在這里插入圖片描述
  16. 等待Debug加載完成。注意如果你發(fā)生這種情況:Vivado中可以檢測(cè)到FPGA且正常下載程序,但一到SDK中就檢測(cè)不到FPGA,最簡單的解決方法就是開發(fā)板上不要插入帶有操作系統(tǒng)程序的SD卡。很多初學(xué)者就是犯了這個(gè)錯(cuò)誤,導(dǎo)致無法從SDK中下載程序。
  17. 在下方的SDK Termianl窗口中,點(diǎn)擊“+”添加串口,Port為對(duì)應(yīng)COM號(hào):
    在這里插入圖片描述
  18. 連接成功后,SDK Terminal窗口中有相應(yīng)提示,點(diǎn)擊Resume按鈕或按F8,終端中打印出Hello World,表明功能正確。
    在這里插入圖片描述

至此便完成了一個(gè)簡單的嵌入式開發(fā)實(shí)例,接下來的文章將介紹整個(gè)流程中設(shè)計(jì)到的很多概念,以及一些選項(xiàng)的具體配置方法。本文實(shí)驗(yàn)使用的是SDK自帶例程,后面的文章中也會(huì)講述如何自己在SDK中編程。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多