資料介紹
描述
這是如何為 Alinx 制造的AXU2CGA/B Zynq UltraScale+ FPGA 開發(fā)板創(chuàng)建硬件加速器平臺的分步教程,該平臺 可用于在 Xilinx Vitis 工具集下運(yùn)行具有加速功能的 GNU Radio 應(yīng)用程序。
添加 EA4GPZ 開發(fā)的gr-satellites并構(gòu)建您自己的 OOT 模塊也包含在這套教程中。
這是第 3/4 部分:使用 DPU 創(chuàng)建 Vitis 平臺
使用之前創(chuàng)建的 Vivado 項(xiàng)目和 PetaLinux SDK 創(chuàng)建 Vitis 平臺。
如果你正在尋找這組教程的其他部分,你可以直接去那里:
- 第 1 部分 - 創(chuàng)建 Vivado 硬件設(shè)計(jì)
- 第 2 部分 - 軟件 - 構(gòu)建 PetaLinux 和 GNU Radio
- 第 3 部分 - 使用 DPU 創(chuàng)建 Vitis 平臺和應(yīng)用程序
- 第 4 部分 - 在 Colab 和 Vitis-AI 中構(gòu)建 AI 模型
準(zhǔn)備平臺打包文件
1-轉(zhuǎn)到項(xiàng)目主目錄下先前創(chuàng)建的平臺目錄,如果不存在則創(chuàng)建它。
$ pwd
# /tools/workspace/axu2cgb
$ mkdir platform
$ ls
# hardware platform software
cd platform
2-創(chuàng)建一些新目錄來存儲一些以前創(chuàng)建的文件。
mkdir -p pfm/boot
mkdir -p pfm/sd_dir
3- 將生成的 Linux 軟件啟動組件從Part-2復(fù)制到 pfm/ boot目錄。
$ cp ../software/axu2cgb_2021_2-petalinux/images/linux/zynqmp_fsbl.elf pfm/boot/
$ cp ../software/axu2cgb_2021_2-petalinux/images/linux/pmufw.elf pfm/boot/
$ cp ../software/axu2cgb_2021_2-petalinux/images/linux/bl31.elf pfm/boot/
$ cp ../software/axu2cgb_2021_2-petalinux/images/linux/system.dtb pfm/boot/
$ cp ../software/axu2cgb_2021_2-petalinux/images/linux/u-boot-dtb.elf pfm/boot/u-boot.elf
$ ls pfm/boot/
bl31.elf pmufw.elf system.dtb u-boot.elf zynqmp_fsbl.elf
注意:最后一個(gè)文件u-boot-dtb.elf被重命名為u-boot.elf。請不要使用原始的 u-boot.elf,因?yàn)樗话O(shè)備樹塊。
4- 將boot.scr和system.dtb復(fù)制到pfm/sd_dir文件夾。
$ cp ../software/axu2cgb_2021_2-petalinux/images/linux/boot.scr pfm/sd_dir/
$ cp ../software/axu2cgb_2021_2-petalinux/images/linux/system.dtb pfm/sd_dir/
$ ls pfm/sd_dir/
boot.scr system.dtb
5- 將sysroot安裝到pfm文件夾中。
在安裝 sysroot 之前,您必須取消設(shè)置系統(tǒng)變量LD_LIBRARY_PATH
export LD_LIBRARY_PATH=
現(xiàn)在,您可以從之前生成的sdk.sh腳本安裝 sysroot。
$ ../software/axu2cgb_2021_2-petalinux/images/linux/sdk.sh -d pfm
Y
注意:-d 選項(xiàng)告訴 sdk.sh 腳本安裝 sysroot 的位置。
PetaLinux SDK installer version 2021.2
======================================
You are about to install the SDK to "/tools/workspace/axu2cgb/platform/pfm". Proceed [Y/n]?
Extracting SDK.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................done
Setting it up...done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
$ . /tools/workspace/axu2cgb/platform/pfm/environment-setup-cortexa72-cortexa53-xilinx-linux
創(chuàng)建 Vitis 平臺
在啟動 Vitis IDE 程序之前,請確保您已設(shè)置以下所有路徑和設(shè)置:
source /tools/Xilinx/Vitis/2021.2/settings64.sh
export OPENCV_INCLUDE=/usr/include/opencv4/
export OPENCV_LIB=/usr/lib/x86_64-linux-gnu/
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/
注意:重新設(shè)置LD_LIBRARY_PATH變量,因?yàn)樗?sysroot 安裝期間被刪除。
1- 在后臺模式下在當(dāng)前平臺文件夾中啟動 Vitis IDE,并將相同的文件夾設(shè)置為工作區(qū)目錄。
vitis &
創(chuàng)建一個(gè)新平臺:文件 > 新建 > 平臺項(xiàng)目并將其命名為axu2cgb_2021_2-platform 。點(diǎn)擊下一步。
在Hardware Specification中,單擊Browse按鈕??并選擇Part-1末尾 Vivado 生成的 XSA 文件。
/tools/workspace/axu2cgb/hardware/axu2cgb_2021_2-vivado/design_1_wrapper.xsa
在操作系統(tǒng)下選擇linux 、psu_cortexa53和64-bit 。
取消選中引導(dǎo)組件。單擊完成。
單擊psu_cortexa53域上的 linux。
瀏覽到位置并選擇完成以下對話框所需的目錄或文件:
- 位文件- 單擊生成 BIF (在瀏覽按鈕的末尾
- 引導(dǎo)組件- 瀏覽到pfm/boot
- FAT32 分區(qū)目錄- 瀏覽到pfm/sd_dir
保持所有其他設(shè)置不變。
注意:暫時(shí)將Linux RootFS和Sysroot 目錄留空。
搭建平臺
在 Explorer 選項(xiàng)卡窗口中,右鍵單擊創(chuàng)建的平臺:
- axu2cgb_2021_2-platform并選擇Build Project 。等待幾秒鐘完成。
導(dǎo)出平臺
在 Explorer 選項(xiàng)卡窗口中,右鍵單擊創(chuàng)建的平臺:axu2cgb_2021_2-platform并選擇Exportas Archive 。選擇您的平臺名稱并勾選包含構(gòu)建文件夾。等待幾分鐘完成。
您可以使用這個(gè)導(dǎo)出的 zip 文件來創(chuàng)建新項(xiàng)目。
安裝 Vitis-AI
我們創(chuàng)建了一個(gè)將 Xilinx 深度學(xué)習(xí)處理器單元 DPU 集成為內(nèi)核的新應(yīng)用程序。Xilinx 已經(jīng)提供了一個(gè)腳本來創(chuàng)建我們需要的一切。
有關(guān) DPU 的更多詳細(xì)信息,請查看DPU-TRD GitHub 存儲庫并閱讀PG338 DPU IP 產(chǎn)品指南。
首先,我們需要將 Vitis-AI 存儲庫添加到 Vitis IDE 中。
如果您還沒有啟動 Vitis IDE,請啟動它。我們可以重用之前創(chuàng)建的平臺的工作空間。
打開菜單Window > Preferences > Library Repository選項(xiàng)卡 > Add
設(shè)置以下內(nèi)容:
- 輸入 ID:vitis-ai
- 名稱:Vitis AI
- Git 網(wǎng)址:https ://github.com/Xilinx/Vitis-AI.git
- 分支:v2.0或master
申請并關(guān)閉
下載 Vitis-AI 庫:
- 打開菜單Xilinx >庫。
- 找到我們剛剛添加的Vitis-AI條目。
- 點(diǎn)擊它上面的下載按鈕。
- 等待 Vitis-AI 存儲庫的下載完成(幾分鐘)。
- 單擊確定。
- v2.0的git 提交 ID 為:d02dcb6041663dbc7ecbc0c6af9fafa087a789de
- master的git commit ID當(dāng)前為:ba8905493876674716ab08ea4266962193df970b
創(chuàng)建 DPU 應(yīng)用程序項(xiàng)目
在我們之前創(chuàng)建的 axu2cg_2021_2 平臺上創(chuàng)建新的 Vitis-AI 設(shè)計(jì)。
轉(zhuǎn)到菜單文件 > 新建 > 應(yīng)用程序項(xiàng)目> 下一步。
選擇平臺axu2cgb_2021_2-platform 。點(diǎn)擊下一步。
將項(xiàng)目命名為dpu-test ,點(diǎn)擊下一步。
設(shè)置域:linux on psu_cortexa53
- 在上一步中將 Sys_root 路徑設(shè)置為 sysroot 安裝路徑:
tools/workspace/axu2cgb/platform/pfm/sysroots/cortexa72-cortexa53-xilinx-linux
- 將根 FS設(shè)置為 rootfs.ext4。
/tools/workspace/axu2cgb/software/axu2cgb_2021_2-petalinux/images/linux/rootfs.ext4
- 將內(nèi)核映像設(shè)置為映像。
/tools/workspace/axu2cgb/software/axu2cgb_2021_2-petalinux/images/linux/Image
最后兩個(gè)文件位于第 2 部分中創(chuàng)建的 axu2cgb_2021_2-petalinux/images/linux 文件夾中。
單擊下一步并選擇:
- dsa > DPU 內(nèi)核(RTL 內(nèi)核)
然后單擊完成以生成應(yīng)用程序。
更新構(gòu)建目標(biāo):
- 雙擊系統(tǒng)項(xiàng)目文件dpu-test_system.sprj并
- 將Active Build Configuration更改為Hardware。
AXU2CGB 的 DPU 設(shè)置
由于 axu2cgb 板上的 FPGA 設(shè)備沒有足夠的資源來構(gòu)建默認(rèn)配置的 DPU,我們需要:
- 只集成一個(gè)內(nèi)核(默認(rèn)不是 2 個(gè))。
- 更改 DPU 處理器選擇。
- 禁用某些功能。
從dpu-test_kernels/src/prj/Vitis目錄打開dpu_conf.vh文件。
- 將 B4096更改為B1152 (第 26 行)
- 將 DRAM_DISABLE更改為DRAM_ENABLE (第 59 行)
- 將 CHANNEL_AUGMENTATION_ENABLE更改為CHANNEL_AUGMENTATION_DISABLE (第 92 行)
- 將 DWCV_ENABLE更改為DWCV_DISABLE (第 103 行)
- 更改 RELU_LEAKYRELU_RELU6 RELU_RELU6 (第 136 行)
如果您擁有更強(qiáng)大的 FPGA,請隨意嘗試啟用更多選項(xiàng),但是:
- 確保 POOL_AVG 已啟用,因?yàn)槲覀兊哪P托枰?/font>(第 114 行)
保存文件并再次檢查所有內(nèi)容,因?yàn)閮?nèi)核構(gòu)建過程持續(xù)很長時(shí)間。
//Setting the arch of DPU, For more details, Please read the PG338
/*====== Architecture Options ======*/
// |------------------------------------------------------|
// | Support 8 DPU size
// | It relates to model. if change, must update model
// +------------------------------------------------------+
// | `define B512
// +------------------------------------------------------+
// | `define B800
// +------------------------------------------------------+
// | `define B1024
// +------------------------------------------------------+
// | `define B1152
// +------------------------------------------------------+
// | `define B1600
// +------------------------------------------------------+
// | `define B2304
// +------------------------------------------------------+
// | `define B3136
// +------------------------------------------------------+
// | `define B4096
// |------------------------------------------------------|
`define B1152
// |------------------------------------------------------|
// | If the FPGA has Uram. You can define URAM_EN parameter
// | if change, Don't need update model
// +------------------------------------------------------+
// | for zcu104 : `define URAM_ENABLE
// +------------------------------------------------------+
// | for zcu102 : `define URAM_DISABLE
// |------------------------------------------------------|
`define URAM_DISABLE
//config URAM
`ifdef URAM_ENABLE
`define def_UBANK_IMG_N 5
`define def_UBANK_WGT_N 17
`define def_UBANK_BIAS 1
`elsif URAM_DISABLE
`define def_UBANK_IMG_N 0
`define def_UBANK_WGT_N 0
`define def_UBANK_BIAS 0
`endif
// |------------------------------------------------------|
// | You can use DRAM if FPGA has extra LUTs
// | if change, Don't need update model
// +------------------------------------------------------+
// | Enable DRAM : `define DRAM_ENABLE
// +------------------------------------------------------+
// | Disable DRAM : `define DRAM_DISABLE
// |------------------------------------------------------|
`define DRAM_ENABLE
//config DRAM
`ifdef DRAM_ENABLE
`define def_DBANK_IMG_N 1
`define def_DBANK_WGT_N 1
`define def_DBANK_BIAS 1
`elsif DRAM_DISABLE
`define def_DBANK_IMG_N 0
`define def_DBANK_WGT_N 0
`define def_DBANK_BIAS 0
`endif
// |------------------------------------------------------|
// | RAM Usage Configuration
// | It relates to model. if change, must update model
// +------------------------------------------------------+
// | RAM Usage High : `define RAM_USAGE_HIGH
// +------------------------------------------------------+
// | RAM Usage Low : `define RAM_USAGE_LOW
// |------------------------------------------------------|
`define RAM_USAGE_LOW
// |------------------------------------------------------|
// | Channel Augmentation Configuration
// | It relates to model. if change, must update model
// +------------------------------------------------------+
// | Enable : `define CHANNEL_AUGMENTATION_ENABLE
// +------------------------------------------------------+
// | Disable : `define CHANNEL_AUGMENTATION_DISABLE
// |------------------------------------------------------|
`define CHANNEL_AUGMENTATION_DISABLE
// |------------------------------------------------------|
// | DepthWiseConv Configuration
// | It relates to model. if change, must update model
// +------------------------------------------------------+
// | Enable : `define DWCV_ENABLE
// +------------------------------------------------------+
// | Disable : `define DWCV_DISABLE
// |------------------------------------------------------|
`define DWCV_DISABLE
// |------------------------------------------------------|
// | Pool Average Configuration
// | It relates to model. if change, must update model
// +------------------------------------------------------+
// | Enable : `define POOL_AVG_ENABLE
// +------------------------------------------------------+
// | Disable : `define POOL_AVG_DISABLE
// |------------------------------------------------------|
`define POOL_AVG_ENABLE
// |------------------------------------------------------|
// | support multiplication of two feature maps
// | It relates to model. if change, must update model
// +------------------------------------------------------+
// | Enable : `define ELEW_MULT_ENABLE
// +------------------------------------------------------+
// | Disable : `define ELEW_MULT_DISABLE
// |------------------------------------------------------|
`define ELEW_MULT_DISABLE
// +------------------------------------------------------+
// | RELU Type Configuration
// | It relates to model. if change, must update model
// +------------------------------------------------------+
// | `define RELU_RELU6
// +------------------------------------------------------+
// | `define RELU_LEAKYRELU_RELU6
// |------------------------------------------------------|
`define RELU_RELU6
// |------------------------------------------------------|
// | DSP48 Usage Configuration
// | Use dsp replace of lut in conv operate
// | if change, Don't need update model
// +------------------------------------------------------+
// | `define DSP48_USAGE_HIGH
// +------------------------------------------------------+
// | `define DSP48_USAGE_LOW
// |------------------------------------------------------|
`define DSP48_USAGE_HIGH
// |------------------------------------------------------|
// | Power Configuration
// | if change, Don't need update model
// +------------------------------------------------------+
// | `define LOWPOWER_ENABLE
// +------------------------------------------------------+
// | `define LOWPOWER_DISABLE
// |------------------------------------------------------|
`define LOWPOWER_DISABLE
// |------------------------------------------------------|
// | DEVICE Configuration
// | if change, Don't need update model
// +------------------------------------------------------+
// | `define MPSOC
// +------------------------------------------------------+
// | `define ZYNQ7000
// |------------------------------------------------------|
`define MPSOC
移除 SoftMax 函數(shù)和一個(gè)內(nèi)核實(shí)例
我們使用在主 CPU 上運(yùn)行的 SoftMax 功能的軟件實(shí)現(xiàn),因此我們將其從內(nèi)核中刪除以節(jié)省一些資源。
此外,如果我們使用的是 AXU2CGB 板,我們只能集成一個(gè) DPU 內(nèi)核實(shí)例。
雙擊dpu-test_system_hw_link.prj:
- 通過右鍵單擊刪除sfm_xrt_top函數(shù)并選擇刪除。
- 將DPUCZDX8G的 Compute Units 更改為1。
V++ 配置設(shè)置
如果我們刪除了 DPUCZDX8G 的一個(gè)內(nèi)核實(shí)例,我們還需要?jiǎng)h除專用于先前刪除的第二個(gè)實(shí)例的所有時(shí)鐘和連接。
- 轉(zhuǎn)到助手視圖。
- 雙擊dpu-test_system [系統(tǒng)]。
- 展開左側(cè)樹面板并找到 dpu-test_system > dpu-test_system_hw_link > Hardware > dpu。
單擊...
名為V++ configuration settings的行中的按鈕。將 V++ 鏈接器設(shè)置窗口內(nèi)容更改為以下內(nèi)容:
[clock]
freqHz=300000000:DPUCZDX8G_1.aclk
freqHz=600000000:DPUCZDX8G_1.ap_clk_2
[connectivity]
sp=DPUCZDX8G_1.M_AXI_GP0:HPC0
sp=DPUCZDX8G_1.M_AXI_HP0:HP0
sp=DPUCZDX8G_1.M_AXI_HP2:HP1
單擊確定、應(yīng)用、應(yīng)用,然后單擊應(yīng)用并關(guān)閉。
將自定義 Python 應(yīng)用程序添加到項(xiàng)目(可選)
現(xiàn)在,我們從命令行界面添加來自 GitHub 存儲庫的新 python 測試腳本。
- 轉(zhuǎn)到 Ubuntu 終端程序并將目錄更改為dpu-test/src 。
- 從我的 (S59MZ) GitHub 帳戶中克隆名為test-dpu的存儲庫。
$ cd platform/dpu-test/src
$ git clone https://github.com/s59mz/test-dpu
$ cd test-dpu
$ git checkout main
$ rm -rf test-dpu/.git
$ cd ../../..
現(xiàn)在我們有了一個(gè)新目錄test-dpu ,里面有一些測試 python 腳本。
注意:如果您有與 AXU2CGB 板不同的硬件,它使用 SD 卡的 SD0 接口(例如 zcu102 或 zcu104 板),您應(yīng)該檢查mmcblk0 branch 而不是main 。
替換舊的 resnet50 型號(可選)
您可以將app/model目錄中的resnet50.xmodel替換為重新編譯的新模型,因?yàn)槲覀兏牧?/font>dpu_conf.vh文件中的 DPU 設(shè)置。
但僅當(dāng)您想使用默認(rèn)包含的 resnet50 模型運(yùn)行一些 DPU 測試時(shí)。GNU Radio 不需要。
在dpu-test/models目錄中之前克隆的 GitHub 存儲庫中已經(jīng)有重新構(gòu)建的resnet50.xmodel 。用重建的模型替換舊模型。
$ cd dpu-test/src/app/model
$ rm resnet50.xmodel
$ mv ../../test-dpu/models/resnet50.xmodel .
注意:還有dpu_conf.vh文件應(yīng)該轉(zhuǎn)到dpu-test_kernels/src/prj/Vitis目錄,以防您尚未在上一節(jié)中設(shè)置 DPU 配置。你可以比較兩個(gè)文件,應(yīng)該是一樣的。
打包
更新打包選項(xiàng)以在SD 卡上添加應(yīng)用程序和這個(gè)新的 test-dpu目錄。
- 雙擊dpu-test_system.sprj
- 單擊包選項(xiàng)上的...按鈕
- 輸入:
--package.sd_dir=../../dpu-test/src/test-dpu --package.sd_dir=../../dpu-test/src/app
點(diǎn)擊確定
注意: /test-dpu和--package.sd_dir之間有一個(gè)空格
注意:要添加到 src 目錄中的新目錄名稱不應(yīng)以單詞dpu- something 開頭。這會導(dǎo)致 Makefile 錯(cuò)誤。
構(gòu)建應(yīng)用程序
右鍵單擊dpu-test_system[axu2cgb_2021_2-platform]系統(tǒng)項(xiàng)目并選擇Build Project 。等待大約一個(gè)小時(shí)完成。
生成的 SD 卡映像位于dpu-test_system/Hardware/package/sd_card.img。我們的目標(biāo)板需要那個(gè)。
在此構(gòu)建過程中生成的最重要的文件是dpu.xclbin 。是FPGA二進(jìn)制映像在FPGA中實(shí)現(xiàn)了DPU內(nèi)核。它位于Hardware目錄中,添加到 SD 卡的引導(dǎo)分區(qū)并包含在 sd_card.img 映像中。
在 Target 上測試 GNU Radio 平臺
準(zhǔn)備空的 SD 卡,大小至少 8GB。
為 AXU2CGB 板準(zhǔn)備的SD 卡映像也可以從GitHub 存儲庫下載。
使用 Linux DD命令或用于寫入 SD 卡映像的類似程序 (Etcher)將上一步中創(chuàng)建的sd_card.img寫入空 SD 卡。
注意:仔細(xì)檢查= / dev / sd的輸出設(shè)備......它必須指向SD卡,除非您可以丟失主機(jī)上的所有數(shù)據(jù)。
$ cd axu2cgb/platform/dpu-test_system/Hardware/package
$ sudo dd if=sd_card.img of=/dev/sd?? bs=512; sync
將 SD 卡插入 AXU2CGB 板,通過 USB 電纜將串行控制臺連接到主機(jī)并運(yùn)行串行終端程序,例如minicom 。
$ minicom -D /dev/ttyUSB0 -b 115200
將以太網(wǎng)電纜連接到板上。板子和主機(jī)應(yīng)該在同一個(gè)局域網(wǎng)中。
給AXU2CGB板加電。U-Boot應(yīng)該啟動,然后是 Linux 內(nèi)核和 rootfs 文件系統(tǒng)。等待提示。
分別通過運(yùn)行“ uname -a ”和ifconfig Linux 命令檢查 Linux 版本和板的 IP 地址。
$ uname -a
$ ifconfig
記下 IP 地址,因?yàn)槲覀冃枰鼇磉M(jìn)行SSH -X訪問。
準(zhǔn)備主機(jī)
現(xiàn)在我們使用主機(jī)作為顯示器,所以我們準(zhǔn)備主機(jī)作為X11服務(wù)器并使用“ -X ”選項(xiàng)ssh 到板。
在主機(jī)計(jì)算機(jī)上:
- 檢查$DISPLAY變量。應(yīng)該是“ :1 ”。
- 將本地連接添加到訪問控制列表。類型:“ xhost +本地:”
- 從主機(jī)打開到板的ssh -X會話。
- 以root身份登錄,密碼為root 。
$ echo $DISPLAY
$ xhost +local:
$ ssh -X root@192.168.1.73
準(zhǔn)備目標(biāo)
首先要做的是調(diào)整SD 卡的 EXT4 分區(qū)的大小。該命令應(yīng)該只運(yùn)行一次。
resize-part /dev/mmcblk1p2
此外,更新數(shù)據(jù)包管理器。
$ dnf update
注意:如果您想為 GNU Radio 構(gòu)建自己的OOT模塊,則應(yīng)手動安裝以下 python 庫:
$ pip3 install Click
$ pip3 install click-plugins
注意:要使用 EA4GPZ 的gr-satellites模塊解碼來自衛(wèi)星的信號,請安裝以下兩個(gè)附加庫:
$ pip3 install construct
$ pip3 install requests
在真實(shí) Target 上測試 DPU 單元
現(xiàn)在,我們可以在板上運(yùn)行一些測試。
在運(yùn)行任何測試之前,您應(yīng)該設(shè)置一些系統(tǒng)變量。
對于使用DPU 單元,此變??量指向 FPGA 二進(jìn)制圖像:
$ export XLNX_VART_FIRMWARE=/media/sd-mmcblk1p1/dpu.xclbin
為了執(zhí)行任何使用 DPU 的 C/C++ 程序,此變量指向所需的庫:
$ export LD_LIBRARY_PATH=/media/sd-mmcblk1p1/app/samples/lib
對于使用任何 GNU Radio 模塊,此變量指向 Python 包的位置:
$ export PYTHONPATH=/usr/lib/python3/dist-packages/
要獲取構(gòu)建您自己的 AI 模型所需的DPU 指紋,可以使用“ xdputil query ”命令:
$ export XLNX_VART_FIRMWARE=/media/sd-mmcblk1p1/dpu.xclbin
$ xdputil query
在控制臺打印的近端找到“指紋”:“0x100002062010103 ”參數(shù),并將此參數(shù)存儲在花括號 {}中,以新創(chuàng)建的arch.json文件。
將此文件存儲在主機(jī)上的某處。使用Vitis-AI編譯 AI 模型需要此文件。
$ echo '{"fingerprint":"0x100002062010103"}' > arch.json
注意:確保文件中包含括號和雙引號。
$ cat arch.json
{"fingerprint":"0x100002062010103"}
注意:由于未知原因,Vitis-AI 在創(chuàng)建 dpu-test 應(yīng)用程序時(shí)生成的原始arch.json文件值錯(cuò)誤。指紋值以 -203 而不是 -103 結(jié)尾。請直接使用從 FPGA 讀取的指紋值來編譯您自己的模型。
將目錄更改為 SD 卡BOOT分區(qū)上的test-dpu ,所有需要的測試腳本都位于該目錄:
$ cd /media/sd-mmcblk1p1/test-dpu
該目錄下有五個(gè) bash 測試腳本,均以“run_ ”前綴開頭。
隨意探索腳本并檢查腳本中的所有系統(tǒng)變量是否都指向正確的位置,尤其是檢查 mmcblk 1 p1 或 mmcblk 0 p1 SD 卡分區(qū),具體取決于您選擇的硬件平臺。
$ ls -l run_*
run_recognize_image.sh
run_test_performance.sh
run_test_accuracy.sh
run_gnuradio.sh
run_rf_classification.sh
運(yùn)行每個(gè)腳本并檢查一切是否正常。
最后兩個(gè)使用 GNU Radio 的測試應(yīng)該通過ssh -X session 運(yùn)行,因?yàn)樗鼈兺ㄟ^主機(jī)上的X11 服務(wù)器使用圖形顯示。
注意:如果重復(fù)出現(xiàn)錯(cuò)誤,請先嘗試重新啟動板。
$ reboot -h
圖像分類測試
這是 AMD-Xilinx 教程中包含的原始 DPU 測試。測試識別提供圖像中的對象。
運(yùn)行run_recognize_image.sh腳本:
$ pwd
/media/sd-mmcblk1p1/test-dpu
$ ./run_recognize_image.sh
Recognising Unknown Image...
score[688] = 0.999914 text: oscilloscope, scope, cathode-ray oscilloscope, CRO,
score[662] = 1.30062e-05 text: modem,
score[844] = 1.30062e-05 text: switch, electric switch, electrical switch,
score[592] = 1.01292e-05 text: hard disc, hard disk, fixed disk,
score[811] = 7.88864e-06 text: space heater,
/media/sd-mmcblk1p1/test-dpu
如果圖片被正確識別(在這種情況下是示波器),則測試通過。隨意用不同的圖片更改腳本內(nèi)的圖片。
射頻調(diào)制分類性能測試
該測試測量推理的最大可能幀速率。
運(yùn)行run_test_performance.sh腳本。
確保 AXU2CGB 板的測量 FPS 約為 500 幀/秒。
$ pwd
/media/sd-mmcblk1p1/test-dpu
$ ./run_test_performance.sh
Number of RF Samples is 2000
FPS=532.79, total RF frames = 2000.00 , time=3.753795 seconds
射頻調(diào)制分類精度測試
該測試使用給定的測試數(shù)據(jù)集測量模型的準(zhǔn)確性。
運(yùn)行run_test_accuracy.sh腳本。
確保 top-1 準(zhǔn)確度約為 0.53。我們使用了一個(gè)基線模型,該模型僅使用 6% 的可用數(shù)據(jù)集樣本進(jìn)行訓(xùn)練。
$ pwd
/media/sd-mmcblk1p1/test-dpu
$ ./run_test_accuracy.sh
Number of RF Samples Tested is 998
Batch Size is 1
Top1 accuracy = 0.53
調(diào)頻收音機(jī)測試
它是一個(gè)在 GNU Radio 平臺上實(shí)現(xiàn)的簡單 FM 收音機(jī)。該板應(yīng)已將RTL-SDR USB 加密狗插入 AXU2CGB 板上的可用 USB 端口之一。
RTL-SDR USB dongle 是軟件定義的無線電接收器。應(yīng)將適當(dāng)?shù)男⌒?a target='_blank' class='arckwlink_none'>天線連接到 RTL-SDR。
此測試使用圖形顯示,應(yīng)通過 ssh -X 會話運(yùn)行。
將 USB 聲卡與揚(yáng)聲器或電話連接到聲卡的音頻插孔輸入。也可以將音頻路由到 X11 服務(wù)器,而無需使用任何 USB 聲卡。
一切都連接好后,運(yùn)行run_gnuradio.sh腳本。
- GNU Radio 將啟動。
- 單擊上方工具箱上的播放按鈕或按鍵盤上的F6 。
- 將打開一個(gè)新的 GUI。忽略警告消息(它只顯示一次)。
- 調(diào)整新 GUI 的大小以使其更明顯。
- 將 GUI 中的頻率設(shè)置為附近的任何本地 FM 廣播電臺。
- 您應(yīng)該在揚(yáng)聲器中聽到選定的本地廣播電臺(如果它們已連接),并在 GUI 小部件中看到接收到的無線電頻譜。
要將音頻路由到 X11 服務(wù)器,請關(guān)閉無線電 GUI 并雙擊Audio Sink塊:
- 刪除設(shè)備名稱字段中值為“ hw:0, 0 ”的內(nèi)容。
- 單擊確定,然后再次播放。
- 您現(xiàn)在應(yīng)該可以聽到主機(jī)揚(yáng)聲器上的音頻了。
隨意將頻率更改為附近的任何其他 FM 廣播電臺。
在 GNU Radio 上運(yùn)行射頻調(diào)制分類測試
該測試運(yùn)行在 Python 下運(yùn)行的 GNU Radio 平臺上開發(fā)的簡單 GUI 應(yīng)用程序。
該應(yīng)用程序接收業(yè)余無線電愛好者 2m 頻段上的信號,并實(shí)時(shí)預(yù)測接收數(shù)字信號的調(diào)制。對于推理,它使用在板上的 FPGA 中實(shí)現(xiàn)的深度學(xué)習(xí)處理器單元 (DPU)。
該測試使用圖形顯示并且應(yīng)該通過 ssh -X 會話運(yùn)行。
該板應(yīng)已將RTL-SDR USB 加密狗插入 AXU2CGB 板上的可用 USB 端口之一。
它是一個(gè)軟件定義的無線電接收器,作為 USB 加密狗。建議將外部 VHF/UHF 天線連接到 RTL-SDR。
將 USB 聲卡與揚(yáng)聲器或電話連接到聲卡的音頻插孔輸入。也可以將音頻路由到 X11 服務(wù)器,無需 USB 聲卡。
注意:平板電腦僅作為X11 服務(wù)器工作,并顯示來自 GNU Radio 的 GUI,在 FPGA 板上運(yùn)行。
一切都連接好后,運(yùn)行run_rf_classification.sh腳本。
- 應(yīng)用程序自動啟動。適當(dāng)調(diào)整 GUI 大小。
- SDR 接收器在業(yè)余無線電頻段上調(diào)諧到 144.8 MHz,并在該頻段上收聽一些隨機(jī)數(shù)字信號。
- 當(dāng)出現(xiàn)強(qiáng)信號時(shí),它可以顯示在瀑布上。
- 此時(shí)程序開始預(yù)測接收信號的調(diào)制。預(yù)測的調(diào)制打印在 SSH 控制臺上,直方圖計(jì)算所有預(yù)測的類索引。
- 分析信號的樣本也顯示在時(shí)域(示波器)中。
AI 模型已包含在應(yīng)用程序的test-dpu/models/rfClassification.xmodel文件中。它是一個(gè)基線模型,僅使用 10 個(gè) epoch 進(jìn)行訓(xùn)練,并且僅使用數(shù)據(jù)集中 6% 的可用樣本。
下一步
隨意構(gòu)建您自己的模型并在本系列的下一個(gè)/最后一個(gè)教程中使用更多示例對其進(jìn)行訓(xùn)練:
- LabView工具包WebSocket-API主機(jī)下載 69次下載
- AXU2CGB Zynq UltraScale板上的GNU Radio工具包 第4部分
- AXU2CGB Zynq UltraScale板上的GNU Radio工具包 第1部分
- 如何在arduino IDE上安裝STM32的開發(fā)板工具包 3次下載
- 布局電源板以將EMI降至最低:第3部分
- 布局電源板以將EMI降至最低:第2部分
- 如何使用KEELOQ3開發(fā)工具包作為開發(fā)工具來在目標(biāo)板上仿真和調(diào)試固件
- 如何使用入門工具包開發(fā)工具在目標(biāo)板上仿真和調(diào)試固件的詳細(xì)資料概述
- 如何使用PIC32MX1/2/5入門工具包在目標(biāo)板上仿真和調(diào)試固件的詳細(xì)概述
- 如何使用高性能工具包作為開發(fā)工具在目標(biāo)板上仿真和調(diào)試固件
- PIC32以太網(wǎng)入門工具包的中文介紹和使用的詳細(xì)概述
- 如何使用PIC32MZ嵌入式連接(EC)入門工具包的詳細(xì)使用說明
- 電壓基準(zhǔn)如何影響ADC性能,第2部分 10次下載
- 使用觸摸傳感器的設(shè)備的輸入和控制,第2部分:控制器和開發(fā)包 5次下載
- 多媒體啟動工具包
- 軟件無線電安全之GNU Radio基礎(chǔ)知識 4955次閱讀
- NPOI WEG報(bào)表工具包簡介 1074次閱讀
- ADI公司設(shè)計(jì)工具:ADIsimRF第2部分 1223次閱讀
- ADC眼中的虛擬評估,第2部分 822次閱讀
- Arm?ML處理器 嵌入式評估工具包介紹 8193次閱讀
- 基于Xilinx Zynq ultraScale+ 系列FPGA的AXU2CGB 開發(fā)板評測 9735次閱讀
- 米爾科技Zynq UltraScale+ MPSoC技術(shù)參考手冊介紹 3246次閱讀
- 北大語言計(jì)算與機(jī)器學(xué)習(xí)研究組推出一套全新中文分詞工具包pkuseg 3826次閱讀
- Xilinx基于ARM的Zynq-7000和Zynq UltraScale+ MPSoC及RFSoC器件是否存在安全漏洞 2686次閱讀
- Zynq UltraScale+ MPSoC 上的多個(gè)Linux UIO設(shè)計(jì) 3349次閱讀
- 細(xì)數(shù)工具包Kanzi? UI及Kanzi Connect?其中每個(gè)插件實(shí)現(xiàn)的功能 1w次閱讀
- Ti推出面向Zynq UltraScale+ MPSoC的電源參考設(shè)計(jì) 3731次閱讀
- Adam Taylor玩轉(zhuǎn)MicroZed系列之58:Zynq和PicoBlaze第3部分 1211次閱讀
- 無源元件并非真的“無源”:第1部分——電容 2519次閱讀
- 混合信號系統(tǒng)接地揭秘之第二部分 1712次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多