




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
賽靈思高層次綜合工具加速FPGA設(shè)計382頂作者:Sharad Sinha博士生新加坡南洋理工大學(xué)sharad_.sgVivado HLS配合C語言等高級語言能幫助您在FPGA上快速實現(xiàn)算法。高層次綜合(HLS)是指自動綜合最初用C、C+或SystemC語言描述的數(shù)字設(shè)計。工程師之所以對高層次綜合如此感興趣,不僅是因為它能讓工程師在較高的抽象層面上工作,而且還因為它能方便地生成多種設(shè)計解決方案。利用HLS,您能探索各種可能性,分析面積和性能特點,最終確定一個方案在FPGA芯片上實現(xiàn)算法。舉例來說,您能探索將存儲器映射到Block RAM(BRAM)或分布式RAM上有什么不同的影響,或者分析回路展開以及其它回路相關(guān)優(yōu)化有什么效果,而且不必手動生成不同的寄存器傳輸級(RTL)設(shè)計。您所要做的僅僅是在C/C+/SystemC設(shè)計中設(shè)置相關(guān)指令而已。賽靈思在其最新發(fā)布的Vivado工具套件中推出了HLS工具。Vivado HLS是AutoESL工具的品牌轉(zhuǎn)型重塑,可提供眾多技術(shù)幫助您優(yōu)化C/C+/SystemC代碼以實現(xiàn)目標(biāo)性能。這樣的HLS工具就能幫助您在FPGA上快速實現(xiàn)算法,無需借助基于Verilog和VHDL等硬件描述語言的非常耗時的RTL設(shè)計方法。為了幫助用戶了解Vivado HLS如何工作,我們不妨以矩陣乘法設(shè)計為例逐步剖析從設(shè)計描述(C/C+/SystemC)到FPGA實現(xiàn)整個端對端綜合流程。矩陣乘法在許多應(yīng)用中都很常見,并廣泛用于圖像和視頻處理、科學(xué)計算和數(shù)字通信。本項目中的所有結(jié)果均使用Vivado HLS 2012.4生成,搭配使用賽靈思 ISE軟件(14.4版)進(jìn)行物理綜合和布局布線。此外,這一流程還采用了ModelSim和GCC-4.2.1-mingw32vc9進(jìn)行RTL協(xié)同仿真。圖1顯示了簡單的綜合流程,從C/C+/SystemC設(shè)計開始。C/C+/SystemC testbench用于驗證設(shè)計功能的正確性,同時還可用于RTL和C的協(xié)同仿真。協(xié)同仿真包括驗證生成的RTL設(shè)計(.v或.vhd)功能,這要使用C/C+/SystemC測試平臺而不是RTL測試平臺或者采用e或Vera驗證語言編寫的測試平臺。時鐘周期約束設(shè)置了設(shè)計應(yīng)該運行的目標(biāo)時鐘周期。設(shè)計將被映射到目標(biāo)FPGA器件賽靈思FPGA上。C語言的矩陣乘法為了充分利用我們的矩陣乘法實例,我們將探索矩陣乘法C語言實現(xiàn)方案的各種修訂版本,從而展示它們對綜合設(shè)計的影響。這一過程將凸顯您在使用HLS進(jìn)行原型設(shè)計和實際設(shè)計時需要注意的重要問題。我們將跳過創(chuàng)建工程的有關(guān)步驟,因為您能很方便地在工具文檔中找到相關(guān)參考材料。我們將重點介紹設(shè)計和實現(xiàn)等方面。在典型的Vivado HLS流程中,我們需要三個C/C+文件:源文件(包括待綜合的C函數(shù))、頭文件和通過main()函數(shù)調(diào)用描述testbench的文件。頭文件不僅包括源文件中使用的函數(shù)的聲明,也包括支持具有特定位寬的用戶定義數(shù)據(jù)類型的指令。這也使得設(shè)計人員能夠采用與C/C+所定義標(biāo)準(zhǔn)位寬不同的位寬。舉例來說,整形數(shù)據(jù)類型(int)在C語言中通常為32位長,但是在Vivado HLS中您可指定用戶定義的數(shù)據(jù)類型,例如只使用16位的“data”。圖2顯示了用于矩陣乘法的簡單C函數(shù)。兩個矩陣mat1和mat2進(jìn)行乘法。為了簡單起見,兩個矩陣大小一樣,都是兩行兩列。在HLS流程中執(zhí)行的步驟如下: 第一步:創(chuàng)建工程 第二步:測試功能 第三步:綜合 第四步:RTL協(xié)同仿真 第五步:導(dǎo)出RTL / RTL實現(xiàn)第一步編譯工程并在不同的設(shè)計文件中測試語法錯誤等。第二步測試待實現(xiàn)的函數(shù)(在源文件中)功能是否正確。在這一步驟中您將使用testbench執(zhí)行函數(shù)調(diào)用,驗證其功能是否正確。如果功能驗證失敗,您就需要返回來修改設(shè)計文件。第三步進(jìn)行綜合,Vivado HLS綜合源文件中定義的函數(shù)。這一步的輸出包括C函數(shù)的Verilog和VHDL代碼(RTL設(shè)計),也包括目標(biāo)FPGA的資源利用率估算和時鐘周期估算。此外,Vivado HLS還可生成latency估算和回路相關(guān)的度量指標(biāo)等。第四步是使用C testbench仿真生成的RTL。這一步叫做RTL協(xié)同仿真,因為工具采用的就是之前用于驗證C源代碼的testbench,現(xiàn)在則測試RTL的功能正確性。要成功完成這一步,您系統(tǒng)(Windows或Linux)中的PATH環(huán)境變量應(yīng)包含ModelSim安裝的路徑。此外,您還應(yīng)在ModelSim安裝文件夾中包含GCC-4.2.1-mingw32vc9套件。最后,第五步就要將RTL導(dǎo)出為IP模塊,用于更大的設(shè)計中,并由其它賽靈思工具進(jìn)行處理。您可將RTL導(dǎo)出為IP-XACT格式的IP模塊,也可導(dǎo)出為System Generator IP模塊或pcore格式的IP模塊,進(jìn)而用于賽靈思嵌入式設(shè)計套件。導(dǎo)出Vivado生成的RTL時,您可以選擇工具的“評估”選項來評估布局布線后的性能并且運行RTL實現(xiàn)。在此情況下, Vivado HLS工具會調(diào)用賽靈思ISE工具。要實現(xiàn)這一目的,您的系統(tǒng)PATH環(huán)境變量需包括ISE安裝路徑,Vivado HLS將會搜索ISE安裝。當(dāng)然,您也不一定非要將Vivado生成的RTL導(dǎo)出為以上三種格式之一的IP模塊不可。導(dǎo)出的格式文件可放在三個不同路徑下:/impl/或project_directory/impl/或/impl/。此外,您也可在較大設(shè)計中使用Vivado生成的RTL,或者將其本身用作頂層設(shè)計。當(dāng)較大設(shè)計中例化導(dǎo)出的RTL時,您應(yīng)注意相關(guān)接口要求。當(dāng)綜合圖2中的C函數(shù)時,您將獲得如圖3所示的RTL級實現(xiàn)方案。您會發(fā)現(xiàn),實現(xiàn)方案中的矩陣1和矩陣2的元素被讀取到函數(shù),并且積矩陣的元素被寫出。這樣,實現(xiàn)方案假定“矩陣乘法”實體以外的存儲器能用來存儲矩陣1、矩陣2和乘積矩陣的元素。表1介紹了信號描述,表2則介紹了設(shè)計度量指標(biāo)。表2:用于圖3所示設(shè)計的設(shè)計度量指標(biāo)設(shè)計度量指標(biāo)器件:XC6VCX75TFF784-2DSP48E1查找表44觸發(fā)器61實現(xiàn)的最佳時鐘周期(ns)2.856時延69吞吐量(初始間隔)69表1:面向圖3中設(shè)計的信號描述信號描述matleft_ce0矩陣1存儲器的芯片使能matleft_q015:0矩陣1的16位元素matleft_address1:0矩陣1存儲器的讀地址matright_ce0矩陣2存儲器的芯片使能matright_q015:0矩陣2的16位元素matright_address1:0矩陣2存儲器的讀地址product_ce0積矩陣的存儲器的芯片使能product_we0積矩陣的存儲器的寫使能product_d015:0積矩陣存儲器的寫數(shù)據(jù)product_q015:0積矩陣存儲器的讀數(shù)據(jù)product_address01:0積矩陣要讀寫數(shù)據(jù)的地址ap_clk設(shè)計的時鐘信號ap_rst設(shè)計的高有效同步復(fù)位信號ap_start開始計算的開始信號ap_done計算結(jié)束和輸出就緒的完成信號ap_idle表示實體(設(shè)計)空閑的空閑信號ap_ready表示設(shè)計為新輸入數(shù)據(jù)做好準(zhǔn)備,與ap_idle配合使用在表1中,start、done和idle信號與設(shè)計中控制數(shù)據(jù)路徑的有限狀態(tài)機(jī)(FSM)有關(guān)。您會發(fā)現(xiàn),Vivado HLS生成的Verilog假定運算始于start信號,并且輸出數(shù)據(jù)在ap_done信號從低變高開始有效。Vivado HLS生成的Verilog/VHDL將始終保持至少三個基本信號:ap_start、ap_done和ap_idle,此外還有ap_clk信號。這意味著不管您使用Vivado HLS實現(xiàn)什么設(shè)計,設(shè)計latency都會限制您的流吞吐量。圖2中的設(shè)計latency為69個時鐘周期,目標(biāo)時鐘周期為3納秒。這意味著在此特定案例中,所有積矩陣元素需要69個時鐘周期可輸出。這樣,您在至少69個時鐘周期前不能為設(shè)計提供新一組的輸入矩陣。圖3中所示的實現(xiàn)方案現(xiàn)在可能并不是您在FPGA上實現(xiàn)矩陣乘法時所預(yù)想的結(jié)果。您或許希望一款實現(xiàn)方案能讓您輸入矩陣,并在內(nèi)部進(jìn)行存儲和計算,隨后讀取積矩陣元素。這顯然是圖2所示實現(xiàn)方案無法做到的。該實現(xiàn)方案需要外部存儲器提供矩陣數(shù)據(jù)的輸入和輸出。調(diào)整代碼圖4中的代碼能夠滿足您的需求,它是源文件的一部分,應(yīng)該屬于C+文件而非此前的C文件。您應(yīng)在頭文件matrixmultiply.h中包含另外兩個相關(guān)頭文件:hls_stream.h和ap_int.h。請注意,在圖2中,當(dāng)源文件為C文件時,頭文件包含了ap_cint.h。頭文件ap_int.h和ap_cint.h有助于分別為C+和C源文件定義用戶定義的任意位寬的數(shù)據(jù)類型。需要頭文件hls_stream.h來充分利用流接口,并且只有在源文件為C+語言時才能使用。圖4:用于矩陣乘法的重組源代碼為了讓設(shè)計只接收輸入矩陣流,并輸出積矩陣流,您應(yīng)在代碼中實現(xiàn)讀和寫數(shù)據(jù)流。流接口就像FIFO。默認(rèn)情況下這個FIFO的深度為1。表3 - 圖5中設(shè)計的信號描述信號描述d_mat1_V_read設(shè)計為矩陣1(左側(cè)矩陣)輸入做好準(zhǔn)備時的信號d_mat1_V_dout 15:0矩陣1的16位流元素d_mat1_V_empty通知設(shè)計矩陣1沒有更多元素的信號d_mat2_V_read設(shè)計為矩陣2(右側(cè)矩陣)輸入做好準(zhǔn)備時的信號d_mat2_V_dout 15:0矩陣2的16位流元素d_mat2_V_empty通知設(shè)計矩陣2沒有更多元素的信號d_product_V_din 15:0積矩陣的16位輸出元素d_product_V_full_n通知設(shè)計積矩陣應(yīng)該被寫入的信號d_product_V_write顯示積矩陣正在被寫入數(shù)據(jù)的信號ap_clk設(shè)計的時鐘信號ap_rst設(shè)計的高有效同步復(fù)位信號ap_start開始計算的開始信號ap_done計算結(jié)束和準(zhǔn)備好信號輸出的完成信號ap_idle表明實體(設(shè)計)空閑的空閑信號ap_ready表示設(shè)計為新輸入數(shù)據(jù)做好準(zhǔn)備,與ap_idle配合使用表4:圖5所示設(shè)計的設(shè)計度量指標(biāo)器件:XC6VCX75TFF784-2設(shè)計參數(shù)無BRAM或無分布式RAM存儲矩陣單端口BRAM存儲矩陣分布式RAM(LUT實現(xiàn))存儲矩陣DSP48E111查詢表185109179觸發(fā)器331102190BRAM030實現(xiàn)的最佳時鐘周期(納秒)2.8863.2162.952時延84116104吞吐量(初始間隔)84116104為了讓設(shè)計只接受輸入矩陣流,并輸出積矩陣流,您應(yīng)在代碼中實現(xiàn)讀和寫數(shù)據(jù)流。代碼hls:stream stream_name用于為讀和寫數(shù)據(jù)流命名。這樣,d_mat1和d_mat2為讀取流而d_product為寫入流。流接口就像FIFO那樣工作。默認(rèn)情況下,F(xiàn)IFO的深度為1。您應(yīng)在Vivado HLS指令面板中通過選擇定義的數(shù)據(jù)流設(shè)置深度。對于圖4中的代碼而言,每個數(shù)據(jù)流的深度都為4個數(shù)據(jù)單元。請注意,這里的(i,j)回路在(p,q)回路之前執(zhí)行,這是C+代碼的順序特性使然。因此,d_mat2數(shù)據(jù)流會在d_mat1數(shù)據(jù)流之后填滿。完成數(shù)據(jù)流接口后,您可應(yīng)用指令RESOURCE并通過指令面板選擇一個核,從而選擇將矩陣映射到BRAM。否則將用觸發(fā)器和查找表(LUT)實現(xiàn)矩陣。請注意,指令面板只有當(dāng)源文件在綜合視圖中保持有效時才是有效的。圖5顯示了圖4中代碼的設(shè)計實現(xiàn)情況。表3介紹了設(shè)計接口上可用的信號情況。在表3中,d_product_V_full_n是低有效信號,當(dāng)需要通知內(nèi)核積矩陣已滿時該信號為低。但在實現(xiàn)方案中通常不需要這樣。表4顯示了3納秒時鐘周期約束下布局布線后的不同設(shè)計度量指標(biāo),包含了矩陣陣列映射到BRAM或分布式RAM的情況和未映射的情況。您從表4中可以看到,矩陣映射到單端口BRAM時,設(shè)計無法滿足3納秒的時序約束。表中專門包含了這個結(jié)果,說明您可用這種方法生成具有不同面積時序參數(shù)的各種設(shè)計。此外,您也可從表1看出,雖然圖2中代碼的時延為69個時鐘周期,低于圖4中調(diào)整后的代碼的設(shè)計方案,但這種設(shè)計需要矩陣乘法實體以外的存儲器,這一點我們在上面已經(jīng)解釋過了。實現(xiàn)方案的精度就這里顯示的結(jié)果而言,我將“data”這種數(shù)據(jù)類型定義為16位寬。因此,所有矩陣元素(左、右和積矩陣)都為16位寬。矩陣乘法和加法運算不能實現(xiàn)全精度。您可選擇在頭文件中定義另一種32位寬的數(shù)據(jù)類型data_t1,積矩陣的所有元素都采用這種數(shù)據(jù)類型,因為16位數(shù)(左側(cè)矩陣元素)乘以另一個16位數(shù)(右側(cè)矩陣元素)最多得到32位寬。這樣,資源利用率和時序結(jié)果將不同于表1和表4中的結(jié)果。調(diào)整后的源代碼顯示出同樣的源文件會帶來多種不同設(shè)計解決方案。在本例中,一個設(shè)計解決方案采用BRAM,而另一個沒有采用。在每個Vivado HLS工程目錄中,您會看到Vivado HLS為不同的解決方案生成了不同的目錄。在每個解決方案目錄中都有一個名叫impl(也就是implementation,實現(xiàn)方案)的子目錄。在這個子目錄中,您會看到名為Verilog或VHDL的目錄,具體取決于RTL實現(xiàn)階段使用什么樣的源代碼。這個子目錄中也包含賽靈思ISE工程文件(文件擴(kuò)展名為.xise)。如果Vivado H
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)低年級學(xué)生良好生活習(xí)慣養(yǎng)成與學(xué)校心理健康教育創(chuàng)新實踐研究論文
- 中國醫(yī)藥級氧化鎂行業(yè)市場前景預(yù)測及投資價值評估分析報告
- 節(jié)水措施與管理制度
- 關(guān)于房屋貸款保證保險合同糾紛的若干法律問題探討
- 視頻監(jiān)控升級改造設(shè)計方案
- 建筑施工特種作業(yè)-建筑焊工真題庫-7
- 入學(xué)面試常識題目及答案
- 2023-2024學(xué)年陜西省漢中市高二下學(xué)期7月期末數(shù)學(xué)試題(解析版)
- 2024-2025學(xué)年山西省太原市高二上學(xué)期期末考試語文試題(解析版)
- 2025年秋三年級上冊語文同步教案 習(xí)作:寫日記
- 電子物證專業(yè)考試復(fù)習(xí)題庫(含答案)
- 國家開放大學(xué)02150-計算機(jī)網(wǎng)絡(luò)(本)期末復(fù)習(xí)題及參考答案
- 廣西2022年廣西農(nóng)村信用社(農(nóng)村商業(yè)銀行農(nóng)村合作銀行)管理人員及業(yè)務(wù)骨干招聘考試參考題庫含答案詳解
- 國開2023年春《理工英語3》機(jī)考網(wǎng)考期末復(fù)習(xí)資料參考答案
- 2023年考研英語大綱樣題
- 重慶.住宅物業(yè)單位服務(wù)等級標(biāo)準(zhǔn)
- 全國工會財務(wù)知識競賽題庫附答案
- CIE-15-2004-Colorimetry原版完整文件
- 四年級下聰明小屋
- 植物精油提取工藝技術(shù)
- 【企業(yè)薪酬管理研究國內(nèi)外文獻(xiàn)綜述4400字】
評論
0/150
提交評論