天天看點

ZYNQ平台學習--(1)建立工程

打開Vivado軟體,在歡迎界面點選 <code>Create New Project</code>,即可建立工程。如圖1所示,點選<code>Next</code>。 

ZYNQ平台學習--(1)建立工程

圖1 建立工程

輸入工程名和工程位置,并勾選<code>Create project subdirectory</code>,然後點選<code>Next</code>,如圖2所示。 

ZYNQ平台學習--(1)建立工程

圖2 工程設定

選擇<code>RTL Project</code>,勾選<code>Do not specify......</code>(這樣可以跳過添加源檔案的步驟,源檔案可以後面再添加),點選<code>Next</code>,如圖3所示。 

圖3 工程類型

根據自己的開發闆選擇器件型号,可以直接通過型号進行搜尋,例如本項目中使用的晶片型号為<code>xc7z010clg400-1</code>,點選<code>Next</code>,如圖4所示。 

ZYNQ平台學習--(1)建立工程

圖4 器件選擇

點選<code>Finish</code>,如圖5所示,項目建立完成。 

ZYNQ平台學習--(1)建立工程

圖5 完成

在<code>Flow Navigater</code>視窗中,點選<code>Create Block Design</code>,建立Block并命名,如圖6所示。點選<code>OK</code>添加。 

ZYNQ平台學習--(1)建立工程

圖6 建立Block

在<code>Diagram</code>視窗中,點選中間的圖示添加ARM核,如圖7所示。添加<code>ZYNQ7 Processing System</code>。 

ZYNQ平台學習--(1)建立工程

圖7 添加ARM

然後點選<code>Run Block Automation</code>,進行I/O連接配接,在彈出的視窗中,點選<code>OK</code>,如圖8所示。 

ZYNQ平台學習--(1)建立工程

圖8 自動連線

ARM添加完成,如圖9所示。 

ZYNQ平台學習--(1)建立工程

圖9 添加完成

在<code>Diagram</code>視窗中,輕按兩下ARM核,彈出配置視窗,如圖10所示。 

ZYNQ平台學習--(1)建立工程

圖10 ARM配置

點選<code>PS-PL Configuration</code>,配置PL與PS之間的AMBA總線。PL與PS之間的總線主要有三種: 

- AXI_ACP接口,是ARM多核架構下定義的一種接口,中文翻譯為加速器一緻性端口,用來管理DMA之類的不帶緩存的AXI外設,PS端是Slave接口。 

- AXI_HP接口,是高性能/帶寬的AXI3.0标準的接口,總共有四個,PL子產品作為主裝置連接配接。主要用于PL通路PS上的存儲器(DDR和On-Chip RAM)。 

- AXI_GP接口,是通用的AXI接口,總共有四個,包括兩個32位主裝置接口和兩個32位從裝置接口 

展開<code>AXI Non Secure Enablement</code>和<code>GP Master AXI Interface</code>,勾選<code>M AXI GP0 interface</code>;展開<code>HP Slave AXI Interface</code>,勾選<code>S AXI HP0 interface</code>和<code>S AXI HP2 interface</code>。如圖11所示。 

ZYNQ平台學習--(1)建立工程

圖11 AXI總線配置

點選<code>MIO Configuration</code>,配置PS的引腳功能。在本項目中,Bank0的電壓為3.3V,Bank1的電壓為1.8V,如圖12所示。 

注:當使用eMMC的時候,SD的CP引腳和WP引腳需要配置EMIO,并連接配接到低電平上。 

圖12 MIO配置

點選<code>Clock Configuration</code>,配置Zynq的時鐘,如圖13所示。 

注:如出現SD卡識别異常的時候,可以降低SDIO的時鐘頻率。 

ZYNQ平台學習--(1)建立工程

圖13 時鐘配置

點選<code>DDR Configuration</code>,根據DDR晶片的要求,配置DDR的時序。如圖14所示。 

ZYNQ平台學習--(1)建立工程

圖14 DDR配置

點選<code>Interrupts</code>,設定PL到PS的中斷,勾選<code>Fabric Interrupts</code>,然後展開<code>PL-PS Interrupt ports</code>,勾選<code>IRQ_F2P[15:0]</code>。如圖15所示。 

ZYNQ平台學習--(1)建立工程

圖15 中斷配置

選擇<code>Flow Navigator</code>視窗中的<code>IP Catalog</code>,如圖16所示。在IP清單中選擇需要使用的IP,添加到<code>Diagram</code>中,并進行配置。 

ZYNQ平台學習--(1)建立工程

圖16 IP清單

在Vivado中,IP一般都使用的AXI-Lite總線或AXI-Stream總線,而PS提供的AXI_GP和AXI_HP都是标準AXI4總線,需要使用AXI互聯子產品進行适配後與其他的IP連接配接。不過Vivado提供自動連接配接功能的,當IP添加完成後,點選<code>Run Connection Automation</code>就可以自動連接配接。如圖17所示。 

ZYNQ平台學習--(1)建立工程

圖17 AXI總線連接配接

然後添加需要的IO口,最後連接配接好的效果如圖18所示。 

ZYNQ平台學習--(1)建立工程

圖18 連接配接拓撲圖

然後選擇<code>Address Editor</code>對各個AXI外設的位址空間進行配置。對每個外設點右鍵,選擇<code>Assign Address</code>,自動給外設配置設定位址控制。如圖19所示。 

ZYNQ平台學習--(1)建立工程

圖19 外設位址配置

然後點選<code>Validate Design</code>對整個設計進行檢查,如圖20所示。如果出現異常,需要查找問題并進行修改,知道檢查通過後才能進行下一步。 

ZYNQ平台學習--(1)建立工程

圖20 檢查

在<code>Block Design</code>下的<code>Source</code>視窗中,對上面建立的Block點右鍵,選擇<code>Generate Output Products...</code>,生成各個IP的代碼等檔案,如圖21所示。在彈出的視窗中,點選<code>Generate</code>。 

圖21 IP檔案生成

然後再對Block點右鍵,選擇<code>Create HDL Wrapper...</code>,生成頂層子產品,如圖22所示。在彈出的視窗中,點選<code>Let Vivado manage wrapper and auto-update</code>。 

ZYNQ平台學習--(1)建立工程

圖22 生成頂層子產品

在<code>Block Design</code>下的<code>Source</code>視窗中,選擇<code>Constraints</code>,點右鍵選擇<code>Add Source...</code>,如圖23所示。選擇<code>Add or create constraints</code>,建立一個限制檔案。 

ZYNQ平台學習--(1)建立工程

圖23 增加限制

然後在<code>Flow Navigator</code>中,選擇<code>Generate Bitstream</code>,來進行編譯和綜合。如圖24所示。 

ZYNQ平台學習--(1)建立工程

圖24 生産BIT檔案