?
?
Xilinx Pynq 框架允許我們將 Python 和可編程邏輯結(jié)合起來。讓我們看看如何為自己的ZYNQ板卡創(chuàng)建 Pynq 鏡像。
介紹
Python 是目前最熱門的編程語言之一(Python是一種高級編程語言,由Guido van Rossum于1991年開發(fā)。它具有簡潔、易讀、易學(xué)的特點(diǎn),被廣泛應(yīng)用于各個領(lǐng)域的軟件開發(fā)。),我們希望能夠在 FPGA/SoC 開發(fā)中利用使用 Python 帶來的生產(chǎn)力紅利。
Xilinx Pynq 框架允許開發(fā)人員做到這一點(diǎn),利用 Python 使用可編程邏輯的進(jìn)行加速。
在 Pynq 框架內(nèi),可編程邏輯設(shè)計稱為overlays(覆蓋層),并被視為硬件庫。雖然創(chuàng)建新的overlays需要 FPGA 設(shè)計經(jīng)驗(yàn),但越來越多的開源overlays可供開發(fā)人員使用 ( http://www.pynq.io/community.html )
然而,有時我們需要不同或自定義板的 Pynq 映像,讓我們看看如何為自己的Z7010 板創(chuàng)建 Pynq 鏡像。
創(chuàng)建環(huán)境
我們需要做的第一件事是創(chuàng)建一個虛擬機(jī),配置如下:
Ubuntu 16.04
4 個處理器核心
至少 8 G 內(nèi)存
至少 300 G 硬盤空間
配置機(jī)器進(jìn)行無密碼 sudo 操作
虛擬機(jī)啟動并運(yùn)行后,我們需要做的下一件事是安裝構(gòu)建 Pynq 所需的應(yīng)用程序。
需要什么工具?
要創(chuàng)建 Pynq 映像,我們需要在 Linux 虛擬機(jī)上安裝以下工具
Vivado 2018.2
SDK 2018.2
PetaLinux 2018.2
我們還需要使用以下命令從 Xilinx GitHub 克隆 Pynq 存儲庫。
?
git?clone?https://github.com/Xilinx/Pynq.git
?
clone Pynq 存儲庫后,將能夠看到包含許多文件夾的 Pynq 目錄。
Boards - 現(xiàn)有主板規(guī)格、Juypter Notebook 和基礎(chǔ)覆蓋層
Doc - 文檔來源
Pynq - Python 和相關(guān)的支持文件
SDBuild - 包含構(gòu)建 Pynq 映像的所有腳本和資源
要正確設(shè)置我們的構(gòu)建環(huán)境,下一步是在目錄中運(yùn)行設(shè)置環(huán)境腳本(setup_host.sh)
Pynq/SDBuild/Scripts
一旦這個腳本運(yùn)行完成,接下來我們確保可以重建現(xiàn)有的主板(確保環(huán)境無問題)。
在這種情況下,決定重建 Pynq Z1 映像,為此我將目錄更改為 SDBuild 目錄并運(yùn)行命令
?
make?BOARDS=Pynq-Z1?
?
將啟動鏡像創(chuàng)建過程
構(gòu)建過程可能需要一段時間(如果速度很慢,請檢查分配給虛擬機(jī)的處理器數(shù)量)。完成后 SDBuild 目錄下有一個輸出目錄。
在此將找到 Pynq-Z1 鏡像
現(xiàn)在我們知道我們可以重新創(chuàng)建 Pynq 鏡像來開發(fā)我們的自定義鏡像。
構(gòu)建基礎(chǔ)覆蓋層
Pynq 構(gòu)建首先需要的東西之一是基礎(chǔ)覆蓋層。對于自己的開發(fā)板,我們將使用 Pynq Z1 鏡像作為起點(diǎn)。
打開 Vivado (2018.2) 并在 Vivado TCL 窗口中獲取以下腳本。可以在目錄中找到它們
boards/Pynq-Z1/base
?
source?build_base_ip.tcl? Source?base.tcl?
?
第一個命令將生成必要的 IP,而第二個命令將在 Vivado 項目中重新創(chuàng)建設(shè)計。
現(xiàn)在我們需要做的就是更改設(shè)備型號(FPGA型號)。
根據(jù)板卡外設(shè)添加自己的外設(shè)到工程中,其中包括
Pmod A
Pmod B
Tri-coloured LEDs
Switches (push buttons on the Cora)
I2C interface
SPI Interface
然而,由于我們可用的資源較少,我們需要刪除一些功能。最終的基礎(chǔ)平臺如下。
然后,在 Vivado 中生成bit,以確保設(shè)計符合我們的設(shè)計
此步驟的目的是確保新的基礎(chǔ)平臺適合 Zynq 7010 器件,并允許重新生成我們用于自定義板卡的base.tcl 。
創(chuàng)建新板
生成鏡像之前的最后一步是在目錄下創(chuàng)建一個新板
pynq/boards
創(chuàng)建新板需要創(chuàng)建一個以目標(biāo)板命名的新目錄,在本例中為 cora。
在此目錄中,我們還需要創(chuàng)建幾個目錄和板規(guī)范。
電路板規(guī)格是一個文本文件,包含以下信息
目錄是:
base - 這包含基礎(chǔ)覆蓋層和相關(guān)的設(shè)計信息notebooks - 這包含 juypter notebookspetalinux_bsp - Linux BSP
使用 Pynq Z1 作為每個目錄的模板,根據(jù) Cora 板(自己的板卡)和較小的 7010 設(shè)備的需要更新 tcl、xdc 和 python 文件。
使用基本目錄中的 make 腳本生成基本設(shè)計的位文件。
當(dāng)上面所有操作完成后,可以使用 SDBuild 目錄中的命令啟動 Pynq 構(gòu)建
?
make?BOARDS=cora?
?
同樣,這需要一段時間才能結(jié)束,但結(jié)果將與之前相同
硬件測試
啟動時要監(jiān)控的是串口輸出,通過串口打印能監(jiān)控到 Pynq 的啟動是否正確。
FPGA 啟動 Pynq 映像后,下一步是檢查 FPGA 能否連接到網(wǎng)絡(luò),以便可以訪問 Jupyter notebooks。
?
$?ifconfig?
?
最后階段是測試 Jupyter notebooks。在與 Pynq 位于同一網(wǎng)絡(luò)的計算機(jī)上打開瀏覽器并輸入網(wǎng)址 pynq:9090
將進(jìn)入登錄屏幕,密碼是 xilinx
登錄后,將看到筆記本和目錄
一旦我們點(diǎn)擊一個notebook,它就會開始運(yùn)行,我們可以通過點(diǎn)擊運(yùn)行選項來看到正在運(yùn)行的notebook。
如果需要,我們還可以在 Jupyter 環(huán)境中打開終端窗口
看起來 Pynq 環(huán)境已在我們自己的板上啟動并運(yùn)行,我們現(xiàn)在可以根據(jù)需要開始開發(fā)解決方案和覆蓋層。
評論
查看更多