<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Floorplanner工具在基于FPGA的嵌入式系統(tǒng)設(shè)計(jì)中的應(yīng)用

          Floorplanner工具在基于FPGA的嵌入式系統(tǒng)設(shè)計(jì)中的應(yīng)用

          作者: 時間:2008-04-29 來源:網(wǎng)絡(luò) 收藏

          通過在可編程邏輯器件中嵌入低成本、高性能的處理器,芯片開發(fā)商不但能提高的整體性能,而且能夠從可編程邏輯器件原本就具備的開發(fā)時間短、上市快的特點(diǎn)受益。利用本文談到的可以對處理器、相關(guān)的IP和定制邏輯進(jìn)行布局控制和分組,簡化復(fù)雜級芯片的開發(fā),提高整體性能。

          處理器內(nèi)核越來越多地在中得到采用,人們開始認(rèn)識到高級可編程邏輯所帶來的好處。通過將低成本高性能的處理器內(nèi)核與可定制的電路配合使用,電子設(shè)備生產(chǎn)商能為其特定的產(chǎn)品量身定制芯片,從而以較低的成本和較快的速度將產(chǎn)品推向市場。但若想合理地采用這項(xiàng)先進(jìn)技術(shù),者需要功能強(qiáng)大的才能滿足要求。 即是適合這類的一種,它允許設(shè)計(jì)者控制嵌入式處理器、相關(guān)IP以及定制邏輯的布局和分組,從而簡化復(fù)雜的系統(tǒng)級芯片的開發(fā)過程,并提升系統(tǒng)的整體性能。

          本文將討論如何在一個集成了PowerPC內(nèi)核、一個DDR內(nèi)存控制器以及一個LCD控制器的嵌入式系統(tǒng)的開發(fā)過程中采用。在圖1中,DDR內(nèi)存控制器通過一個高速處理器本地總線(PLB)與PPC相連,因而在該系統(tǒng)中可以通過高速內(nèi)存訪問來實(shí)現(xiàn)指令和數(shù)據(jù)傳輸。LCD控制器對帶寬要求較低,可以通過較低速的片上外圍總線(OPB)與PPC連接,OPB通過一個PLB到OPB橋?qū)⒌退俚耐鈬鷥?nèi)核與PLB相連。圖中還顯示了兩個片上存儲控制器和BRAM的用法,這是一個很重要的特性。從系統(tǒng)模塊圖可以看出,當(dāng)系統(tǒng)中額外增加其它總線控制器時,嵌入式系統(tǒng)設(shè)計(jì)能夠輕松地對其提供支持。

          系統(tǒng)生成

          我們可以采用系統(tǒng)生成器來定義所需處理器以及相關(guān)控制器的參數(shù),從而簡化嵌入式系統(tǒng)的設(shè)計(jì)和創(chuàng)建,并產(chǎn)生嵌入式系統(tǒng)的源設(shè)計(jì) (通常包含一個處理器內(nèi)核、幾個總線結(jié)構(gòu)以及現(xiàn)有的IP)。同時,系統(tǒng)生成器還能產(chǎn)生系統(tǒng)啟動所需的軟件頭文件。有了這些工具,軟、硬件設(shè)計(jì)工程師就能同時并行地進(jìn)行嵌入式系統(tǒng)開發(fā)。圖1:基于PowerPC 405的嵌入式系統(tǒng)框圖。

          對硬件設(shè)計(jì)工程師而言,系統(tǒng)生成器能夠創(chuàng)建系統(tǒng)中關(guān)鍵部件安裝時所需的所有文件,并能使外圍器件定義、外圍器件創(chuàng)建、以及處理器上數(shù)百個管腳與外圍器件和系統(tǒng)總線的連接自動進(jìn)行。對于開發(fā)工程師而言,系統(tǒng)生成器在進(jìn)行HW/SW系統(tǒng)權(quán)衡時能提供很大幫助,而且還能解決軟硬件優(yōu)化的問題。如果沒有系統(tǒng)生成器,則必須手動產(chǎn)生系統(tǒng),將使系統(tǒng)設(shè)計(jì)時間和設(shè)計(jì)復(fù)雜度增加。

          如何利用Floorplanner

          很多EDA廠商都提供的另一種工具是Floorplanner,硬件設(shè)計(jì)工程師利用該工具可以控制擺放那些與他們所感興趣的功能相關(guān)的邏輯,并且在功能實(shí)現(xiàn)后立即查看器件內(nèi)的布局線路情況。以嵌入式系統(tǒng)為例,F(xiàn)loorplanner可以幫助設(shè)計(jì)工程師查看和(或)控制處理器以及相關(guān)外圍器件的擺放,這些外圍器件的布局可能對滿足設(shè)計(jì)性能要求非常關(guān)鍵。

          如前所述,PowerPC 405內(nèi)核中包含一個片上存儲(OCM)控制器,該OCM控制器既能提供到64位指令BRAM(ISBRAM)的接口,也能提供到32位數(shù)據(jù)BRAM (DSBRAM)的接口,它最多能尋址16MB的DSBRAM和16MB的ISBRAM。OCM控制器最大的優(yōu)點(diǎn)是能夠保持一個固定的執(zhí)行時延。為了滿足 的時序的要求,硬件設(shè)計(jì)工程師必須控制OCM BRAM相對于OCM控制器接口的擺放位置:DSBRAM必須放在PPC405核之上,而ISBRAM必須置于PPC405之下,如圖2所示。要想控制這類布局,最簡單的方法也許就是采用Floorplanner工具。

          Floorplanner具有查看和(或)擺放邏輯的功能,該工具恰當(dāng)時能夠提升嵌入式系統(tǒng)的性能,但若不當(dāng)則會降低系統(tǒng)性能。因此,用戶要想成功地應(yīng)用該工具,還應(yīng)該注意以下幾點(diǎn)建議:

          1. 硬件設(shè)計(jì)工程師在采用Floorplanner對硬件開始布局之前,必須清楚了解設(shè)計(jì)和目標(biāo)結(jié)構(gòu),這對正確的設(shè)計(jì)布局和硬件資源利用非常關(guān)鍵。

          2. 在對FPGA進(jìn)行物理布局時必須優(yōu)先考慮I/O。如圖3所示,控制信號I/O應(yīng)該放在FPGA的頂部或底部,數(shù)據(jù)總線I/O應(yīng)放在左側(cè)或右側(cè),這樣才能保證最有效地利用FPGA的布線資源,并最大程度地優(yōu)化性能。

          3. 算術(shù)功能在FPGA中通常利用專用的進(jìn)位鏈(carry-chain)來實(shí)現(xiàn),進(jìn)位鏈在一個特殊的垂直方向上運(yùn)行。例如,一個10位計(jì)數(shù)器的進(jìn)位鏈就在從器件底端到頂端的垂直方向上運(yùn)行。因而,設(shè)計(jì)者可以將其總線的LSB置于器件的底部而將MSB置于頂部,充分利用進(jìn)位鏈的方向性。

          4. Floorplanner根據(jù)邏輯層次的不同來顯示邏輯單元,因而很容易將邏輯單元劃分為公共的組或區(qū)域。這種根據(jù)層次分組的方式利用了本地布線資源,因而能夠降低信號延遲,提高電路性能。

          5. 如圖4所示,交替地放置相關(guān)的總線。硬件設(shè)計(jì)工程師可以通過交替放置相關(guān)的I/O總線來降低信號延遲,但只有在這樣的處理不增加額外的邏輯單元時才有意義。需要提醒的是,在進(jìn)行布線決策時一定要把整個設(shè)計(jì)看作一個整體。

          硬件設(shè)計(jì)工程師在嵌入式系統(tǒng)設(shè)計(jì)中適當(dāng)注意以上幾點(diǎn),就能輕松地對一個設(shè)計(jì)進(jìn)行組織和規(guī)劃。在對嵌入式系統(tǒng)進(jìn)行底層規(guī)劃之前,設(shè)計(jì)工程師必須首先給不同的組分配邏輯資源。組通常都是設(shè)計(jì)層次的,設(shè)計(jì)層次為嵌入式系統(tǒng)提供了一個自然的邊界,F(xiàn)loorplanner可以利用這個邊界輕松地進(jìn)行組創(chuàng)建。系統(tǒng)生成器在創(chuàng)建系統(tǒng)的每一個模塊時均相應(yīng)創(chuàng)建了獨(dú)特的分層參考,這就使得嵌入式系統(tǒng)的組定義變得非常簡單。在需要進(jìn)行底層規(guī)劃的組創(chuàng)建好之后,就可以分配放置這些組的物理區(qū)域。每個組的放置需要前面的幾點(diǎn)建議和設(shè)計(jì)版圖來進(jìn)行。圖2:DSBRAM、PPC405和ISBRAM之間的布局位置關(guān)系。

          設(shè)計(jì)版圖約束

          Floorplanner提供了三種方法來約束邏輯模塊和邏輯組的物理位置分配:

          1. 第一種方法就是將邏輯部件置于一個特定的物理位置,或放在某個特定的元件內(nèi)部。例如,數(shù)據(jù)總線的一個輸出(以第10位為例)可以分配給器件的第37腳。但這類分配沒有靈活性,布局工具和布線工具必須將第10位的輸出驅(qū)動置于器件管腳37中。這種方法還可以用于布局和分配一組邏輯部件。

          2. 第二種方法是將某個邏輯單元或邏輯組分配給一個物理區(qū)域。通常采用的都是這種方法,因?yàn)樗试S布局工具和布線工具移動某區(qū)域組內(nèi)的邏輯單元,以實(shí)現(xiàn)最優(yōu)的布局和布線。為了優(yōu)化系統(tǒng)設(shè)計(jì),功能更強(qiáng)大的Floorplanner工具還支持組間重疊,以及在一個經(jīng)過底層規(guī)劃的區(qū)域?qū)崿F(xiàn)不經(jīng)底層規(guī)劃處理的邏輯。

          3. 第三種方法是創(chuàng)建關(guān)聯(lián)布局宏(Relationally Plalced Macro, RPM)。RPM定義了各邏輯單元之間的相對版圖設(shè)計(jì),但準(zhǔn)確的布局是由布局和布線工具決定的,這樣可以得到最佳的設(shè)計(jì)性能。例如,一個查找表(LUT) 可以與一個觸發(fā)器置于同一塊(slice)內(nèi),而一個塊又可以直接置于另一塊之上。RPM使設(shè)計(jì)工程師能夠控制某些特定模塊的布線,但并沒有嚴(yán)格地限制布局和布線工具。

          通過在嵌入式系統(tǒng)設(shè)計(jì)中應(yīng)用以上提出的建議和方法,硬件設(shè)計(jì)工程師就能控制某些特定部件的布局,改善器件的整體布線(通過利用區(qū)域性分組),并控制某些特定部件之間的相對布局(通過采用RPM)。圖5:包含UART、BRAM控制器的PPC 405嵌入式設(shè)計(jì)實(shí)例。

          應(yīng)用舉例

          圖5采用了PPC 405來說明上面所述方法和建議,該應(yīng)用是包含了2個UART和一個BRAM控制器的嵌入式設(shè)計(jì)。

          在該設(shè)計(jì)中,系統(tǒng)生成器創(chuàng)建層次邊界,而邏輯組則在這些邊界的基礎(chǔ)上創(chuàng)建。為PLB仲裁器、UART和BRAM內(nèi)存控制器均可創(chuàng)建區(qū)域組(area group)。將BRAM和PPC 405限制在特定位置,以使設(shè)計(jì)達(dá)到最佳性能。應(yīng)該注意的是,在分配一個區(qū)域組時,必須為該區(qū)域中的邏輯單元分配足夠的資源。而當(dāng) Floorplanner的功能更強(qiáng)大時,還能為用戶提供每個區(qū)域組所需的資源。本例中的區(qū)域組中所包含的資源為實(shí)現(xiàn)所需資源量的兩倍。這樣,通過向經(jīng)底層規(guī)劃處理后的區(qū)域中添加布局額外的邏輯單元(不包含在組中邏輯單元)可以對設(shè)計(jì)進(jìn)一步優(yōu)化。

          在分配資源時,BRAM內(nèi)存控制器被置于硅片的中央,這樣可以對所有BRAM元件以及PPC 405內(nèi)核進(jìn)行同等的訪問。在本設(shè)計(jì)之中BRAM中包含了PPC 405內(nèi)核所需的數(shù)據(jù)和指令。UART1和UART2的位置在IO附近,以盡可能減少輸入到時鐘和時鐘到輸出的時間。設(shè)計(jì)中有兩個PLB接口,一個是 CPU指令端PLB接口,另一個是CPU數(shù)據(jù)端PLB接口。因此,PLB仲裁器被放在PPC 405內(nèi)核旁邊。

          分配給每一個區(qū)域組的邏輯單元均根據(jù)區(qū)域約束進(jìn)行布局,而且為提高設(shè)計(jì)性能,還在設(shè)計(jì)中混入了額外的邏輯單元,這也正說明了為什么在每個區(qū)域組分配時都要保留一定的額外空間的原因。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();