資料介紹
描述
介紹
安全哈希算法 (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_axilite
which 是適合小變量的串行協議。以后從 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.bit
and 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次下載
- 神經網絡加速器簡述 12次下載
- 基于深度學習的矩陣乘法加速器設計方案 3次下載
- Vitis初探—1.將設計從SDSoC/Vivado HLS遷移到Vitis上
- Vitis Vision | 利用Vitis HLS tcl shell 一鍵跑通視覺加速例程
- 工具包和Eval板幫助加速加速器應用 13次下載
- Green網絡加速器 24次下載
- DRM系統的SHA256算法設計及FPGA實現 141次下載
- 加速器控制技術
- 基于FPGA的SHA-256算法實現
- 在Windows 10上創建并運行AMD Vitis?視覺庫示例 434次閱讀
- 一個微型的粒子加速器 648次閱讀
- 通過SHA-256主/從身份驗證系統實現更高的安全性 978次閱讀
- 使用AXI CDMA制作FPGA AI加速器通道 1616次閱讀
- 理解Vitis HLS默認行為 1636次閱讀
- Vitis HLS知識庫總結 3242次閱讀
- Vitis HLS如何添加HLS導出的.xo文件 2935次閱讀
- 使用AXI4-Lite將Vitis HLS創建的IP連接到PS 736次閱讀
- Vitis初探—1.將設計從SDSoC/Vivado HLS遷移到Vitis上的教程 3614次閱讀
- 如何在Vitis HLS中使用C語言代碼創建AXI4-Lite接口 1580次閱讀
- Vitis HLS工具簡介及設計流程 2206次閱讀
- 如何在Vitis HLS中使用C語言代碼創建AXI4-Lite接口 6248次閱讀
- XIlinx利用HLS進行加速設計進度 6541次閱讀
- Hash算法簡介 4932次閱讀
- 基于SHA-256安全認證工作原理的最新安全認證解決方案 5255次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 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開發指南
- 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數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 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次下載 | 免費
評論
查看更多