?
?
Xilinx Pynq 框架允許我們將 Python 和可編程邏輯結(jié)合起來。讓我們看看如何為自己的ZYNQ板卡創(chuàng)建 Pynq 鏡像。
介紹
Python 是目前最熱門的編程語言之一(Python是一種高級(jí)編程語言,由Guido van Rossum于1991年開發(fā)。它具有簡(jiǎn)潔、易讀、易學(xué)的特點(diǎn),被廣泛應(yīng)用于各個(gè)領(lǐng)域的軟件開發(fā)。),我們希望能夠在 FPGA/SoC 開發(fā)中利用使用 Python 帶來的生產(chǎn)力紅利。
Xilinx Pynq 框架允許開發(fā)人員做到這一點(diǎn),利用 Python 使用可編程邏輯的進(jìn)行加速。
在 Pynq 框架內(nèi),可編程邏輯設(shè)計(jì)稱為overlays(覆蓋層),并被視為硬件庫。雖然創(chuàng)建新的overlays需要 FPGA 設(shè)計(jì)經(jīng)驗(yàn),但越來越多的開源overlays可供開發(fā)人員使用 ( http://www.pynq.io/community.html )
然而,有時(shí)我們需要不同或自定義板的 Pynq 映像,讓我們看看如何為自己的Z7010 板創(chuàng)建 Pynq 鏡像。
創(chuàng)建環(huán)境
我們需要做的第一件事是創(chuàng)建一個(gè)虛擬機(jī),配置如下:
Ubuntu 16.04
4 個(gè)處理器核心
至少 8 G 內(nèi)存
至少 300 G 硬盤空間
配置機(jī)器進(jìn)行無密碼 sudo 操作
虛擬機(jī)啟動(dòng)并運(yùn)行后,我們需要做的下一件事是安裝構(gòu)建 Pynq 所需的應(yīng)用程序。
需要什么工具?
要?jiǎng)?chuàng)建 Pynq 映像,我們需要在 Linux 虛擬機(jī)上安裝以下工具
Vivado 2018.2
SDK 2018.2
PetaLinux 2018.2
我們還需要使用以下命令從 Xilinx GitHub 克隆 Pynq 存儲(chǔ)庫。
?
git?clone?https://github.com/Xilinx/Pynq.git

?
clone Pynq 存儲(chǔ)庫后,將能夠看到包含許多文件夾的 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
一旦這個(gè)腳本運(yùn)行完成,接下來我們確保可以重建現(xiàn)有的主板(確保環(huán)境無問題)。
在這種情況下,決定重建 Pynq Z1 映像,為此我將目錄更改為 SDBuild 目錄并運(yùn)行命令
?
make?BOARDS=Pynq-Z1?
?
將啟動(dòng)鏡像創(chuàng)建過程
構(gòu)建過程可能需要一段時(shí)間(如果速度很慢,請(qǐng)檢查分配給虛擬機(jī)的處理器數(shù)量)。完成后 SDBuild 目錄下有一個(gè)輸出目錄。
在此將找到 Pynq-Z1 鏡像
現(xiàn)在我們知道我們可以重新創(chuàng)建 Pynq 鏡像來開發(fā)我們的自定義鏡像。
構(gòu)建基礎(chǔ)覆蓋層
Pynq 構(gòu)建首先需要的東西之一是基礎(chǔ)覆蓋層。對(duì)于自己的開發(fā)板,我們將使用 Pynq Z1 鏡像作為起點(diǎn)。
打開 Vivado (2018.2) 并在 Vivado TCL 窗口中獲取以下腳本。可以在目錄中找到它們
boards/Pynq-Z1/base
?
source?build_base_ip.tcl? Source?base.tcl?
?
第一個(gè)命令將生成必要的 IP,而第二個(gè)命令將在 Vivado 項(xiàng)目中重新創(chuàng)建設(shè)計(jì)。
現(xiàn)在我們需要做的就是更改設(shè)備型號(hào)(FPGA型號(hào))。
根據(jù)板卡外設(shè)添加自己的外設(shè)到工程中,其中包括
Pmod A
Pmod B
Tri-coloured LEDs
Switches (push buttons on the Cora)
I2C interface
SPI Interface
然而,由于我們可用的資源較少,我們需要?jiǎng)h除一些功能。最終的基礎(chǔ)平臺(tái)如下。
然后,在 Vivado 中生成bit,以確保設(shè)計(jì)符合我們的設(shè)計(jì)
此步驟的目的是確保新的基礎(chǔ)平臺(tái)適合 Zynq 7010 器件,并允許重新生成我們用于自定義板卡的base.tcl 。
創(chuàng)建新板
生成鏡像之前的最后一步是在目錄下創(chuàng)建一個(gè)新板
pynq/boards
創(chuàng)建新板需要?jiǎng)?chuàng)建一個(gè)以目標(biāo)板命名的新目錄,在本例中為 cora。
在此目錄中,我們還需要?jiǎng)?chuàng)建幾個(gè)目錄和板規(guī)范。
電路板規(guī)格是一個(gè)文本文件,包含以下信息
目錄是:
base - 這包含基礎(chǔ)覆蓋層和相關(guān)的設(shè)計(jì)信息notebooks - 這包含 juypter notebookspetalinux_bsp - Linux BSP
使用 Pynq Z1 作為每個(gè)目錄的模板,根據(jù) Cora 板(自己的板卡)和較小的 7010 設(shè)備的需要更新 tcl、xdc 和 python 文件。
使用基本目錄中的 make 腳本生成基本設(shè)計(jì)的位文件。
當(dāng)上面所有操作完成后,可以使用 SDBuild 目錄中的命令啟動(dòng) Pynq 構(gòu)建
?
make?BOARDS=cora?
?
同樣,這需要一段時(shí)間才能結(jié)束,但結(jié)果將與之前相同
硬件測(cè)試
啟動(dòng)時(shí)要監(jiān)控的是串口輸出,通過串口打印能監(jiān)控到 Pynq 的啟動(dòng)是否正確。
FPGA 啟動(dòng) Pynq 映像后,下一步是檢查 FPGA 能否連接到網(wǎng)絡(luò),以便可以訪問 Jupyter notebooks。
?
$?ifconfig?

?
最后階段是測(cè)試 Jupyter notebooks。在與 Pynq 位于同一網(wǎng)絡(luò)的計(jì)算機(jī)上打開瀏覽器并輸入網(wǎng)址 pynq:9090
將進(jìn)入登錄屏幕,密碼是 xilinx
登錄后,將看到筆記本和目錄
一旦我們點(diǎn)擊一個(gè)notebook,它就會(huì)開始運(yùn)行,我們可以通過點(diǎn)擊運(yùn)行選項(xiàng)來看到正在運(yùn)行的notebook。
如果需要,我們還可以在 Jupyter 環(huán)境中打開終端窗口
看起來 Pynq 環(huán)境已在我們自己的板上啟動(dòng)并運(yùn)行,我們現(xiàn)在可以根據(jù)需要開始開發(fā)解決方案和覆蓋層。
評(píng)論