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