眾所周知 Hackaday.com 網站上聚集著眾多極客(Geeker),他們打破傳統,標新立異,敢于嘗試新的東西,今天這篇文章搜集了這些極客對Xilinx Vivado HLS工具使用經驗和心得。
Xilinx Vivado HLS是一個高級綜合工具,能夠將 C 語言轉換成硬件描述語言(HDL),也就是說我們可以用 C 語言來實現 HDL 模塊編程了。
圖1 Vivado HLS工作流程
第一位 Hacker是來自新西蘭的 Mike Field,他是一個硬件Hacker,還建立了自己的網站( www.hamsterworks.com ),他詳細總結了Vivado HLS的使用步驟,他認為這個很有趣,值得每個人去嘗試,Vivado HLS是一個IDE開發環境,開發人員編寫C工程代碼,測試代碼,然后利用HLS轉換為HDL硬件語言邏輯。
圖2 Xilinx贈送給Mike Field的MicroZed開發套件
Tips技巧 作者總結如下:
1. HLS工具會將C語言代碼轉換成偽機器代碼,都可以用FPGA邏輯(乘,加,遞增等)來實現。
2. 循環操作代碼分析,主要是根據語法。不能夠被充分執行的循環會導致吞吐量的瓶頸,如果一個復雜的乘運算要花費30個周期,并且你要執行256次那么延遲時間就會介于30和7680周期之間。然而如果你使用原語指令(#pragma HLS_PIPELINE)將其展開256次,那么實現方式就會變成7680級流水線,每個循環還可以接受新的數據。
3. 函數調用可能會引起分離的邏輯實例,支持子函數的創建,也可能引起一系列仲裁接口用于訪問單個函數邏輯實例。
4. 對于這些偽機器代碼如何連接會生成一個計劃時間表,并且會充分考慮到期望的性能約束條件(時鐘速度等)。
5. 然后代碼生成器會將偽機器代碼映射為HDL邏輯邏輯代碼(Verilog或VHDL),使用簡單的流水線接口來處理參數和和、返回值。其實你還可以添加其它語法或者數據類型來構造AXI協議接口的模塊。
6. 最后你就可以將轉換后的代碼或者IP核添加到傳統的HDL工程中。
看起來很簡單,其實最重要的是最后我們要進行代碼優化,排除bug。我們可以定制很多數據類型(n位的整數,或者固定精度的整數等),靈活的使用這些數據類型,可以幫助我們精簡邏輯代碼,提升系統設計性能。
第二位 Hacker是 Darren,他直接錄制了一個說明視頻。介紹了如何利用Vivado HLS生成FIR濾波算法的HDL代碼,并將代碼添加到ISE工程中,經過綜合實現布局布線等操作后生成FPGA配置文件,下載到FPGA開發板中,Darren采用的目標板卡是Spartan-3 FPGA。
圖3 基于Vivado HLS生成FIR濾波算法
-
賽靈思
+關注
關注
32文章
1794瀏覽量
131506 -
C++
+關注
關注
22文章
2114瀏覽量
73856 -
極客
+關注
關注
0文章
12瀏覽量
8021
發布評論請先 登錄
相關推薦
評論