文章用于學(xué)習(xí)記錄
前言
- PYNQ 即 python+ZYNQ ,ZYNQ 分為 PS 和 PL 兩個部分。PS 有兩個 ARM 的核,在上面運(yùn)行 linux 操作系統(tǒng),在操作系統(tǒng)上再運(yùn)行 python。PL 部分就是 FPGA 的邏輯資源,開發(fā)者在 PL 中添加 IP 或者將自己用 C 或者 HDL 語言寫好的模塊封裝成 IP,這些 IP 都被連接到 PS 端,一般都是通過 AXI 總線。
- PYNQ 有一個特有的庫叫 overlay,使用這個庫可以對連接到 PS 端的接口進(jìn)行解析,進(jìn)而控制 FPGA 邏輯資源及 IO。每次當(dāng)你需要開始一個新的涉及 PL 端的開發(fā)的時候,先在 vivado 里面建一個工程,添加你需要的各種 IP,然后以 ZYNQ 為核心連接的設(shè)計,經(jīng)過編譯后,生成一個 bit 文件和一個 tcl 文件。bit 文件就是你的硬件設(shè)計,tcl 文件描述了接口關(guān)系。將這兩個文件復(fù)制到 PYNQ 的目錄下,即可進(jìn)行調(diào)用。
一、PYNQ-Z2 開發(fā)板板卡介紹
- PYNQ-Z2 開發(fā)板以 ZYNQ XC7Z020 FPGA 為核心,配備有以太網(wǎng),HDMI 輸入/輸出,MIC 輸入,音頻輸出,Arduino 接口,樹莓派接口,2 個 Pmod,用戶 LED,按鈕和開關(guān)。兼容樹莓派連接器、Arduino 屏蔽連接器以及 Pmod 連接器可以支持多種配件拓展,同時這些接口也可以用作 GPIO。
- PYNQ-Z2 開發(fā)板是 PYNQ 開源框架的硬件平臺。在 ARM A9 CPU 上運(yùn)行的軟件包括:
- 載有 Jupyter Notebooks 設(shè)計環(huán)境的網(wǎng)絡(luò)服務(wù)器
- IPython 內(nèi)核和程序包
- Linux
- FPGA
二、環(huán)境配置與板卡啟動
1. 軟硬件準(zhǔn)備
硬件:PC、PYNQ-Z2 開發(fā)板、以太網(wǎng)線、Micro USB 數(shù)據(jù)線、電源(7~15V)、8G 以上 Micro SD 卡及讀卡器;
軟件:鏡像燒寫軟件(如 Win32DiskImager)、vivado/HLS:2018、PYNQ 系統(tǒng)鏡像、支持 Jupyter 瀏覽器;
2. 燒寫鏡像
-
下載 PYNQ-Z2 鏡像文件并解壓
-
安裝鏡像燒寫軟件 Win32DiskImager
-
將插入SD 卡的讀卡器插入電腦,燒寫鏡像文件
-
Windows 系統(tǒng):使用 win32DiskImager 燒寫。Image File 選擇下載好的鏡像文件,Device 選擇 SD 卡的位置。
-
燒寫完成后, 將顯示寫入成功。
-
3. 連接 PC,上電啟動
- 將 Boot 跳線設(shè)置為 SD 位置。(這會將電路板設(shè)置為從 Micro-SD 卡啟動);
- Micro-USB 為板卡供電,將電源跳線設(shè)置到 USB 位置(也可以通過跳線設(shè)置為REG,從外部 12V 電源調(diào)節(jié)器為板卡供電);
- 將裝有 PYNQ-Z2 鏡像的 Micro SD 卡插入板卡下方的 Micro SD 卡插槽中;
- 使用 Micro USB 線將 PYNQ 開發(fā)板的 PROG UART(J14)接口連接到電腦。這將用來給 PYNQ 供電以及作為串口通信;
- 使用網(wǎng)線將 PYNQ 開發(fā)板連接到路由器或電腦(根據(jù)網(wǎng)線端口的選擇,后續(xù)操作會有不同);
- 將開關(guān)撥到 ON 以打開 PYNQ,等待系統(tǒng)啟動。大約一分鐘后將有兩個藍(lán)色的LED 和四個黃綠色的 LED 同時閃動,隨后藍(lán)色 LED 關(guān)閉,四個黃綠色的 LED 燈亮,此時系統(tǒng)啟動完畢。
PYNQ 啟動
三、給電腦配置一個靜態(tài)的 IP
- 如果 PYNQ 通過網(wǎng)線連接到了電腦,需要先設(shè)置電腦的 IP 地址,將 pc 端的 IP 地址改為192.168.2.100
- 選擇網(wǎng)絡(luò)和 Internet > 以太網(wǎng),
- 選擇IPV4的設(shè)置,點擊編輯,
- 將其改為192.168.2.x(不是99就可以了,不然和開發(fā)板的重復(fù)了),
- 子網(wǎng)掩碼默認(rèn)都是255.255.255.0,網(wǎng)關(guān)不用管,然后保存。
四、連接到 Jupyter
- 訪問 http://192.168.2.99:9090,密碼為 xilinx
- 登錄成功
五、Samba 文件共享
-
在 Windows 下訪問 PYNQ 主目錄,在文件資源管理器輸入\\192.168.2.99,可以實現(xiàn)文件在板子和電腦間傳遞,Samba 服務(wù)器的用戶名和密碼都是 xilinx。
-
點擊“確定”按鈕后,會顯示 PYNQ 的默認(rèn)用戶“xilinx” 的用戶文件夾
-
該文件夾對應(yīng)開發(fā)板的 /home/xilinx 目錄
六、例程測試
-
實驗一:按鍵控制 LED文章來源:http://www.zghlxwxcb.cn/news/detail-703289.html
- 打開 base>board 文件夾中的 board_btn_leds.ipynb 文件。點擊工具欄的 run 圖標(biāo)或者選擇 Cell->Run 運(yùn)行代碼代碼如下(示例):
- 這個項目中,按下 PYNQ 開發(fā)板上的按鍵 0 可改變彩色 LED 的顏色,按鍵 1 可開啟從右到左的流水燈,按鍵 2 可開啟從左到右的流水燈,按鍵 3 結(jié)束運(yùn)行。
from time import sleep from pynq.overlays.base import BaseOverlay base = BaseOverlay("base.bit") Delay1 = 0.3 Delay2 = 0.1 color = 0 #定義寄存器 rgbled_position = [4,5] for led in base.leds: led.on() while (base.buttons[3].read()==0): if (base.buttons[0].read()==1) color = (color+1) % 8 for led in rgbled_position: base.rgbleds[led].write(color) base.rgbleds[led].write(color) sleep(Delay1) elif (base.buttons[1].read()==1): for led in base.leds: led.off() sleep(Delay2) for led in base.leds: led.toggle() sleep(Delay2) elif (base.buttons[2].read()==1): for led in reversed(base.leds): led.off() sleep(Delay2) for led in reversed(base.leds): led.toggle() sleep(Delay2) print('End of this demo ...') for led in base.leds: led.off() for led in rgbled_position: base.rgbleds[led].off()
按鍵控制 LED文章來源地址http://www.zghlxwxcb.cn/news/detail-703289.html
- 實驗一:動態(tài)實時面部識別
- 將 PYNQ 開發(fā)板的 USB HOST 連接 USB 攝像頭,PYNQ 開發(fā)板的 HDMI OUT 連接到顯示器。
- 打開 base>video 文件夾下的 opencv_face_detect_webcam.ipynb,依次運(yùn)行。
總結(jié)
以上就是 PYNQ-Z2 環(huán)境搭建與測試過程。
到了這里,關(guān)于PYNQ-Z2 鏡像燒錄&設(shè)備啟動&網(wǎng)絡(luò)設(shè)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!