<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>AXU2CGB Zynq UltraScale板上的GNU Radio工具包 第3部分

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

2023-06-14 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

這是如何為 Alinx 制造的AXU2CGA/B Zynq UltraScale+ FPGA 開發板創建硬件加速器平臺的分步教程,該平臺 用于在 Xilinx Vitis 工具集下運行具有加速功能的 GNU Radio 應用程序。

添加 EA4GPZ 開發的gr-satellites并構建您自己的 OOT 模塊也包含在這套教程中。

這是第 3/4 部分:使用 DPU 創建 Vitis 平臺

使用之前創建的 Vivado 項目和 PetaLinux SDK 創建 Vitis 平臺。

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

準備平臺打包文件

1-轉到項目主目錄下先前創建的平臺目錄,如果不存在則創建它。

$ pwd
# /tools/workspace/axu2cgb

$ mkdir platform
$ ls
# hardware  platform  software

cd platform

2-創建一些新目錄來存儲一些以前創建的文件。

mkdir -p pfm/boot
mkdir -p pfm/sd_dir

3- 將生成的 Linux 軟件啟動組件從Part-2復制到 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

注意:最后一個文件u-boot-dtb.elf被重命名為u-boot.elf。請不要使用原始的 u-boot.elf,因為它不包含設備樹塊。

4- 將boot.scrsystem.dtb復制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 之前,您必須取消設置系統變量LD_LIBRARY_PATH

export LD_LIBRARY_PATH=

現在,您可以從之前生成的sdk.sh腳本安裝 sysroot。

$ ../software/axu2cgb_2021_2-petalinux/images/linux/sdk.sh -d pfm
Y

注意:-d 選項告訴 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

創建 Vitis 平臺

在啟動 Vitis IDE 程序之前,請確保您已設置以下所有路徑和設置:

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/

注意:重新設置LD_LIBRARY_PATH變量,因為它在 sysroot 安裝期間被刪除。

1- 在后臺模式下在當前平臺文件夾中啟動 Vitis IDE,并將相同的文件夾設置為工作區目錄。

vitis &
poYBAGNYgtqAe8C5AAAp9er3Zco652.png
?

創建一個新平臺:文件 > 新建 > 平臺項目并將其命名為axu2cgb_2021_2-platform 。點擊下一步。

pYYBAGNYgtyALRQ9AAB7aZL0iQ4210.png
?

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

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

操作系統選擇linux 、psu_cortexa5364-bit 。

取消選中引導組件。單擊完成。

pYYBAGNYgt-AaBjjAABhvamDgcM554.png
?

單擊psu_cortexa53域上的 linux。

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

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

保持所有其他設置不變。

poYBAGNYguGAVPnhAAF6MeVKwrU963.png
?

注意:暫時將Linux RootFSSysroot 目錄留空。

搭建平臺

在 Explorer 選項卡窗口中,右鍵單擊創建的平臺:

  • axu2cgb_2021_2-platform并選擇Build Project 。等待幾秒鐘完成。

導出平臺

在 Explorer 選項卡窗口中,右鍵單擊創建的平臺:axu2cgb_2021_2-platform并選擇Exportas Archive 。選擇您的平臺名稱并勾選包含構建文件夾。等待幾分鐘完成。

poYBAGNYguOAf6tXAAAu9crpwes514.png
?

您可以使用這個導出的 zip 文件來創建新項目。

安裝 Vitis-AI

我們創建了一個將 Xilinx 深度學習處理器單元 DPU 集成為內核的新應用程序。Xilinx 已經提供了一個腳本來創建我們需要的一切。

有關 DPU 的更多詳細信息,請查看DPU-TRD GitHub 存儲庫并閱讀PG338 DPU IP 產品指南。

首先,我們需要將 Vitis-AI 存儲庫添加到 Vitis IDE 中。

如果您還沒有啟動 Vitis IDE,請啟動它。我們可以重用之前創建的平臺的工作空間。

打開菜單Window > Preferences > Library Repository選項卡 > Add

設置以下內容:

申請并關閉

pYYBAGNYguWAMO5KAABMU-qN1U4698.png
?

下載 Vitis-AI 庫:

  • 打開菜單Xilinx >。
  • 找到我們剛剛添加的Vitis-AI條目。
  • 點擊它上面的下載按鈕。
  • 等待 Vitis-AI 存儲庫的下載完成(幾分鐘)。
  • 單擊確定。
  • v2.0的git 提交 ID 為d02dcb6041663dbc7ecbc0c6af9fafa087a789de
  • master的git commit ID當前為:ba8905493876674716ab08ea4266962193df970b

創建 DPU 應用程序項目

在我們之前創建的 axu2cg_2021_2 平臺上創建新的 Vitis-AI 設計。

轉到菜單文件 > 新建 > 應用程序項目> 下一步。

選擇平臺axu2cgb_2021_2-platform 。點擊下一步。

pYYBAGNYguiAXYubAABiWiPReZg463.png
?

將項目命名為dpu-test ,點擊下一步。

poYBAGNYguqANcgaAABOvIk4UNM956.png
?

設置域:linux on psu_cortexa53

  • 在上一步中將 Sys_root 路徑設置為 sysroot 安裝路徑:
tools/workspace/axu2cgb/platform/pfm/sysroots/cortexa72-cortexa53-xilinx-linux
  • 根 FS設置為 rootfs.ext4。
/tools/workspace/axu2cgb/software/axu2cgb_2021_2-petalinux/images/linux/rootfs.ext4
  • 內核映像設置為映像。
/tools/workspace/axu2cgb/software/axu2cgb_2021_2-petalinux/images/linux/Image

最后兩個文件位于第 2 部分中創建的 axu2cgb_2021_2-petalinux/images/linux 文件夾中。

poYBAGNYguyAAtRyAABmY56RWTY812.png
?

單擊下一步并選擇:

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

然后單擊完成以生成應用程序。

更新構建目標

  • 雙擊系統項目文件dpu-test_system.sprj
  • 將Active Build Configuration更改Hardware。

AXU2CGB 的 DPU 設置

由于 axu2cgb 板上的 FPGA 設備沒有足夠的資源來構建默認配置的 DPU,我們需要:

  • 只集成一個內核(默認不是 2 個)。
  • 更改 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 行)

如果您擁有更強大的 FPGA,請隨意嘗試啟用更多選項,但是:

  • 確保 POOL_AVG 已啟用,因為我們的模型需要它。(第 114 行)

保存文件并再次檢查所有內容,因為內核構建過程持續很長時間。

//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 函數和一個內核實例

我們使用在主 CPU 上運行的 SoftMax 功能的軟件實現,因此我們將其從內核中刪除以節省一些資源。

此外,如果我們使用的是 AXU2CGB 板,我們只能集成一個 DPU 內核實例。

雙擊dpu-test_system_hw_link.prj:

  • 通過右鍵單擊刪除sfm_xrt_top函數并選擇刪除。
  • 將DPUCZDX8G的 Compute Units 更改1。
poYBAGNYgvGAR2vKAACkIr5Cgbo628.png
?

V++ 配置設置

如果我們刪除了 DPUCZDX8G 的一個內核實例,我們還需要刪除專用于先前刪除的第二個實例的所有時鐘和連接。

  • 轉到助手視圖。
  • 雙擊dpu-test_system [系統]。
  • 展開左側樹面板并找到 dpu-test_system > dpu-test_system_hw_link > Hardware > dpu。
poYBAGNYgvSAC8eQAAB0PWdVapk748.png
?

單擊...名為V++ configuration settings的行中的按鈕。將 V++ 鏈接器設置窗口內容更改為以下內容:

[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

單擊確定、應用、應用,然后單擊應用并關閉。

將自定義 Python 應用程序添加到項目(可選)

現在,我們從命令行界面添加來自 GitHub 存儲庫的新 python 測試腳本。

  • 轉到 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 ../../..

現在我們有了一個新目錄test-dpu ,里面有一些測試 python 腳本。

注意:如果您有與 AXU2CGB 板不同的硬件,它使用 SD 卡的 SD0 接口(例如 zcu102 或 zcu104 板),您應該檢查mmcblk0 branch 而不是main 。

替換舊的 resnet50 型號(可選)

您可以將app/model目錄中的resnet50.xmodel替換為重新編譯的新模型,因為我們更改了dpu_conf.vh文件中的 DPU 設置。

但僅當您想使用默認包含的 resnet50 模型運行一些 DPU 測試時。GNU Radio 不需要。

在dpu-test/models目錄中之前克隆的 GitHub 存儲庫中已經有重新構建的resnet50.xmodel 。用重建的模型替換舊模型。

$ cd dpu-test/src/app/model
$ rm resnet50.xmodel
$ mv ../../test-dpu/models/resnet50.xmodel .
pYYBAGNYgvaAHXPPAABlamwpgvU096.png
?

注意:還有dpu_conf.vh文件應該轉到dpu-test_kernels/src/prj/Vitis目錄,以防您尚未在上一節中設置 DPU 配置。你可以比較兩個文件,應該是一樣的。

打包

更新打包選項以在SD 卡上添加應用程序和這個新的 test-dpu目錄。

  • 雙擊dpu-test_system.sprj
  • 單擊包選項上的...按鈕
  • 輸入:
--package.sd_dir=../../dpu-test/src/test-dpu --package.sd_dir=../../dpu-test/src/app

點擊確定

poYBAGNYgviAMPgJAAEQFsYkUMA048.png
?

注意: /test-dpu--package.sd_dir之間有一個空格

注意要添加到 src 目錄中的新目錄名稱不應以單詞dpu- something 開頭。這會導致 Makefile 錯誤。

構建應用程序

右鍵單擊dpu-test_system[axu2cgb_2021_2-platform]系統項目并選擇Build Project 。等待大約一個小時完成。

生成的 SD 卡映像位于dpu-test_system/Hardware/package/sd_card.img。我們的目標板需要那個。

在此構建過程中生成的最重要的文件是dpu.xclbin 。是FPGA二進制映像在FPGA中實現了DPU內核。它位于Hardware目錄中,添加到 SD 卡的引導分區并包含在 sd_card.img 映像中。

在 Target 上測試 GNU Radio 平臺

準備空的 SD 卡,大小至少 8GB。

為 AXU2CGB 板準備的SD 卡映像也可以從GitHub 存儲庫下載。

使用 Linux DD命令或用于寫入 SD 卡映像的類似程序 (Etcher)將上一步中創建的sd_card.img寫入空 SD 卡。

注意:仔細檢查= / dev / sd的輸出設備......它必須指向SD卡,除非您可以丟失主機上的所有數據。

$ cd axu2cgb/platform/dpu-test_system/Hardware/package
$ sudo dd if=sd_card.img of=/dev/sd?? bs=512; sync

將 SD 卡插入 AXU2CGB 板,通過 USB 電纜將串行控制臺連接到主機并運行串行終端程序,例如minicom 。

$ minicom -D /dev/ttyUSB0 -b 115200

以太網電纜連接到板上。板子和主機應該在同一個局域網中。

AXU2CGB板加電。U-Boot應該啟動,然后是 Linux 內核和 rootfs 文件系統。等待提示。

poYBAGNYgvqABMePAABNg9WMMYI314.png
?

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

$ uname -a
$ ifconfig

記下 IP 地址,因為我們需要它來進行SSH -X訪問。

pYYBAGNYgv2AAYf3AABmn6tCR8M707.png
?

準備主機

現在我們使用主機作為顯示器,所以我們準備主機作為X11服務器并使用“ -X ”選項ssh 到板。

主機計算機上:

  • 檢查$DISPLAY變量。應該是“ :1 ”。
  • 將本地連接添加到訪問控制列表。類型:“ xhost +本地:
  • 從主機打開到板的ssh -X會話。
  • 以root身份登錄,密碼為root 。
$ echo $DISPLAY
$ xhost +local:
$ ssh -X root@192.168.1.73
pYYBAGNYgv-AdVfsAAArnex1chs255.png
?

準備目標

首先要做的是調整SD 卡的 EXT4 分區的大小。該命令應該只運行一次。

resize-part /dev/mmcblk1p2
poYBAGNYgwGAYUSHAABCuiHhFNQ680.png
?

此外,更新數據包管理器。

$ dnf update

注意:如果您想為 GNU Radio 構建自己的OOT模塊,則應手動安裝以下 python 庫:

$ pip3 install Click
$ pip3 install click-plugins

注意:要使用 EA4GPZ 的gr-satellites模塊解碼來自衛星的信號,請安裝以下兩個附加庫:

$ pip3 install construct
$ pip3 install requests
pYYBAGNYgwOAM74vAACXFuou0QM276.png
?

在真實 Target 上測試 DPU 單元

現在,我們可以在板上運行一些測試。

在運行任何測試之前,您應該設置一些系統變量。

對于使用DPU 單元,此變??量指向 FPGA 二進制圖像:

$ export XLNX_VART_FIRMWARE=/media/sd-mmcblk1p1/dpu.xclbin

為了執行任何使用 DPU 的 C/C++ 程序,此變量指向所需的庫:

$ export LD_LIBRARY_PATH=/media/sd-mmcblk1p1/app/samples/lib

對于使用任何 GNU Radio 模塊,此變量指向 Python 包的位置:

$ export PYTHONPATH=/usr/lib/python3/dist-packages/

要獲取構建您自己的 AI 模型所需的DPU 指紋,可以使用“ xdputil query ”命令:

$ export XLNX_VART_FIRMWARE=/media/sd-mmcblk1p1/dpu.xclbin
$ xdputil query

在控制臺打印的近端找到“指紋”:“0x100002062010103 參數,并將此參數存儲在花括號 {}中,以新創建的arch.json文件。

poYBAGNYgwaAaQhCAABFS1tgNmg969.png
?

將此文件存儲在主機上的某處。使用Vitis-AI編譯 AI 模型需要此文件。

$ echo '{"fingerprint":"0x100002062010103"}' > arch.json

注意:確保文件中包含括號和雙引號。

$ cat arch.json
{"fingerprint":"0x100002062010103"}

注意:由于未知原因,Vitis-AI 在創建 dpu-test 應用程序時生成的原始arch.json文件值錯誤。指紋值以 -203 而不是 -103 結尾。請直接使用從 FPGA 讀取的指紋值來編譯您自己的模型。

將目錄更改為 SD 卡BOOT分區上的test-dpu ,所有需要的測試腳本都位于該目錄:

$ cd /media/sd-mmcblk1p1/test-dpu

該目錄下有五個 bash 測試腳本,均以“run_ 前綴開頭。

隨意探索腳本并檢查腳本中的所有系統變量是否都指向正確的位置,尤其是檢查 mmcblk 1 p1 或 mmcblk 0 p1 SD 卡分區,具體取決于您選擇的硬件平臺。

$ ls -l run_*

run_recognize_image.sh
run_test_performance.sh
run_test_accuracy.sh

run_gnuradio.sh
run_rf_classification.sh

運行每個腳本并檢查一切是否正常。

最后兩個使用 GNU Radio 的測試應該通過ssh -X session 運行,因為它們通過主機上的X11 服務器使用圖形顯示。

注意:如果重復出現錯誤,請先嘗試重新啟動板。

$ reboot -h

圖像分類測試

這是 AMD-Xilinx 教程中包含的原始 DPU 測試。測試識別提供圖像中的對象。

運行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

如果圖片被正確識別(在這種情況下是示波器),則測試通過。隨意用不同的圖片更改腳本內的圖片。

射頻調制分類性能測試

測試測量推理的最大可能幀速率。

運行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

射頻調制分類精度測試

該測試使用給定的測試數據集測量模型的準確性。

運行run_test_accuracy.sh腳本。

確保 top-1 準確度約為 0.53。我們使用了一個基線模型,該模型僅使用 6% 的可用數據集樣本進行訓練。

$ 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

調頻收音機測試

它是一個在 GNU Radio 平臺上實現的簡單 FM 收音機。該板應已將RTL-SDR USB 加密狗插入 AXU2CGB 板上的可用 USB 端口之一。

RTL-SDR USB dongle 是軟件定義的無線電接收器。應將適當的小型天線連接到 RTL-SDR。

此測試使用圖形顯示,應通過 ssh -X 會話運行。

將 USB 聲卡與揚聲器或電話連接到聲卡的音頻插孔輸入。也可以將音頻路由到 X11 服務器,而無需使用任何 USB 聲卡。

poYBAGNYgwmAKtJqAATh3wLCxXg829.jpg
FM 收音機的測試設置
?

一切都連接好后,運行run_gnuradio.sh腳本。

  • GNU Radio 將啟動。
  • 單擊上方工具箱上的播放按鈕或按鍵盤上的F6 。
  • 將打開一個新的 GUI。忽略警告消息(它只顯示一次)。
  • 調整新 GUI 的大小以使其更明顯。
  • 將 GUI 中的頻率設置為附近的任何本地 FM 廣播電臺。
  • 您應該在揚聲器中聽到選定的本地廣播電臺(如果它們已連接),并在 GUI 小部件中看到接收到的無線電頻譜。

要將音頻路由到 X11 服務器,請關閉無線電 GUI 并雙擊Audio Sink塊:

  • 刪除設備名稱字段中值為“ hw:0, 0 ”的內容。
  • 單擊確定,然后再次播放。
  • 您現在應該可以聽到主機揚聲器上的音頻了。

隨意將頻率更改為附近的任何其他 FM 廣播電臺。

pYYBAGNYgwyAReApAAJTqiFH9I0119.png
調頻收音機應用
?

在 GNU Radio 上運行射頻調制分類測試

該測試運行在 Python 下運行的 GNU Radio 平臺上開發的簡單 GUI 應用程序。

該應用程序接收業余無線電愛好者 2m 頻段上的信號,并實時預測接收數字信號的調制。對于推理,它使用在板上的 FPGA 中實現的深度學習處理器單元 (DPU)。

該測試使用圖形顯示并且應該通過 ssh -X 會話運行。

該板應已將RTL-SDR USB 加密狗插入 AXU2CGB 板上的可用 USB 端口之一。

它是一個軟件定義的無線電接收器,作為 USB 加密狗。建議將外部 VHF/UHF 天線連接到 RTL-SDR。

將 USB 聲卡與揚聲器或電話連接到聲卡的音頻插孔輸入。也可以將音頻路由到 X11 服務器,無需 USB 聲卡。

pYYBAGNYgw-Aeyq_AAKVGq08Rag969.jpg
測試設置
?

注意:平板電腦僅作為X11 服務器工作,并顯示來自 GNU Radio 的 GUI,在 FPGA 板上運行。

一切都連接好后,運行run_rf_classification.sh腳本。

  • 應用程序自動啟動。適當調整 GUI 大小。
  • SDR 接收器在業余無線電頻段上調諧到 144.8 MHz,并在該頻段上收聽一些隨機數字信號。
  • 當出現強信號時,它可以顯示在瀑布上。
  • 此時程序開始預測接收信號的調制。預測的調制打印在 SSH 控制臺上,直方圖計算所有預測的類索引。
  • 分析信號的樣本也顯示在時域(示波器)中。
pYYBAGNYgteAUblXAAJ5sX-nq24654.png
最后一個考試
?

AI 模型已包含在應用程序的test-dpu/models/rfClassification.xmodel文件中。它是一個基線模型,僅使用 10 個 epoch 進行訓練,并且僅使用數據集中 6% 的可用樣本。

下一步

隨意構建您自己的模型并在本系列的下一個/最后一個教程中使用更多示例對其進行訓練:

第 4 部分 - 在 Colab 和 Vitis-AI 中構建 AI 模型


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

評論

查看更多

下載排行

本周

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

本月

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

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>