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

開發(fā)流程總結(jié)
我們將使用 Xilinx Kria KV260 的硬件套件以及新發(fā)布的 Ubuntu 20.04 LTS 操作系統(tǒng)。我們將安裝 PYNQ,以便我們可以從 Python notebook 獲得硬件加速的好處。
在我們的 PC 上,我們將使用 Vitis HLS 將開源 C 代碼實(shí)現(xiàn)轉(zhuǎn)換為硬件 IP 模塊。之后,Vivado 用于創(chuàng)建與處理器的連接并生成比特流。
最后,我們將比特流傳輸?shù)?Xilinx Kria 并在 PYNQ 環(huán)境中對性能增益進(jìn)行基準(zhǔn)測試。

設(shè)置 SD 卡映像
首先我們需要為 Kria KV260 Vision AI Starter Kit 準(zhǔn)備 SD 卡。
包裝盒中提供了一張 16GB 的 SD 卡,但我建議至少使用 32GB的,因?yàn)樵O(shè)置可能會超過 16GB 的空間。
我們將使用 Ubuntu 20.04.3 LTS 下載。從網(wǎng)站下載圖像并將其保存在您的計(jì)算機(jī)上。

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

完成后,您的 SD 卡已準(zhǔn)備就緒,您可以將其插入 Kria 以設(shè)置 Xilinx Ubuntu!將 USB 鍵盤、USB 鼠標(biāo)、HDMI/DisplayPort 和以太網(wǎng)連接到 Kria。

連接電源打開 Kria,您將看到 Ubuntu 登錄屏幕。
默認(rèn)登錄憑據(jù)是用戶名:ubuntu密碼:ubuntu
啟動時,界面可能會非常慢,所以我運(yùn)行了這些命令來禁用動畫調(diào)整以加快速度。
gsettings set org.gnome.desktop.interface enable-animations false
gsettings set org.gnome.shell.extensions.dash-to-dock animate-show-apps false
接下來,通過執(zhí)行系統(tǒng)更新并調(diào)用此命令將系統(tǒng)更新到最新版本
sudo apt upgrade
安裝用于系統(tǒng)管理的 xlnx-config snap 并對其進(jìn)行配置(有關(guān) Xilinx wiki 的更多信息):
sudo snap install xlnx-config --classic
xlnx-config.sysinit
現(xiàn)在檢查設(shè)備配置是否工作正常。
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

安裝后,您可以在網(wǎng)絡(luò)瀏覽器中轉(zhuǎn)到“ kria:9090 ”以查看 Jupyter 筆記本。默認(rèn)密碼為xilinx 。

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

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

進(jìn)入工作區(qū)后,創(chuàng)建一個源文件。選擇該文件作為項(xiàng)目綜合設(shè)置中的頂級函數(shù)。

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

現(xiàn)在請注意,此功能是在可編程邏輯 (PL) 中實(shí)現(xiàn)的。這意味著 的參數(shù)hash()實(shí)際上是需要傳輸?shù)教幚硐到y(tǒng) (PS) 或從處理系統(tǒng) (PS) 傳輸?shù)妮斎牒洼敵觥?/font>因此,需要選擇合適的通信接口。
對于 和 之類的小變量text_length,result我選擇了s_axilitewhich 是適合小變量的串行協(xié)議。以后從 PYNQ 訪問它也相對容易。
對于像 的大型緩沖區(qū)text_input[1024],我選擇m_axi了并行協(xié)議。它占用了更多的邏輯和互連,但這是必要的,以便傳輸數(shù)據(jù)足夠快。
有關(guān)更多信息,代碼在本項(xiàng)目末尾提供。
在 Flow Navigator 下啟動 C 綜合。

綜合后,您可以驗(yàn)證我們稍后將在 PYNQ 中訪問的參數(shù)。

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

Vivado 中的框圖綜合
打開 Vivado 并創(chuàng)建一個新項(xiàng)目

選擇 Kria KV260 Vision AI 入門套件。繼續(xù)使用所有默認(rèn)值,直到到達(dá)項(xiàng)目工作區(qū)。

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

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

之后,運(yùn)行連接自動化。選擇所有可能的自動化并接受默認(rèn)設(shè)置。

請注意,m_axi(Master)的互連總線仍未連接。這是因?yàn)槲彝浽赑S上啟用Slave接口。

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

再次運(yùn)行連接自動化。這是最終的框圖。

在 Sources 下,右鍵單擊設(shè)計(jì)并選擇 Create HDL Wrapper。它會自動包裝設(shè)計(jì),以便您為綜合做好準(zhǔn)備。

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

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

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

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

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

運(yùn)行一些測試,我們可以比較兩個函數(shù)的輸入,以驗(yàn)證一切都在硬件上正確實(shí)現(xiàn)。

基準(zhǔn)性能
運(yùn)行一些基準(zhǔn)測試,我們發(fā)現(xiàn)硬件實(shí)現(xiàn)比在軟件上運(yùn)行快約 14 倍。

結(jié)論
總而言之,使用 Vitis HLS 無需任何修改即可輕松加速 C 函數(shù)。盡管需要對硬件協(xié)議及其變體有一定的了解和了解,但軟件過程相對簡單。
從這里,我們了解過去如何使用 FPGA 來加速這些重復(fù)性計(jì)算,例如區(qū)塊鏈挖掘。通過直接針對算法,硬件更具體,因此性能更高。
- Vitis HLS:使用任務(wù)級并行性的高性能設(shè)計(jì)
- Vitis HLS移植指南
- 使用PYNQ和Vitis AI的智能辦公室熱辦公桌
- 《醫(yī)用電子直線加速器》pdf 0次下載
- 基于STM32的C語言SHA256加密算法
- 基于FPGA的SIMD卷積神經(jīng)網(wǎng)絡(luò)加速器 24次下載
- 神經(jīng)網(wǎng)絡(luò)加速器簡述 13次下載
- 基于深度學(xué)習(xí)的矩陣乘法加速器設(shè)計(jì)方案 7次下載
- Vitis初探—1.將設(shè)計(jì)從SDSoC/Vivado HLS遷移到Vitis上
- Vitis Vision | 利用Vitis HLS tcl shell 一鍵跑通視覺加速例程
- 工具包和Eval板幫助加速加速器應(yīng)用 13次下載
- Green網(wǎng)絡(luò)加速器 24次下載
- DRM系統(tǒng)的SHA256算法設(shè)計(jì)及FPGA實(shí)現(xiàn) 141次下載
- 加速器控制技術(shù)
- 基于FPGA的SHA-256算法實(shí)現(xiàn)
- 如何在Unified IDE中創(chuàng)建視覺庫HLS組件 1.3k次閱讀
- 使用AMD Vitis Unified IDE創(chuàng)建HLS組件 2.1k次閱讀
- 如何使用AMD Vitis HLS創(chuàng)建HLS IP 1.5k次閱讀
- DS28E15內(nèi)置1-Wire SHA-256和512位用戶EEPROM的DeepCover安全認(rèn)證方案 915次閱讀
- DS28EL22 DeepCover安全認(rèn)證器,帶有1-Wire SHA-256和2Kb用戶EEPROM技術(shù)手冊 757次閱讀
- DS28C22 DeepCover安全存儲器,帶有I2C SHA-256和3Kb用戶EEPROM技術(shù)手冊 874次閱讀
- MAX66250 ISO 15693、SHA3-256、256位用戶EEPROM安全認(rèn)證器技術(shù)手冊 756次閱讀
- 理解Vitis HLS默認(rèn)行為 2.4k次閱讀
- Vitis HLS知識庫總結(jié) 4.6k次閱讀
- Vitis HLS如何添加HLS導(dǎo)出的.xo文件 3.9k次閱讀
- 使用AXI4-Lite將Vitis HLS創(chuàng)建的IP連接到PS 1.2k次閱讀
- Vitis初探—1.將設(shè)計(jì)從SDSoC/Vivado HLS遷移到Vitis上的教程 5.3k次閱讀
- 如何在Vitis HLS中使用C語言代碼創(chuàng)建AXI4-Lite接口 2.8k次閱讀
- Vitis HLS工具簡介及設(shè)計(jì)流程 3.5k次閱讀
- 如何在Vitis HLS中使用C語言代碼創(chuàng)建AXI4-Lite接口 7.4k次閱讀
下載排行
本周
- 1新一代網(wǎng)絡(luò)可視化(NPB 2.0)
- 3.40 MB | 1次下載 | 免費(fèi)
- 2冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 1次下載 | 10 積分
- 3MDD品牌三極管MMBT3906數(shù)據(jù)手冊
- 2.33 MB | 次下載 | 免費(fèi)
- 4MDD品牌三極管S9012數(shù)據(jù)手冊
- 2.62 MB | 次下載 | 免費(fèi)
- 5LAT1218 如何選擇和設(shè)置外部晶體適配 BlueNRG-X
- 0.60 MB | 次下載 | 3 積分
- 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
- 0.89 MB | 次下載 | 3 積分
- 7收音環(huán)繞擴(kuò)音機(jī) AVR-1507手冊
- 2.50 MB | 次下載 | 免費(fèi)
- 8MS1000TA 超聲波測量模擬前端芯片技術(shù)手冊
- 0.60 MB | 次下載 | 免費(fèi)
本月
- 1愛華AIWA HS-J202維修手冊
- 3.34 MB | 37次下載 | 免費(fèi)
- 2PC5502負(fù)載均流控制電路數(shù)據(jù)手冊
- 1.63 MB | 23次下載 | 免費(fèi)
- 3NB-IoT芯片廠商的資料說明
- 0.31 MB | 22次下載 | 1 積分
- 4UWB653Pro USB口測距通信定位模塊規(guī)格書
- 838.47 KB | 5次下載 | 免費(fèi)
- 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
- 0.04 MB | 4次下載 | 1 積分
- 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
- 0.08 MB | 2次下載 | 1 積分
- 7100W準(zhǔn)諧振反激式恒流電源電路圖資料
- 0.09 MB | 2次下載 | 1 積分
- 8FS8025B USB的PD和OC快充協(xié)議電壓誘騙控制器IC技術(shù)手冊
- 1.81 MB | 1次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191439次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183353次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81602次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73822次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評論