資料介紹
描述
介紹
安全哈希算法 (SHA-256) 是一種加密哈希函數(shù),用于保護密碼或網(wǎng)站服務器等安全性。它的一個著名用途是比特幣的工作量證明,它基于 SHA256 算法來驗證交易。
我想很多人會聽說 GPU 被用于挖礦,因為 GPU 更適合哈希算法所需的數(shù)字運算。但是,您知道嗎,可以使用 FPGA 完成定制化程度更高的加速?通過配置 FPGA 以在硬件中加速它,它的性能甚至會比 GPU 更高。事實上,比特幣礦工早在 2011 年就開始使用 FPGA 進行挖礦。
如今,挖比特幣的復雜性越來越高,F(xiàn)PGA 挖礦可能不再有利可圖。然而,我們可以將其作為一個有用的案例研究來了解如何使用 Xilinx FPGA 輕松完成加速。也許下次當我們看到另一個潛在的算法加速用例時,我們就會知道該怎么做。
![pYYBAGPjNd6AJH1nAABOwmgK1e4925.png](https://file.elecfans.com/web2/M00/8F/AE/pYYBAGPjNd6AJH1nAABOwmgK1e4925.png)
開發(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)境中對性能增益進行基準測試。
![pYYBAGPjNeOAIKbqAAC9TbHkouU824.png](https://file.elecfans.com/web2/M00/8F/AE/pYYBAGPjNeOAIKbqAAC9TbHkouU824.png)
設置 SD 卡映像
首先我們需要為 Kria KV260 Vision AI Starter Kit 準備 SD 卡。
包裝盒中提供了一張 16GB 的 SD 卡,但我建議至少使用 32GB的,因為設置可能會超過 16GB 的空間。
我們將使用 Ubuntu 20.04.3 LTS 下載。從網(wǎng)站下載圖像并將其保存在您的計算機上。
![poYBAGPjNeeAOxE0AABYdmgtXAM385.png](https://file.elecfans.com/web2/M00/8F/29/poYBAGPjNeeAOxE0AABYdmgtXAM385.png)
在您的 PC 上,下載 Balena Etcher 以將其寫入您的 SD 卡。
![pYYBAGPjNemALIPVAAAu5FXHPxY043.png](https://file.elecfans.com/web2/M00/8F/AE/pYYBAGPjNemALIPVAAAu5FXHPxY043.png)
完成后,您的 SD 卡已準備就緒,您可以將其插入 Kria 以設置 Xilinx Ubuntu!將 USB 鍵盤、USB 鼠標、HDMI/DisplayPort 和以太網(wǎng)連接到 Kria。
![poYBAGPjNeyAF5vgAACsZbU9SvM449.png](https://file.elecfans.com/web2/M00/8F/29/poYBAGPjNeyAF5vgAACsZbU9SvM449.png)
連接電源打開 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 并對其進行配置(有關(guān) 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
![pYYBAGPjNfKAVDZKAACRpBlHh1s110.png](https://file.elecfans.com/web2/M00/8F/AE/pYYBAGPjNfKAVDZKAACRpBlHh1s110.png)
安裝后,您可以在網(wǎng)絡瀏覽器中轉(zhuǎn)到“ kria:9090 ”以查看 Jupyter 筆記本。默認密碼為xilinx 。
![pYYBAGPjNfaAIk8XAAD_xfhgW-w005.png](https://file.elecfans.com/web2/M00/8F/AE/pYYBAGPjNfaAIk8XAAD_xfhgW-w005.png)
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)建一個新項目。
![poYBAGPjNfiAGpqJAAA4fm6v5D4857.png](https://file.elecfans.com/web2/M00/8F/29/poYBAGPjNfiAGpqJAAA4fm6v5D4857.png)
在下一頁上,選擇目標設備。對于 Kria KV260 Vision AI 入門套件,它使用的是零件:xck26-sfvc784-2lv-c
。
![poYBAGPjNgKACMg4AABGt4AWKqQ753.png](https://file.elecfans.com/web2/M00/8F/29/poYBAGPjNgKACMg4AABGt4AWKqQ753.png)
進入工作區(qū)后,創(chuàng)建一個源文件。選擇該文件作為項目綜合設置中的頂級函數(shù)。
![pYYBAGPjNjCAHjlcAACGqF59z24199.png](https://file.elecfans.com/web2/M00/8F/AE/pYYBAGPjNjCAHjlcAACGqF59z24199.png)
在代碼中,我創(chuàng)建了一個名為hash()
. 它基本上只調(diào)用 SHA256 散列函數(shù)。
![poYBAGPjNjyABIIMAABlV3iY3tc050.png](https://file.elecfans.com/web2/M00/8F/29/poYBAGPjNjyABIIMAABlV3iY3tc050.png)
現(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ù)足夠快。
有關(guān)更多信息,代碼在本項目末尾提供。
在 Flow Navigator 下啟動 C 綜合。
![pYYBAGPjNtyAeOm3AAAlROyDyEg440.png](https://file.elecfans.com/web2/M00/8F/AE/pYYBAGPjNtyAeOm3AAAlROyDyEg440.png)
綜合后,您可以驗證我們稍后將在 PYNQ 中訪問的參數(shù)。
![poYBAGPjbT2AMaLuAADkBLDW9gQ903.png](https://file.elecfans.com/web2/M00/8F/44/poYBAGPjbT2AMaLuAADkBLDW9gQ903.png)
最后,選擇 Export RTL 并選擇要將其保存到的位置。它將輸出一個 zip 文件,其中包含要在 Vivado 中導入的 IP 模塊。
![pYYBAGPjbUCAB9l4AABKq4bx31o161.png](https://file.elecfans.com/web2/M00/8F/C9/pYYBAGPjbUCAB9l4AABKq4bx31o161.png)
Vivado 中的框圖綜合
打開 Vivado 并創(chuàng)建一個新項目
![poYBAGPjbUOADC8SAABQJBpeJBs097.png](https://file.elecfans.com/web2/M00/8F/44/poYBAGPjbUOADC8SAABQJBpeJBs097.png)
選擇 Kria KV260 Vision AI 入門套件。繼續(xù)使用所有默認值,直到到達項目工作區(qū)。
![pYYBAGPjbUiATbIdAACCt0-hO_Y238.png](https://file.elecfans.com/web2/M00/8F/C9/pYYBAGPjbUiATbIdAACCt0-hO_Y238.png)
在我們做任何其他事情之前,我們需要添加我們之前創(chuàng)建的 IP。
轉(zhuǎn)到Project Manager > Settings > IP > Repository ,然后添加包含 zip 文件的文件夾。
![pYYBAGPjbUuAK3JwAACK7HYQyfM510.png](https://file.elecfans.com/web2/M00/8F/C9/pYYBAGPjbUuAK3JwAACK7HYQyfM510.png)
在 IP Integrator 下,選擇 Create Block Diagram。添加以下塊:
- Zynq UltraScale+ MPSoc(這是 PS)
- 哈希(我們從 Vitis HLS 生成的 IP)
-
AXI 互連(從我們的 IP 互連到
m_axi
總線)
![pYYBAGPjbU6AHZiNAADW9CQC03g268.png](https://file.elecfans.com/web2/M00/8F/C9/pYYBAGPjbU6AHZiNAADW9CQC03g268.png)
之后,運行連接自動化。選擇所有可能的自動化并接受默認設置。
![poYBAGPjbVaAZxkpAABdY-dnfs0638.png](https://file.elecfans.com/web2/M00/8F/44/poYBAGPjbVaAZxkpAABdY-dnfs0638.png)
請注意,m_axi
(Master)的互連總線仍未連接。這是因為我忘記在PS上啟用Slave接口。
![pYYBAGPjbVmAQRNeAAEdk38QdZQ598.png](https://file.elecfans.com/web2/M00/8F/C9/pYYBAGPjbVmAQRNeAAEdk38QdZQ598.png)
雙擊 Zynq UltraScale+ MPSoc 塊。啟用 AXI HP0 FPD (高性能)。檢查數(shù)據(jù)寬度是否為 32 位,這與 HLS 中合成的內(nèi)容相匹配。
![poYBAGPjbV2AArXTAACfBOBrxbw751.png](https://file.elecfans.com/web2/M00/8F/45/poYBAGPjbV2AArXTAACfBOBrxbw751.png)
再次運行連接自動化。這是最終的框圖。
![poYBAGPjbWGAItRcAAEzTIal8oY492.png](https://file.elecfans.com/web2/M00/8F/45/poYBAGPjbWGAItRcAAEzTIal8oY492.png)
在 Sources 下,右鍵單擊設計并選擇 Create HDL Wrapper。它會自動包裝設計,以便您為綜合做好準備。
![poYBAGPjbWSAFmjrAABFErKXxMk817.png](https://file.elecfans.com/web2/M00/8F/45/poYBAGPjbWSAFmjrAABFErKXxMk817.png)
?
生成比特流。完成綜合和實施可能需要長達一個小時的時間。
![pYYBAGPjbWiAGL6JAACGXAxGIAo843.png](https://file.elecfans.com/web2/M00/8F/C9/pYYBAGPjbWiAGL6JAACGXAxGIAo843.png)
最后,為了獲得 PYNQ 覆蓋,我們必須檢索 2 個文件:.bit
文件和.hwh
文件。
可以在以下位置找到比特流文件:*.runs/impl_1/design_1_wrapper.bit
![poYBAGPjbWuAZA33AABO6VULt7U924.png](https://file.elecfans.com/web2/M00/8F/45/poYBAGPjbWuAZA33AABO6VULt7U924.png)
硬件切換文件可在以下位置找到:*.gen/sources_1/bd/design_1/hw_handoff/design_1.hwh
![pYYBAGPjfa2ABFkfAAAo8PrlE78452.png](https://file.elecfans.com/web2/M00/8F/D4/pYYBAGPjfa2ABFkfAAAo8PrlE78452.png)
將這些文件復制到 Kria。
PYNQ 中的接口
我復制了 2 個文件并將其重命名為sha256accelerator.bit
and sha256accelerator.hwh
。請注意,兩個文件必須具有相同的名稱才能正確用作 PYNQ 覆蓋。
我將解釋我的代碼的一些片段。您可以在下面找到完整的代碼。
創(chuàng)建一個新的 Jupyter notebook,我們可以在其中編程比特流。
![pYYBAGPjfa-AKJ07AAAweGdobxI072.png](https://file.elecfans.com/web2/M00/8F/D4/pYYBAGPjfa-AKJ07AAAweGdobxI072.png)
在這里,我定義了硬件功能,即將輸入數(shù)據(jù)寫入緩沖區(qū)并啟動該過程。完成后,該函數(shù)將返回。我還定義了一個稱為內(nèi)置庫的軟件功能。
![pYYBAGPjfbGAHHfhAABpid1N4FA074.png](https://file.elecfans.com/web2/M00/8F/D4/pYYBAGPjfbGAHHfhAABpid1N4FA074.png)
運行一些測試,我們可以比較兩個函數(shù)的輸入,以驗證一切都在硬件上正確實現(xiàn)。
![poYBAGPjfbSAOuBqAACBekWE04k321.png](https://file.elecfans.com/web2/M00/8F/50/poYBAGPjfbSAOuBqAACBekWE04k321.png)
基準性能
運行一些基準測試,我們發(fā)現(xiàn)硬件實現(xiàn)比在軟件上運行快約 14 倍。
![pYYBAGPjfcWAHiSMAABrmj33AU4949.png](https://file.elecfans.com/web2/M00/8F/D4/pYYBAGPjfcWAHiSMAABrmj33AU4949.png)
結(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次下載
- 加速器控制技術(shù)
- 基于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開關(guān)電源設計實例指南
- 未知 | 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次下載 | 免費
評論