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

圖1 建立工程
輸入工程名和工程位置,并勾選<code>Create project subdirectory</code>,然後點選<code>Next</code>,如圖2所示。
圖2 工程設定
選擇<code>RTL Project</code>,勾選<code>Do not specify......</code>(這樣可以跳過添加源檔案的步驟,源檔案可以後面再添加),點選<code>Next</code>,如圖3所示。
圖3 工程類型
根據自己的開發闆選擇器件型号,可以直接通過型号進行搜尋,例如本項目中使用的晶片型号為<code>xc7z010clg400-1</code>,點選<code>Next</code>,如圖4所示。
圖4 器件選擇
點選<code>Finish</code>,如圖5所示,項目建立完成。
圖5 完成
在<code>Flow Navigater</code>視窗中,點選<code>Create Block Design</code>,建立Block并命名,如圖6所示。點選<code>OK</code>添加。
圖6 建立Block
在<code>Diagram</code>視窗中,點選中間的圖示添加ARM核,如圖7所示。添加<code>ZYNQ7 Processing System</code>。
圖7 添加ARM
然後點選<code>Run Block Automation</code>,進行I/O連接配接,在彈出的視窗中,點選<code>OK</code>,如圖8所示。
圖8 自動連線
ARM添加完成,如圖9所示。
圖9 添加完成
在<code>Diagram</code>視窗中,輕按兩下ARM核,彈出配置視窗,如圖10所示。
圖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所示。
圖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的時鐘頻率。
圖13 時鐘配置
點選<code>DDR Configuration</code>,根據DDR晶片的要求,配置DDR的時序。如圖14所示。
圖14 DDR配置
點選<code>Interrupts</code>,設定PL到PS的中斷,勾選<code>Fabric Interrupts</code>,然後展開<code>PL-PS Interrupt ports</code>,勾選<code>IRQ_F2P[15:0]</code>。如圖15所示。
圖15 中斷配置
選擇<code>Flow Navigator</code>視窗中的<code>IP Catalog</code>,如圖16所示。在IP清單中選擇需要使用的IP,添加到<code>Diagram</code>中,并進行配置。
圖16 IP清單
在Vivado中,IP一般都使用的AXI-Lite總線或AXI-Stream總線,而PS提供的AXI_GP和AXI_HP都是标準AXI4總線,需要使用AXI互聯子產品進行适配後與其他的IP連接配接。不過Vivado提供自動連接配接功能的,當IP添加完成後,點選<code>Run Connection Automation</code>就可以自動連接配接。如圖17所示。
圖17 AXI總線連接配接
然後添加需要的IO口,最後連接配接好的效果如圖18所示。
圖18 連接配接拓撲圖
然後選擇<code>Address Editor</code>對各個AXI外設的位址空間進行配置。對每個外設點右鍵,選擇<code>Assign Address</code>,自動給外設配置設定位址控制。如圖19所示。
圖19 外設位址配置
然後點選<code>Validate Design</code>對整個設計進行檢查,如圖20所示。如果出現異常,需要查找問題并進行修改,知道檢查通過後才能進行下一步。
圖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>。
圖22 生成頂層子產品
在<code>Block Design</code>下的<code>Source</code>視窗中,選擇<code>Constraints</code>,點右鍵選擇<code>Add Source...</code>,如圖23所示。選擇<code>Add or create constraints</code>,建立一個限制檔案。
圖23 增加限制
然後在<code>Flow Navigator</code>中,選擇<code>Generate Bitstream</code>,來進行編譯和綜合。如圖24所示。
圖24 生産BIT檔案