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

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

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

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

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

連接電源打開 Kria,您將看到 Ubuntu 登錄屏幕。
默認登錄憑據(jù)是用戶名:ubuntu密碼:ubuntu
啟動時,界面可能會非常慢,所以我運行了這些命令來禁用動畫調(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 并對其進行配置(有關 Xilinx wiki 的更多信息):
sudo snap install xlnx-config --classic
xlnx-config.sysinit
現(xiàn)在檢查設備配置是否工作正常。
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)絡瀏覽器中轉(zhuǎn)到“ kria:9090 ”以查看 Jupyter 筆記本。默認密碼為xilinx 。

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

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

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

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

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

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

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

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

選擇 Kria KV260 Vision AI 入門套件。繼續(xù)使用所有默認值,直到到達項目工作區(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
總線)

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

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

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

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

在 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.bit
and sha256accelerator.hwh
。請注意,兩個文件必須具有相同的名稱才能正確用作 PYNQ 覆蓋。
我將解釋我的代碼的一些片段。您可以在下面找到完整的代碼。
創(chuàng)建一個新的 Jupyter notebook,我們可以在其中編程比特流。

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

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

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

結(jié)論
總而言之,使用 Vitis HLS 無需任何修改即可輕松加速 C 函數(shù)。盡管需要對硬件協(xié)議及其變體有一定的了解和了解,但軟件過程相對簡單。
從這里,我們了解過去如何使用 FPGA 來加速這些重復性計算,例如區(qū)塊鏈挖掘。通過直接針對算法,硬件更具體,因此性能更高。
- Vitis HLS:使用任務級并行性的高性能設計
- Vitis HLS移植指南
- 使用PYNQ和Vitis AI的智能辦公室熱辦公桌
- 《醫(yī)用電子直線加速器》pdf 0次下載
- 基于STM32的C語言SHA256加密算法
- 基于FPGA的SIMD卷積神經(jīng)網(wǎng)絡加速器 24次下載
- 神經(jīng)網(wǎng)絡加速器簡述 13次下載
- 基于深度學習的矩陣乘法加速器設計方案 3次下載
- Vitis初探—1.將設計從SDSoC/Vivado HLS遷移到Vitis上
- Vitis Vision | 利用Vitis HLS tcl shell 一鍵跑通視覺加速例程
- 工具包和Eval板幫助加速加速器應用 13次下載
- Green網(wǎng)絡加速器 24次下載
- DRM系統(tǒng)的SHA256算法設計及FPGA實現(xiàn) 141次下載
- 加速器控制技術
- 基于FPGA的SHA-256算法實現(xiàn)
- 在Windows 10上創(chuàng)建并運行AMD Vitis?視覺庫示例 825次閱讀
- 一個微型的粒子加速器 836次閱讀
- 通過SHA-256主/從身份驗證系統(tǒng)實現(xiàn)更高的安全性 1196次閱讀
- 使用AXI CDMA制作FPGA AI加速器通道 2139次閱讀
- 理解Vitis HLS默認行為 1880次閱讀
- Vitis HLS知識庫總結(jié) 3546次閱讀
- Vitis HLS如何添加HLS導出的.xo文件 3117次閱讀
- 使用AXI4-Lite將Vitis HLS創(chuàng)建的IP連接到PS 848次閱讀
- Vitis初探—1.將設計從SDSoC/Vivado HLS遷移到Vitis上的教程 3952次閱讀
- 如何在Vitis HLS中使用C語言代碼創(chuàng)建AXI4-Lite接口 1872次閱讀
- Vitis HLS工具簡介及設計流程 2410次閱讀
- 如何在Vitis HLS中使用C語言代碼創(chuàng)建AXI4-Lite接口 6495次閱讀
- XIlinx利用HLS進行加速設計進度 6748次閱讀
- Hash算法簡介 5064次閱讀
- 基于SHA-256安全認證工作原理的最新安全認證解決方案 5390次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論