本原創教程由芯驛電子科技(上海)有限公司(ALINX)創做,版權歸本公司全部,如需轉載,需受權並註明出處。架構
AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EGapp
vivado工程目錄爲「ps_hello/vivado」學習
從本章開始由FPGA工程師與軟件開發工程師協同實現。設計
前面的實驗都是在PL端進行的,能夠看到和普通FPGA開發流程沒有任何區別,ZYNQ的主要優點就是FPGA和ARM的合理結合,這對開發人員提出了更高的要求。從本章開始,咱們開始使用ARM,也就是咱們說的PS,本章咱們使用一個簡單的串口打印來體驗一下Vivado Vitis和PS端的特性。3d
前面的實驗都是FPGA工程師應該作的事情,從本章節開始就有了分工,FPGA工程師負責把Vivado工程搭建好,提供好硬件給軟件開發人員,軟件開發人員便能在這個基礎上開發應用程序。作好分工,也有利於項目的推動。若是是軟件開發人員想把全部的事情都作了,可能須要花費不少時間和精力去學習FPGA的知識,由軟件思惟轉成硬件思惟是個比較痛苦的過程,若是純粹的學習,又有時間,就另當別論了。專業的人作專業的事,是個很好的選擇。orm
1. 硬件介紹blog
咱們從原理圖中能夠看到ZYNQ芯片分爲PL和PS,PS端的IO分配相對是固定的,不能任意分配,並且不須要在Vivado軟件裏分配管腳,雖然本實驗僅僅使用了PS,可是還要創建一個Vivado工程,用來配置PS管腳。雖然PS端的ARM是硬核,可是在ZYNQ當中也要將ARM硬核添加到工程當中才能使用。前面章節介紹的是代碼形式的工程,本章開始介紹ZYNQ的圖形化方式創建工程。教程
FPGA工程師工做內容開發
下面介紹FPGA工程師負責內容。文檔
2. Vivado工程創建
2.1 建立一個名爲「ps_hello」的工程,創建過程再也不贅述,參考「PL的」Hello World」LED實驗」。
2.2 點擊「Create Block Design」,建立一個Block設計,也就是圖形化設計
2.3 「Design name」這裏不作修改,保持默認「design_1」,這裏能夠根據須要修改,不過名字要儘可能簡短,不然在Windows下編譯會有問題。
2.4 點擊「Add IP」快捷圖標
2.5 搜索「zynq」,在搜索結果列表中雙擊」Zynq UltraScale+ MPSoC」
2.6 雙擊Block圖中的ZYNQ核,配置相關參數
2.7 首先出現的界面是ZYNQ硬核的架構圖,能夠很清楚看到它的結構,能夠參考ug1085文檔,裏面有對ZYNQ的詳細介紹。圖中綠色部分是可配置模塊,能夠點擊進入相應的編輯界面,固然也能夠在左側的窗口進入編輯。下面對各個窗口的功能一一介紹。
2.7.1 Low Speed配置
1) 在I/O Configuration窗口,配置BANK0~BANK2電壓爲LVCMOS18,BANK3電壓爲LVCMOS33。首先配置Low Speed管腳,勾選QSPI,並設置爲」Single」模式,Data Mode爲」x4「,勾選Feedback Clk
2) (AXU2CGA開發板沒有EMMC,不須要勾選此項)勾選SD 0,配置eMMC。選擇MIO13..22,Slot Type選擇eMMC,Data Transfer Mode爲8Bit,勾選Reset,並選擇MIO23。
3) 勾選SD 1,配置SD卡。選擇MIO 46..51,Slot Type選擇SD 2.0,Data Transfer Mode選擇4Bit,勾選CD,用於檢測SD卡插入,選擇MIO45
4) 勾選I2C 1,用於EEPROM等的I2C,選擇MIO 32..33
5) 勾選串口UART 1,選擇MIO 42..43
6) 勾選TTC0~TTC 3
2.7.2High Speed配置
1) High Speed部分首先配置PS端以太網,勾選GEM 3,選擇MIO 64..75,勾選MDIO 3,選擇MIO 76..77
2) 勾選USB 0,選擇MIO 52..63,勾選USB 3.0,選擇GT Lane1
USB復位選擇MIO 31
3) 勾選PCIe
4) 點開Switch To Advanced Mode,選擇PCIe Configuration,修改如下幾個參數,配置爲ROOT模式
5) 回到I/O Configuration,選擇GT Lane0,復位選擇MIO 37;勾選Display Port,選擇MIO 27..30,Lane Selection選擇Dual Higher
至此,I/O部分配置完畢
2.7.3 時鐘配置
1) 在Clock Configuration界面,Input Clocks窗口配置參考時鐘,其中PSS_REF_CLOCK爲ARM的參考時鐘默認爲33.333MHz;PCIe選擇Ref Clk0,100MHz;Display Port選擇Ref Clk2,27MHz;USB0選擇Ref Clk1,26MHz。
2) 在Output Clocks窗口,若是不是IOPLL,改爲IOPLL,保持一致,用一樣的PLL
3) PL的時鐘保持默認,這是給PL端邏輯提供的時鐘。
4) Full Power部分,其餘保持默認,將DP_VIDEO改成VPLL,DP_AUDIO和DP_STC改成RPLL。
最下面的Interconnect修改以下
其餘部分保持默認,至此,時鐘部分配置完成。
2.7.4 DDR配置
在DDR Configuration窗口中,Load DDR Presets選擇」DDR4_MICRON_MT40A256M16GE_083E」
AXU2CGA開發板配置以下:
AXU2CGB開發板配置以下:
其它保持默認,點擊OK,配置完成,並鏈接時鐘以下:
1)選擇Block設計,右鍵「Create HDL Wrapper...」,建立一個Verilog或VHDL文件,爲block design生成HDL頂層文件。
2)保持默認選項,點擊「OK」
3)展開設計能夠看到PS被當成一個普通IP 來使用。
4)選擇block設計,右鍵「Generate Output Products」,此步驟會生成block的輸出文件,包括IP,例化模板,RTL源文件,XDC約束,第三方綜合源文件等等。供後續操做使用。
5)點擊「Generate」
6)在菜單欄「File -> Export -> Export Hardware...」導出硬件信息,這裏就包含了PS端的配置信息。
7) 在彈出的窗口中選擇Fixed,點擊Next
8) 在彈出的對話框中點擊「OK」,由於實驗僅僅是使用了PS的串口,不須要PL參與,這裏就沒有使能不選擇「Include bitstream」,點擊Next
9) 可修改導出名字以及導出路徑,默認是在vivado工程目錄下的,這個文件能夠根據本身的須要在合適的位置,不必定要放在vivado工程下面,vivado和vitis軟件是獨立的。在這裏咱們選擇默認不作更改。點擊Next
點擊Finish
此時在工程目錄下能夠看到xsa文件,這個文件就是這個文件就包含了Vivado硬件設計的信息,可交由軟件開發人員使用。
到此爲止,FPGA工程師工做告一段落。