資料介紹
描述
介紹
安全哈希算法 (SHA-256) 是一種加密哈希函數,用于保護密碼或網站服務器等安全性。它的一個著名用途是比特幣的工作量證明,它基于 SHA256 算法來驗證交易。
我想很多人會聽說 GPU 被用于挖礦,因為 GPU 更適合哈希算法所需的數字運算。但是,您知道嗎,可以使用 FPGA 完成定制化程度更高的加速?通過配置 FPGA 以在硬件中加速它,它的性能甚至會比 GPU 更高。事實上,比特幣礦工早在 2011 年就開始使用 FPGA 進行挖礦。
如今,挖比特幣的復雜性越來越高,FPGA 挖礦可能不再有利可圖。然而,我們可以將其作為一個有用的案例研究來了解如何使用 Xilinx FPGA 輕松完成加速。也許下次當我們看到另一個潛在的算法加速用例時,我們就會知道該怎么做。

開發流程總結
我們將使用 Xilinx Kria KV260 的硬件套件以及新發布的 Ubuntu 20.04 LTS 操作系統。我們將安裝 PYNQ,以便我們可以從 Python notebook 獲得硬件加速的好處。
在我們的 PC 上,我們將使用 Vitis HLS 將開源 C 代碼實現轉換為硬件 IP 模塊。之后,Vivado 用于創建與處理器的連接并生成比特流。
最后,我們將比特流傳輸到 Xilinx Kria 并在 PYNQ 環境中對性能增益進行基準測試。

設置 SD 卡映像
首先我們需要為 Kria KV260 Vision AI Starter Kit 準備 SD 卡。
包裝盒中提供了一張 16GB 的 SD 卡,但我建議至少使用 32GB的,因為設置可能會超過 16GB 的空間。
我們將使用 Ubuntu 20.04.3 LTS 下載。從網站下載圖像并將其保存在您的計算機上。

在您的 PC 上,下載 Balena Etcher 以將其寫入您的 SD 卡。

完成后,您的 SD 卡已準備就緒,您可以將其插入 Kria 以設置 Xilinx Ubuntu!將 USB 鍵盤、USB 鼠標、HDMI/DisplayPort 和以太網連接到 Kria。

連接電源打開 Kria,您將看到 Ubuntu 登錄屏幕。
默認登錄憑據是用戶名:ubuntu密碼:ubuntu
啟動時,界面可能會非常慢,所以我運行了這些命令來禁用動畫調整以加快速度。
gsettings set org.gnome.desktop.interface enable-animations false
gsettings set org.gnome.shell.extensions.dash-to-dock animate-show-apps false
接下來,通過執行系統更新并調用此命令將系統更新到最新版本
sudo apt upgrade
安裝用于系統管理的 xlnx-config snap 并對其進行配置(有關 Xilinx wiki 的更多信息):
sudo snap install xlnx-config --classic
xlnx-config.sysinit
現在檢查設備配置是否工作正常。
sudo xlnx-config --xmutil boardid -b som
安裝最新的Kria-PYNQ 包。這最多需要 30 分鐘。
git clone https://github.com/Xilinx/Kria-PYNQ.git
cd Kria-PYNQ/
sudo bash install.sh

安裝后,您可以在網絡瀏覽器中轉到“ kria:9090 ”以查看 Jupyter 筆記本。默認密碼為xilinx 。

Kria 系統已準備就緒。現在讓我們回到我們的 PC 來創建 PYNQ 覆蓋比特流。
Vitis HLS 中的加速器 IP
使用 Vitis HLS,我們可以將許多現有的 C/C++ 代碼轉換為硬件 IP 模塊。我將在不做任何修改的情況下調整此 SHA256 C 代碼實現。
啟動 Vitis HLS 并創建一個新項目。

在下一頁上,選擇目標設備。對于 Kria KV260 Vision AI 入門套件,它使用的是零件:xck26-sfvc784-2lv-c。

進入工作區后,創建一個源文件。選擇該文件作為項目綜合設置中的頂級函數。

在代碼中,我創建了一個名為hash(). 它基本上只調用 SHA256 散列函數。

現在請注意,此功能是在可編程邏輯 (PL) 中實現的。這意味著 的參數hash()實際上是需要傳輸到處理系統 (PS) 或從處理系統 (PS) 傳輸的輸入和輸出。因此,需要選擇合適的通信接口。
對于 和 之類的小變量text_length,result我選擇了s_axilitewhich 是適合小變量的串行協議。以后從 PYNQ 訪問它也相對容易。
對于像 的大型緩沖區text_input[1024],我選擇m_axi了并行協議。它占用了更多的邏輯和互連,但這是必要的,以便傳輸數據足夠快。
有關更多信息,代碼在本項目末尾提供。
在 Flow Navigator 下啟動 C 綜合。

綜合后,您可以驗證我們稍后將在 PYNQ 中訪問的參數。

最后,選擇 Export RTL 并選擇要將其保存到的位置。它將輸出一個 zip 文件,其中包含要在 Vivado 中導入的 IP 模塊。

Vivado 中的框圖綜合
打開 Vivado 并創建一個新項目

選擇 Kria KV260 Vision AI 入門套件。繼續使用所有默認值,直到到達項目工作區。

在我們做任何其他事情之前,我們需要添加我們之前創建的 IP。
轉到Project Manager > Settings > IP > Repository ,然后添加包含 zip 文件的文件夾。

在 IP Integrator 下,選擇 Create Block Diagram。添加以下塊:
- Zynq UltraScale+ MPSoc(這是 PS)
- 哈希(我們從 Vitis HLS 生成的 IP)
-
AXI 互連(從我們的 IP 互連到
m_axi總線)

之后,運行連接自動化。選擇所有可能的自動化并接受默認設置。

請注意,m_axi(Master)的互連總線仍未連接。這是因為我忘記在PS上啟用Slave接口。

雙擊 Zynq UltraScale+ MPSoc 塊。啟用 AXI HP0 FPD (高性能)。檢查數據寬度是否為 32 位,這與 HLS 中合成的內容相匹配。

再次運行連接自動化。這是最終的框圖。

在 Sources 下,右鍵單擊設計并選擇 Create HDL Wrapper。它會自動包裝設計,以便您為綜合做好準備。

?
生成比特流。完成綜合和實施可能需要長達一個小時的時間。

最后,為了獲得 PYNQ 覆蓋,我們必須檢索 2 個文件:.bit文件和.hwh文件。
可以在以下位置找到比特流文件:*.runs/impl_1/design_1_wrapper.bit

硬件切換文件可在以下位置找到:*.gen/sources_1/bd/design_1/hw_handoff/design_1.hwh

將這些文件復制到 Kria。
PYNQ 中的接口
我復制了 2 個文件并將其重命名為sha256accelerator.bitand sha256accelerator.hwh。請注意,兩個文件必須具有相同的名稱才能正確用作 PYNQ 覆蓋。
我將解釋我的代碼的一些片段。您可以在下面找到完整的代碼。
創建一個新的 Jupyter notebook,我們可以在其中編程比特流。

在這里,我定義了硬件功能,即將輸入數據寫入緩沖區并啟動該過程。完成后,該函數將返回。我還定義了一個稱為內置庫的軟件功能。

運行一些測試,我們可以比較兩個函數的輸入,以驗證一切都在硬件上正確實現。

基準性能
運行一些基準測試,我們發現硬件實現比在軟件上運行快約 14 倍。

結論
總而言之,使用 Vitis HLS 無需任何修改即可輕松加速 C 函數。盡管需要對硬件協議及其變體有一定的了解和了解,但軟件過程相對簡單。
從這里,我們了解過去如何使用 FPGA 來加速這些重復性計算,例如區塊鏈挖掘。通過直接針對算法,硬件更具體,因此性能更高。
- Vitis HLS:使用任務級并行性的高性能設計
- Vitis HLS移植指南
- 使用PYNQ和Vitis AI的智能辦公室熱辦公桌
- 《醫用電子直線加速器》pdf 0次下載
- 基于STM32的C語言SHA256加密算法
- 基于FPGA的SIMD卷積神經網絡加速器 24次下載
- 神經網絡加速器簡述 13次下載
- 基于深度學習的矩陣乘法加速器設計方案 7次下載
- Vitis初探—1.將設計從SDSoC/Vivado HLS遷移到Vitis上
- Vitis Vision | 利用Vitis HLS tcl shell 一鍵跑通視覺加速例程
- 工具包和Eval板幫助加速加速器應用 13次下載
- Green網絡加速器 24次下載
- DRM系統的SHA256算法設計及FPGA實現 141次下載
- 加速器控制技術
- 基于FPGA的SHA-256算法實現
- 如何在Unified IDE中創建視覺庫HLS組件 1.3k次閱讀
- 使用AMD Vitis Unified IDE創建HLS組件 2.1k次閱讀
- 如何使用AMD Vitis HLS創建HLS IP 1.5k次閱讀
- DS28E15內置1-Wire SHA-256和512位用戶EEPROM的DeepCover安全認證方案 915次閱讀
- DS28EL22 DeepCover安全認證器,帶有1-Wire SHA-256和2Kb用戶EEPROM技術手冊 757次閱讀
- DS28C22 DeepCover安全存儲器,帶有I2C SHA-256和3Kb用戶EEPROM技術手冊 874次閱讀
- MAX66250 ISO 15693、SHA3-256、256位用戶EEPROM安全認證器技術手冊 756次閱讀
- 理解Vitis HLS默認行為 2.4k次閱讀
- Vitis HLS知識庫總結 4.6k次閱讀
- Vitis HLS如何添加HLS導出的.xo文件 3.9k次閱讀
- 使用AXI4-Lite將Vitis HLS創建的IP連接到PS 1.2k次閱讀
- Vitis初探—1.將設計從SDSoC/Vivado HLS遷移到Vitis上的教程 5.3k次閱讀
- 如何在Vitis HLS中使用C語言代碼創建AXI4-Lite接口 2.8k次閱讀
- Vitis HLS工具簡介及設計流程 3.5k次閱讀
- 如何在Vitis HLS中使用C語言代碼創建AXI4-Lite接口 7.4k次閱讀
下載排行
本周
- 1SY50655 用于高輸入電壓應用的偽固定頻率SSR反激式穩壓器英文資料
- 1.01 MB | 3次下載 | 免費
- 2華潤微 CRTE280P06L2-G -60V Trench P-MOSFET 技術參數與應用解析
- 1.83 MB | 2次下載 | 免費
- 3PC0805全集成單相無刷直流電機可編程閉環驅動器英文資料
- 0.59 MB | 1次下載 | 免費
- 4英集芯 IP5419 支持數碼屏顯示的TWs耳機充電倉管理SoC技術手冊
- 5.56 MB | 1次下載 | 免費
- 5英集芯 IP5426V 雙通道輸出的 TWS 充電盒 SOC技術手冊
- 8.11 MB | 1次下載 | 免費
- 6變頻器維修資料大全
- 1.28 MB | 1次下載 | 4 積分
- 7SY52341 次級側同步整流英文手冊
- 0.94 MB | 1次下載 | 免費
- 8SY50213N 反激式穩壓器帶主側CV/CC控制技術手冊
- 1.16 MB | 次下載 | 免費
本月
- 1EMC PCB設計總結
- 0.33 MB | 11次下載 | 免費
- 2耗盡型MOS FET產品目錄選型表
- 0.14 MB | 4次下載 | 免費
- 3PD取電芯片 ECP5702規格書
- 0.88 MB | 4次下載 | 免費
- 4SY50655 用于高輸入電壓應用的偽固定頻率SSR反激式穩壓器英文資料
- 1.01 MB | 3次下載 | 免費
- 5九陽JYCP-21ZD-A主控板電路圖資料
- 2.33 MB | 2次下載 | 10 積分
- 6氮化鎵GaN FET/GaN HEMT 功率驅動電路選型表
- 0.10 MB | 2次下載 | 免費
- 7華潤微 CRTE280P06L2-G -60V Trench P-MOSFET 技術參數與應用解析
- 1.83 MB | 2次下載 | 免費
- 8PD取電芯片,可取5/9/12/15/20V電壓ECP5702數據手冊
- 0.88 MB | 1次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233095次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191464次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183360次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81606次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73832次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發燒友App





創作
發文章
發帖
提問
發資料
發視頻
上傳資料賺積分
評論