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