Vivado HLS推動協(xié)議處理系統(tǒng)蓬勃發(fā)展(上)_第1頁
免費預(yù)覽已結(jié)束,剩余4頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、vivado hls推動協(xié)議處理系統(tǒng)蓬勃發(fā)展(上) 1 提高抽象層次 vivado hls能提高系統(tǒng)設(shè)計的抽象層次,為設(shè)計人員帶來切實的協(xié)助。vivado hls通過下面兩種辦法提高抽象層次: 用法c/c+作為編程語言,充分利用該語言中提供的高級結(jié)構(gòu); 提供更多數(shù)據(jù)原語,便于設(shè)計人員用法基礎(chǔ)硬件構(gòu)建塊(位向量、隊列等)。與用法rtl相比,這兩大特性有助于設(shè)計人員用法vivado hls更輕松地解決頻繁的協(xié)議系統(tǒng)設(shè)計難題。終于簡化系統(tǒng)匯編,簡化fifo和存儲器拜訪,實現(xiàn)控制流程的抽象。hls的另一大優(yōu)勢是便于架構(gòu)討論和。vivado hls把c+函數(shù)視為模塊,函數(shù)定義等效于模塊的rtl描述,函數(shù)

2、調(diào)用等效于模塊實例化。這種辦法能削減需要用戶編寫的代碼量,進而顯著簡化用于系統(tǒng)描述的結(jié)構(gòu)代碼,終于加速系統(tǒng)匯編進程。在vivado hls中,存儲器或fifo可通過兩種辦法拜訪。一種是通過合適的對象(比如對流對象的讀寫)。另一種是挺直拜訪綜合工具隨后將實現(xiàn)為block ram或分布式ram的標準c陣列。綜合工具會按照需要處理額外的信令、同步或?qū)ぶ穯栴}。從控制流的角度,vivado hls從容易的fifo接口到完整的axi4-stream均可提供整套流控制感知接口。用法這些接口,設(shè)計人員可挺直拜訪數(shù)據(jù),無需檢查背壓或數(shù)據(jù)可用性。vivado hls會適當?shù)卣{(diào)度執(zhí)行,應(yīng)對一切緊張狀況,同時確保正確

3、完成執(zhí)行。設(shè)計人員還會感激vivado hls提供的另一項功能,即簡便的架構(gòu)討論功能。用戶只需在代碼中插入程序命令(如用法gui或批處理模式時的tcl指令),就可以把設(shè)計所需特性傳遞給綜合工具。這樣用戶可以在不修改設(shè)計代碼本身的狀況下討論大量備選架構(gòu)計劃。討論的范圍可以是模塊流水線化等根本性問題,也可以是fifo隊列深度等較頻繁的問題。最后,c和rtl仿真是vivado hls另一個大放異彩的地方。設(shè)計普通采納兩步流程驗證:第一步是仿真。這個步驟中c/c+的編譯和執(zhí)行與頻繁的c/c+程序相同;其次步是c/rtl協(xié)仿真。在這步驟中,vivado hls會按照c/c+測試平臺自動生成rtl測試平臺

4、,然后設(shè)置并執(zhí)行rtl仿真,檢查實現(xiàn)計劃8的正確性。如能充分發(fā)揮這些優(yōu)勢,這將對于用戶的系統(tǒng)設(shè)計大有裨益。這不僅體現(xiàn)在開發(fā)時光和生產(chǎn)力上,還因為vivado hls代碼越發(fā)緊湊的特點,體現(xiàn)在代碼可維護性和可讀性上。此外通過高層次綜合,用戶仍能有效控制架構(gòu)及其特性。正確理解和用法vivado hls程序?qū)崿F(xiàn)這一控制起著根本作用。高層次綜合在提供的包處理解決計劃的層級結(jié)構(gòu)中起著承上啟下、承前啟后的作用。而vivado sdnet和rtl則對其起到補充作用。vivado sdnet用法特定領(lǐng)域語言,提供一種大為簡便但相當受限的協(xié)議處理系統(tǒng)表達辦法。rtl則可以用于vivado hls無法表達的大量

5、系統(tǒng)的實現(xiàn)工作(例如用法dcm或差分信號并需要具體時鐘管理的各類系統(tǒng))。雖然有種種局限,vivado hls仍然是在保證結(jié)果質(zhì)量或設(shè)計人員靈便性的前提下設(shè)計大部分協(xié)議處理解決計劃的有效途徑。2 設(shè)置容易系統(tǒng)開頭新設(shè)計時需要完成的最基本工作首先是確定設(shè)計的結(jié)構(gòu),然后將其實現(xiàn)在vivado hls中。vivado hls中的基本系統(tǒng)構(gòu)建塊是c/c+函數(shù)。構(gòu)建一個由模塊和子模塊組成的系統(tǒng)意味著需要用一個頂層函數(shù)來調(diào)用底層函數(shù)。圖1所示的是一個極為容易的三級流水線,我們以此為例來介紹vivado hls中系統(tǒng)構(gòu)建的基本思路。普通采納流水線化設(shè)計執(zhí)行協(xié)議處理,由每一級負責(zé)解決處理的特定部分。1所示。構(gòu)建

6、一個由模塊和子模塊組成的系統(tǒng)意味著需要用一個頂層函數(shù)來調(diào)用底層函數(shù)。例1:在vivado hls中創(chuàng)建容易系統(tǒng)1 void toplevelmodule(stream&indata,stream&outdata) 2 pragma hls dataflow interval=134 pragma interface axis port=indata5 pragma interface axis port=outdata67 static stream modone2modtwo;8 static stream modtwo2modthree;910 moduleone(indata, modo

7、ne2modtwo);11 moduletwo(modone2modtwo, modtwo2modthree);12 modulethree(modtwo2modthree, outdata);13 例1中的代碼用于創(chuàng)建頂層模塊函數(shù),供調(diào)用全部其它子函數(shù)用法。頂層模塊函數(shù)用法兩個參數(shù),均屬于“流”(stream)類(vivado hls庫中提供的模塊類之一)。流是一種hls建模架構(gòu),代表預(yù)備以流方式交換的數(shù)據(jù)通過的接口。流可以實現(xiàn)為fifo隊列或內(nèi)存,也可以是一種能夠協(xié)作任何c+架構(gòu)用法的模板類。在本例中,我們定義了一種稱為axiword的數(shù)據(jù)結(jié)構(gòu)(struct),如例2所示。例2:定義流接口

8、用法的c+ 結(jié)構(gòu)struct axiword ap_uint data;ap_uint strb;ap_uint last;該struct用于定義axi4-stream接口的部分字段。vivado hls能自動支持此類接口,用法編譯命令(pragma)語句即可完成設(shè)定。編譯命令是對高層次綜合工具的命令,用于指導(dǎo)工具實現(xiàn)要求的結(jié)果。例1中第4行和第5行的編譯命令用于告訴vivado hls這兩個命令(詳細是頂層模塊的輸入和輸出端口)將用法axi4-stream接口。axi4-stream i/f包含兩個必備信號,分離是有效信號和就緒信號,但它們沒有包含在聲明的數(shù)據(jù)結(jié)構(gòu)中。這是因為vivado h

9、ls ax4 i/f會在內(nèi)部處理這些信號,也就是說它們對用戶規(guī)律而言是透亮的。如前文所述,在用法axi4-stream i/f時,從用戶處抽象流控制徹低由vivado hls完成。固然未必一定用法axi4-stream接口。vivado hls提供有豐盛的接口。這里挑選axi4-stream作為常見標準接口的示例,供用戶舉行包處理。實現(xiàn)我們的設(shè)計的下一項工作是確保我們的三個模塊彼此互聯(lián)。這項工作也通過流完成,不過這次它們是位于頂層模塊的內(nèi)部。第7行和第8行用于聲明實現(xiàn)這一目標的兩個流。這兩個流用法了另一種vivado hls結(jié)構(gòu)ap_uint。這是一種無符號一維位陣列,隨后將按此對其操作。同時

10、這也是又一種模板類,因此必需設(shè)定這個陣列的寬度。在本例中用法64位,與頂層模塊輸入輸出i/f的數(shù)據(jù)成員寬帶匹配。還有一點需要具體解釋的是這些流所有聲明為靜態(tài)變量。靜態(tài)變量是指其值不隨函數(shù)調(diào)用變幻的一種變量。因為在作為挨次c/c+程序執(zhí)行時頂層模塊(以及所有的子模塊)每個時鐘周期會被調(diào)用一次,所以任何需要保持其值不隨時鐘周期變幻的變量都需要聲明為靜態(tài)變量。3 創(chuàng)建流水線設(shè)計將要研究的最后也是最重要的一個是編譯命令。第2行中的數(shù)據(jù)流編譯命令指示vivado hls盡量以并行方式支配執(zhí)行該函數(shù)的全部子函數(shù)?!癷nternal”參數(shù)用于設(shè)置該模塊的初始化間隔(ii)。初始化間隔(ii)告訴vivado hls該模塊必需具備的處理新輸入數(shù)據(jù)字的頻次,故打算了設(shè)計的吞吐量。不過這并不阻礙模塊內(nèi)部的流水線化和擁有1的時延。當ii=2時,該模塊將用兩個周期完成數(shù)據(jù)字的處理,然后再讀入新的數(shù)據(jù)字。以這種方式vivado hls可以簡化模塊終于的rtl。也就是說,在一個典型的協(xié)議處理應(yīng)用中,設(shè)計必需具備每個時鐘周期處理一個數(shù)據(jù)字的能力,故從現(xiàn)在起我們令ii=1。初始化間隔(ii)告訴vivado hls該模塊必需具備的處理新輸入數(shù)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論