電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>AXU2CGB Zynq UltraScale板上的GNU Radio工具包 第3部分

AXU2CGB Zynq UltraScale板上的GNU Radio工具包 第3部分

2023-06-14 | zip | 0.00 MB | 次下載 | 免費(fèi)

資料介紹

描述

這是如何為 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 平臺。

如果你正在尋找這組教程的其他部分,你可以直接去那里:

準(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.scrsystem.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 &
poYBAGNYgtqAe8C5AAAp9er3Zco652.png
?

創(chuàng)建一個(gè)新平臺:文件 > 新建 > 平臺項(xiàng)目并將其命名為axu2cgb_2021_2-platform 。點(diǎn)擊下一步。

pYYBAGNYgtyALRQ9AAB7aZL0iQ4210.png
?

Hardware Specification中,單擊Browse按鈕??并選擇Part-1末尾 Vivado 生成的 XSA 文件。

/tools/workspace/axu2cgb/hardware/axu2cgb_2021_2-vivado/design_1_wrapper.xsa

操作系統(tǒng)選擇linux 、psu_cortexa5364-bit 。

取消選中引導(dǎo)組件。單擊完成。

pYYBAGNYgt-AaBjjAABhvamDgcM554.png
?

單擊psu_cortexa53域上的 linux。

瀏覽到位置并選擇完成以下對話框所需的目錄或文件:

  • 位文件- 單擊生成 BIF (在瀏覽按鈕的末尾
  • 引導(dǎo)組件- 瀏覽到pfm/boot
  • FAT32 分區(qū)目錄- 瀏覽到pfm/sd_dir

保持所有其他設(shè)置不變。

poYBAGNYguGAVPnhAAF6MeVKwrU963.png
?

注意:暫時(shí)將Linux RootFSSysroot 目錄留空。

搭建平臺

在 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)建文件夾。等待幾分鐘完成。

poYBAGNYguOAf6tXAAAu9crpwes514.png
?

您可以使用這個(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)容:

申請并關(guān)閉

pYYBAGNYguWAMO5KAABMU-qN1U4698.png
?

下載 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)擊下一步。

pYYBAGNYguiAXYubAABiWiPReZg463.png
?

將項(xiàng)目命名為dpu-test ,點(diǎn)擊下一步。

poYBAGNYguqANcgaAABOvIk4UNM956.png
?

設(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 文件夾中。

poYBAGNYguyAAtRyAABmY56RWTY812.png
?

單擊下一步并選擇:

  • dsa > DPU 內(nèi)核(RTL 內(nèi)核)
pYYBAGNYgu-ASMWFAABSdRVgAjM218.png
?

然后單擊完成以生成應(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。
poYBAGNYgvGAR2vKAACkIr5Cgbo628.png
?

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。
poYBAGNYgvSAC8eQAAB0PWdVapk748.png
?

單擊...名為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 .
pYYBAGNYgvaAHXPPAABlamwpgvU096.png
?

注意:還有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)擊確定

poYBAGNYgviAMPgJAAEQFsYkUMA048.png
?

注意: /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)。等待提示。

poYBAGNYgvqABMePAABNg9WMMYI314.png
?

分別通過運(yùn)行“ uname -a ”和ifconfig Linux 命令檢查 Linux 版本和板的 IP 地址。

$ uname -a
$ ifconfig

記下 IP 地址,因?yàn)槲覀冃枰鼇磉M(jìn)行SSH -X訪問。

pYYBAGNYgv2AAYf3AABmn6tCR8M707.png
?

準(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
pYYBAGNYgv-AdVfsAAArnex1chs255.png
?

準(zhǔn)備目標(biāo)

首先要做的是調(diào)整SD 卡的 EXT4 分區(qū)的大小。該命令應(yīng)該只運(yùn)行一次。

resize-part /dev/mmcblk1p2
poYBAGNYgwGAYUSHAABCuiHhFNQ680.png
?

此外,更新數(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
pYYBAGNYgwOAM74vAACXFuou0QM276.png
?

在真實(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文件。

poYBAGNYgwaAaQhCAABFS1tgNmg969.png
?

將此文件存儲在主機(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 聲卡。

poYBAGNYgwmAKtJqAATh3wLCxXg829.jpg
FM 收音機(jī)的測試設(shè)置
?

一切都連接好后,運(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 廣播電臺。

pYYBAGNYgwyAReApAAJTqiFH9I0119.png
調(diào)頻收音機(jī)應(yīng)用
?

在 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 聲卡。

pYYBAGNYgw-Aeyq_AAKVGq08Rag969.jpg
測試設(shè)置
?

注意:平板電腦僅作為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í)域(示波器)中。
pYYBAGNYgteAUblXAAJ5sX-nq24654.png
最后一個(gè)考試
?

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)練:

第 4 部分 - 在 Colab 和 Vitis-AI 中構(gòu)建 AI 模型


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)