ZYNQ 純PL端邏輯資源程序固化
ZYNQ的程序固化流程比傳統的FPGA固化流程復雜很多,Vivado生成的bit文件無法直接固化在ZYNQ芯片中。因為ZYNQ 非易失性存儲器的引腳(如 SD 卡、QSPI Flash)是 ZYNQ PS 部分的專用引腳。這些非易失性存儲器由 PS 的 ARM 處理器進行驅動,因此需要將 bit 流文件和 elf 文件(軟件程序的下載文件)合成一個 BOOT.BIN,才能進行固化。
本文以按鍵控制LED亮滅的程序為例,將代碼固化至開發板上的QSPI FLASH中。
- 硬件平臺:正點原子領航者 ATK-DF7020P
- 軟件平臺:Vivado 2020.2
-
正常的開發流程將可綜合的RTL代碼編寫完成,確定代碼功能正確。本例中只有一個模塊。
-
點擊側邊欄
PROJECT MANAGER-IP INTEGRATER-Create Block Design
選項
-
在彈出的窗口中輸入合適的名稱,如
system
,隨后點擊OK
-
點擊
Diagram
窗口中的+
按鈕
-
在彈出的窗口中找到
ZYNQ7 Processing System
,回車選擇
-
雙擊出現的ZYNQ處理器模塊
-
由于純PL端的開發不涉及與ZYNQ處理器的通信,不需要使用到AXI總線,因此需要將總線接口關閉。
-
因為打開IP核界面,按下圖所示配置SPI FLASH外設。因為程序是固化在FLASH中的,因此,必須要對其進行配置。
-
然后配置DDR3。根據板載的DDR芯片選擇相應的型號,本例選擇的是MT41K256M16 RE-125
-
點擊
OK
結束配置 -
點擊
Source
,右鍵需要固化的模塊,選擇Add Module to Block Design
,或者直接左鍵按住模塊名稱,拖入中間圖形化界面中。
-
點擊
Run Connection Automation
進行自動連線
-
在彈出的界面中,勾選需要自動連線的模塊,確認時鐘源為ZYNQ FCLK端口提供的50MHZ時鐘
-
完成后的界面如下
-
選擇需要引出的端口,右鍵端口選擇
Make External
選項
-
全部完成后,點擊
Run Block Automation
-
彈出的窗口直接點擊
OK
-
點擊紅框中的按鈕進行驗證,如果出現綠色框中的彈窗,說明驗證正確。如果出現錯誤請檢查連線。
-
右鍵
Sources
中的Design Block
文件,選擇Generate Output Products
選項
-
直接點擊
generate
-
完成后,右鍵
Sources
中的Design Block
文件,選擇Create HDL Wrapper
選項
-
保持默認,點擊
OK
-
出現頂層文件后,按常規操作進行引腳分配
-
分配完成后,關閉
Elaborated Design
界面,按常規流程生成bit文件。隨后點擊File-Export-Export Hardware
選項
-
選擇
Include bitstream
選項
-
選擇合適的導出位置和導出的文件名,默認也可。點擊
Finish
結束
-
之后打開Vitis。選擇合適的文件夾,新建應用程序
-
點擊
Create a new platform from hardware
,找到剛才導出的文件
-
為工程命名,本例為FSBL
-
保持默認
-
選擇
Zynq FSBL
模板
-
直接右鍵應用工程名,點擊
Bulid Project
-
左鍵單擊系統工程名后,點擊
Xilinx-Create Boot Image
。
-
會彈出以下窗口,檢查無誤后,點擊
Create Image
。如果沒有自動填充文件,則說明沒有點擊系統工程名。如果顯示找不到elf文件,說明沒有編譯,需要先Bulid Project
。
-
生成成功后,點擊
Xilinx-Program Flash
-
將JTAG和電路板相連,確保ZYNQ芯片啟動模式處于JTAG模式。電路板上電后,點擊
Program
。藍色框中的選項,可選可不選。
-
寫入完成后,電路板斷電,斷開JTAG,將ZYNQ啟動模式調整為QSPI模式后,重新上電就能看到固化成功后的效果。