榨干FPGA片上存儲資源_第1頁
榨干FPGA片上存儲資源_第2頁
榨干FPGA片上存儲資源_第3頁
榨干FPGA片上存儲資源_第4頁
榨干FPGA片上存儲資源_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、標(biāo)簽: 無標(biāo)簽榨干FPGA片上存儲資源榨干FPGA片上存儲資源         記得Long long time ago,特權(quán)同學(xué)寫過一篇簡短的博文M4K使用率,文章中提到了Cyclone器件的內(nèi)嵌存儲塊M4K的配置問題。文中提到了這個M4K塊除了存儲大小是有限的4Kbit,它的可配置的Port數(shù)量也是有限的,通常為最大36個可用port。當(dāng)時只是簡單的提到有這么回事,提醒使用者注意,也沒有具體的談到如何解決或者確切的說應(yīng)該是避免這樣的狀況出現(xiàn)。因此,本文將結(jié)合特權(quán)同學(xué)近期在使用FPGA時,配置片內(nèi)存儲器遇到的一些

2、片內(nèi)資源無法得到充分利用的問題,更深入的探討如何在既有的基礎(chǔ)上優(yōu)化我們的配置,也就是標(biāo)題所言,我們的目標(biāo)是“榨干FPGA的片上存儲資源”。關(guān)于如何在綜合或布局布線后查看FPGA的片上存儲資源的使用情況,就Quartus II軟件,這里要先教大家?guī)渍?,讓大家在系統(tǒng)設(shè)計完后對自己的存儲資源情況做到明明白白、心中有數(shù),這對將來的產(chǎn)品維護、升級乃至完全推到重來都是有助益的。很好,想必您已經(jīng)等不及了,那么就ReadyàGo!在一個工程完全編譯后,Quartus II會彈出一個全新的Compilation Report,首先映入設(shè)計者眼簾的是Flow Summary頁面。當(dāng)然設(shè)計者也可以如圖1所

3、示,直接找到菜單欄點擊ProcessingàCompilation Report選項查看。圖1         再看Flow Summary頁面,如圖2所示,其他選項這里不說了,就看Total memory bits后圈出來的部分:103,264/165,888(62%)。這里意思也很明白,特權(quán)使用的器件EP2C8Q208C8的片內(nèi)存儲器總大小是165,888bit,而在該工程中使用了103,264bit,使用率是62%。圖2      

4、0;  OK,那么我們再來看看詳細(xì)的存儲資源都用在哪里了。如圖3所示,點開編譯報告的Analysis&SynthesisàRAM Summary。圖3         同時在頁面右側(cè)就彈出如圖4所示的詳細(xì)的存儲資源分配情況。在這個頁面的報告中,我們只能簡單的看到存儲資源的詳細(xì)使用位置、存儲資源類型(即是使用了專用的片內(nèi)存儲資源還是用邏輯資源構(gòu)造的,顯然用邏輯資源是很浪費甚至說不現(xiàn)實的)、存儲器類型(即RAM/ROM/FIFO等)、存儲器的位寬和深度信息以及存儲量大小,還有就是是否有初始化

5、文件映射。圖4因為是綜合報告的一部分,所以不針對特定的器件給出一些信息,如這里我們可能還會關(guān)心文章開頭就提到的M4K塊使用數(shù)量甚至是我們所例化的存儲器具體都使用了哪些M4K塊。不用擔(dān)心,咱的這點好奇心開發(fā)商還是能夠滿足的。下面我們就接著打開編譯報告里的FitteràResource SectionàRAM Summary選項(方法同圖3)。我們可以看到如圖5所示的,哦,很抱歉由于頁寬有限,所以name一欄沒有完全顯示,Location一欄也只是“小荷才露尖尖角”,但是不要緊,只要你領(lǐng)會精神。先說這個Location一欄,它就是前面提到設(shè)計者可能關(guān)心的具體的M4K塊都是哪些,

6、而M4Ks一欄就是使用的M4K塊的數(shù)量,其他選項類同,讀者可以自己分析??吹竭@些,估計已經(jīng)是一目了然了,設(shè)計者對自己例化的每一個片內(nèi)存儲器的具體的使用情況都應(yīng)該有所了解。圖5但是,估計細(xì)心的讀者會問,我知道了我所例化的每個存儲器的M4K塊使用數(shù)量,那么我怎么知道是否超出了器件所有的數(shù)量,難道非要等到編譯出error才行嗎?或者自己在這個頁面掐指算算再找來handbook比對一下嗎?非也,其實用戶只要點開FitteràResource SectionàResource Usage Summary,如圖6所示,里面羅列了非常詳細(xì)的FPGA所有片上資源的使用情況,圈出來的部分也是

7、這里我們需要重點關(guān)注的地方。M4Ks里指明器件的36個M4K塊使用了26個,占用率72%;而Total block memory bits和前面綜合報告里是一樣的,嚴(yán)格的說,這個數(shù)據(jù)應(yīng)該算是片內(nèi)存儲資源的絕對使用情況;最后說Total block memory implementation bits選項,它是最終實現(xiàn)到FPGA器件上的片上資源占用情況(注意這里只能是占用而非使用,漢語文字真是博大精深,也許有些時候兩個詞怎么用都差不多,但是這里特權(quán)同學(xué)想?yún)^(qū)分這個概念,所以刻意要提醒大家注意,因為,它還涉及本文的主題,哈哈,不好意思,有點班門弄斧了),它的占用率和M4Ks是一致的,并且必須是一致的

8、。圖6         那么好,“工欲善其事,必先利其器”,我們利完器,就來說正事。特權(quán)同學(xué)提出一個概念,就是FPGA片上資源的利用率,他的公式為:(Total block memory bits/Total block memory implementation bits),對于該設(shè)計就是(62% / 72%) = 86.11%,應(yīng)該說是個不錯的數(shù)據(jù)(呵呵,悄悄的告訴你,這個實例可是被特權(quán)同學(xué)優(yōu)化過了)。         說完這些概念

9、,我們可以真刀真槍的玩一玩了,理論永遠(yuǎn)只是理論,要提高必須靠實踐。其實可以把這個工程打回原形,退回優(yōu)化前的情況。由于篇幅關(guān)系,這里只討論它優(yōu)化過程中的一個最顯著的例子。         在這個工程中,有一連串的8bit數(shù)據(jù)流,第1個數(shù)據(jù)要和第1280個數(shù)據(jù)做一些處理。因此,最簡單的想法就是例化一個1280*8bit的移位寄存器。并且這個移位寄存器在第一個移入的數(shù)據(jù)移出時,要和此時要正要移入的數(shù)據(jù)做一些處理。但是,在配置移位寄存器的時候遇到了一些麻煩,如圖8所示,移位寄存器的深度一般是用配置的taps數(shù)量乘以dist

10、ance值(建議對移位寄存器配置的相關(guān)知識還不熟悉的朋友參考特權(quán)同學(xué)的另一篇博文Cyclone M4K移位寄存器使用)。而這里distance值最大只能配置為256,需要1280個寄存器,并且只用一個taps的想法破滅了,于是思考了下:發(fā)現(xiàn)256*5/128*10/64*20都是可行的辦法。圖7         剛開始配置的時候沒有太多考慮,就選擇了64*20的方案,即配置taps = 24(因為taps值只能為可選的1/2/3/4/5/6/7/8/12/16/24/32/48/64/96/128,這里配置為24個

11、taps,而使用的時候取taps輸出的bit159-152,實際綜合的時候其實會把4個不用的taps優(yōu)化掉),distance = 64。如圖8所示。如果你夠細(xì)心,你應(yīng)該發(fā)現(xiàn)了左下角的Resource Usage是6 M4K。圖8         然后就著這樣的配置,在編譯后可以使用前面提到的方法查看一下存儲器資源的使用情況。因為我們重點要算FPGA片上資源的利用率,所以還是查看FitteràResource SectionàResource Usage Summary這個報告吧。如圖9所示,這

12、個報告中的Total block memory bits和之前沒有變,都是62%,而M4Ks占用多了2個,相應(yīng)的M4Ks占用率和Total block memory implementation bits占用率增加到了78%。計算一下,(62% / 78%) = 79.5%,下降了近7個百分點。也許這個參數(shù)說明不了問題,但是在資源緊張的時候,這個問題就是最撓人的問題。圖9         再提特權(quán)同學(xué)發(fā)現(xiàn)問題后,如何處置優(yōu)化提高了這里的利用率(實際上,如果真用EP2C8Q完成這個工程,也不是非得做這個優(yōu)化的工作,只

13、不過最終的設(shè)計是要實現(xiàn)在向下兼容的EP2C5Q上,所以,就誕生了這篇文章的故事)?很簡單,前面其實都已經(jīng)給了大家暗示,移位寄存器的存儲資源利用率不高不是因為本身存儲量大(只有1280*8bit=10Kbit,需要3個M4K足夠),而是因為生成的taps占用的port過多,前面配置24個taps就占用了6個M4K塊,那么如果配置成12個taps,distance值為128會怎樣呢?6個taps,distance值為256會怎樣呢?答案馬上揭曉,如圖10所示。其實兩者都是占用了3個M4K。這里做的變化就是最終優(yōu)化成功的玄機。圖10     

14、0;   如圖11所示,其實這個工程最終實現(xiàn)到EP2C5Q上是沒有問題的,但是如果沒有類似移位寄存器例子中的一些優(yōu)化,存儲器資源還是很緊張的。圖11         說到這里,雖然已經(jīng)洋洋灑灑圖文并茂好長一篇文章了。但是,還是很想再提一些和FPGA片上存儲資源相關(guān)的問題。關(guān)于Cyclone/Cyclone II的M4K到Cyclone III的M9K,可能還有一些M512,將來不知道會不會有什么M32K/M128K/M1M云云的概念出來。但是就特權(quán)同學(xué)對目前器件使用的一點經(jīng)驗上來看,這個MXX的塊存儲量越大,雖然總的存儲量也會越來越大(不能否定它能夠滿足片內(nèi)大存儲量應(yīng)用的需求),但是相應(yīng)的在工程需要的很多小存儲應(yīng)用中對存儲塊的利用率也會越來越低。因為,對于用戶例化的任何一個存儲器,如果使用M4K塊實現(xiàn)一個8bit的512B/256B/128B/64B甚至哪怕只有1B的應(yīng)用,其實他們都需要占用1個M4K塊。打一個更形象更極端的例子,我的設(shè)計中需要兩個1*8bit的FIF

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論