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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

6、一個(gè)由模塊和子模塊組成的系統(tǒng)意味著需要用一個(gè)頂層函數(shù)來(lái)調(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ù)用法兩個(gè)參數(shù),均屬于“流”(stream)類(lèi)(vivado hls庫(kù)中提供的模塊類(lèi)之一)。流是一種hls建模架構(gòu),代表預(yù)備以流方式交換的數(shù)據(jù)通過(guò)的接口。流可以實(shí)現(xiàn)為fifo隊(duì)列或內(nèi)存,也可以是一種能夠協(xié)作任何c+架構(gòu)用法的模板類(lèi)。在本例中,我們定義了一種稱(chēng)為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能自動(dòng)支持此類(lèi)接口,用法編譯命令(pragma)語(yǔ)句即可完成設(shè)定。編譯命令是對(duì)高層次綜合工具的命令,用于指導(dǎo)工具實(shí)現(xiàn)要求的結(jié)果。例1中第4行和第5行的編譯命令用于告訴vivado hls這兩個(gè)命令(詳細(xì)是頂層模塊的輸入和輸出端口)將用法axi4-stream接口。axi4-stream i/f包含兩個(gè)必備信號(hào),分離是有效信號(hào)和就緒信號(hào),但它們沒(méi)有包含在聲明的數(shù)據(jù)結(jié)構(gòu)中。這是因?yàn)関ivado h

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

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論