<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > FPGA研發(fā)之道(9)架構設計漫談(四)并行與復用

FPGA研發(fā)之道(9)架構設計漫談(四)并行與復用

作者: 時(shí)間:2014-10-27 來(lái)源:網(wǎng)絡(luò ) 收藏

  其在眾多器件中能夠被工程師青睞的一個(gè)很重要的原因就是其強悍的處理能力。那如何能夠做到高速的數據處理,數據的處理則是其中一個(gè)很重要的方式。

本文引用地址:http://dyxdggzs.com/article/264454.htm

  數據的處理,從結構上非常簡(jiǎn)單,但是設計上卻是相當復雜,對于現有的來(lái)說(shuō),雖然各種的容量都在增加,但是在有限的邏輯中達到更高的處理能力則是FPGA工程師面臨的挑戰。常用計算結構如下圖所示:

  

?

  上圖中:前端處理單元負責將進(jìn)入數據信息,分配到多個(gè)計算單元中,圖中為3個(gè)計算單元(幾個(gè)根據所需的性能計算得出)。然后計算單元計算完畢后,交付后端處理單元整合為統一數據流傳入下一級。如果單個(gè)計算單元的處理能力為N ,則通過(guò)并行的方式,根據并行度M,其計算能力為N*M;在此結構中,涉及到幾個(gè)問(wèn)題:

  一, 前端處理單元如何將數據分配到多個(gè)計算單元,其中一種算法為round-robin,輪流寫(xiě)入下一級計算單元,這種方式一般使用用計算單元計算數據塊的時(shí)間等同。更常用的一種方式,可以根據計算單元的標示,即忙閑狀態(tài),如果哪個(gè)計算單元標示為閑狀態(tài),則分配其數據塊。

  二, 計算單元和前后端處理之間如何進(jìn)行數據交互。一般來(lái)說(shuō),計算單元處理頻率較低,為關(guān)鍵路徑所在。前后端處理流量較大,時(shí)鐘頻率較高,因此通過(guò)異步FIFO連接,或者雙端口RAM都是合適的方式。如果數據可分塊計算,且塊的大小不定,建議使用FIFO作為隔離手段,同時(shí)使用可編程滿(mǎn)信號,作為前端處理識別計算模塊的忙閑標示。

  三, 如果數據有先后的標示,即先計算的數據需要先被送出,則后端處理模塊需要額外的信號,確定讀取各個(gè)計算模塊的順序。這是因為:如果數據等長(cháng),則計算時(shí)間等長(cháng),則先計算的數據會(huì )先被送出。但是如果數據塊不等長(cháng),后送入的小的數據塊肯能先被計算完畢,后端處理單元如果不識別先后計算的數據塊,就會(huì )造成數據的亂序。這可以通過(guò)前端計算單元通過(guò)小的FIFO通知后端計算單元獲知首先讀取那個(gè)計算單元輸出的數據,即使其他計算單元輸出已準備好,也要等待按照順序來(lái)讀取。

  數據的并行處理是FPGA常用的提升處理性能的方法,其優(yōu)點(diǎn)是結構簡(jiǎn)單,通過(guò)計算單元模塊的復用達到高性能的處理。缺點(diǎn),顯而易見(jiàn)就是達到M倍的性能就要要耗費M倍邏輯。

  與之相反減少邏輯的另一種方式,則是復用,即一個(gè)處理能力較強的模塊,可以被N的單元復用,通過(guò)復用,而不用每個(gè)單元例化模塊,可以達到減少邏輯的效果,但控制復雜度就會(huì )上升。其結構圖如下所示:

  

?

  上圖復用的結構圖中,分別介紹了流過(guò)模式復用和調用模式復用。流過(guò)模式下,計算單元處理多路數據塊,然后將數據塊分配到多路上,這種情況下,通過(guò)round-robin可以保證各個(gè)通路公平機會(huì )獲得計算單元。其處理思路與上圖描述并行處理類(lèi)似。

  調用模式下,計算單元被多個(gè)主設備復用,這種架構可以通過(guò)總線(xiàn)及仲裁的方式來(lái)使各個(gè)主設備能夠獲取計算單元的處理(有很多成熟的例子可供使用,如AHB等)。如果多個(gè)主設備和多個(gè)計算單元的情況,則可以不通過(guò)總線(xiàn)而通過(guò)交換矩陣,來(lái)減少總線(xiàn)處理帶來(lái)的總線(xiàn)瓶頸。

  實(shí)際應用場(chǎng)合,設計的架構都應簡(jiǎn)單實(shí)用為好,交互矩陣雖然實(shí)用靈活,但其邏輯量,邊界測試驗證的難度都較大,在需要靈活支持多端口互聯(lián)互通的情況下使用,可謂物盡其用。但如果僅僅用于一般計算單元能力復用的場(chǎng)景,就屬于過(guò)度設計,其可以通過(guò)化簡(jiǎn)成上述兩種簡(jiǎn)單模式,達到高速的數據處理的效果。

  并行和復用,雖然是看其來(lái)屬性相反的操作,但其本質(zhì)上就是通過(guò)處理能力和邏輯數量的平衡,從而以最優(yōu)的策略滿(mǎn)足項目的需要。設計如此,人生亦然。

fpga相關(guān)文章:fpga是什么




關(guān)鍵詞: FPGA 架構設計 并行

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>