FPGA 是否真的能取代 ASIC?

FPGA要取代ASIC了,這是FPGA廠商喊了十多年的口號。可是,FPGA地盤佔了不少,ASIC也依舊玩得愉快。這兩位仁兄到底有啥不一樣呢?

一、身份證

FPGA(Field-Programmable Gate Array),即現場可編程門陣列,是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。

它是作為專用集成電路(ASIC) 領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。

它是當今數字系統設計的主要硬件平臺,其主要特點就是完全由用戶通過軟件進行配置和編程,從而完成某種特定的功能,且可以反覆擦寫。

在修改和升級時,不需額外地改變PCB 電路板,只是在計算機上修改和更新程序,使硬件設計工作成為軟件開發工作,縮短了系統設計的週期,提高了實現的靈活性並降低了成本。

ASIC(Application Specific Integrated Circuit),即專用集成電路,是一種為專門目的而設計的集成電路。是指應特定用戶要求和特定電子系統的需要而設計、製造的集成電路。

ASIC的特點是面向特定用戶的需求, ASIC分為全定製和半定製。亮點在於專用,量身定製所以執行速度較快。

一句話總結就是,市場上買不到的芯片。水果的A系列處理器就是典型的ASIC。

二、FPGA是可複用的

FPGA採用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內部包括可配置邏輯模塊CLB、輸出輸入模塊IOB和內部連線三個部分。現場可編程門陣列(FPGA)是可編程器件。

FPGA利用小型查找表(16×1RAM)來實現組合邏輯,每個查找表連接到一個D觸發器的輸入端,觸發器再來驅動其他邏輯電路或驅動I/O,由此構成了即可實現組合邏輯功能又可實現時序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。

FPGA的邏輯是通過向內部靜態存儲單元加載編程數據來實現的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯接方式,並最終決定了FPGA所能實現的功能。

FPGA的特點:

加電時,FPGA芯片將EPROM中數據讀入片內編程RAM中,配置完成後,FPGA進入工作狀態。掉電後,FPGA恢復成白片,內部邏輯關係消失,因此,FPGA能夠反覆使用。理論上,FPGA允許無限次的編程。

FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。

FPGA內部有豐富的觸發器和I/O引腳。

快速成品,可以被修改來改正程序中的錯誤和更便宜的造價。

用戶不需要介入芯片的佈局佈線和工藝問題,而且可以隨時改變其邏輯功能,使用靈活。

FPGA 是否真的能取代 ASIC?

圖 FPGA基本架構

三、ASIC是為VIP服務的

ASIC是定製的,具體分為全定製和半定製。

全定製設計可以實現最小面積,最佳佈線佈局、最優功耗速度,得到最好的電特性。特點:精工細作,設計要求高、週期長,設計成本昂貴。

半定製設計方法又分成基於標準單元的設計方法CBIC和基於門陣列的設計方法。半定製主要適合於開發週期短,低開發成本、投資、風險小的小批量數字電路設計。

ASIC的特點是:

面向特定用戶的需求,ASIC在批量生產時與通用集成電路相比具有體積更小、功耗更低、可靠性提高、性能提高、保密性增強、成本降低等優點。

ASIC需要較長的開發週期,風險較大,一旦有問題,成片全部作廢,所以小公司已經玩不起了。

FPGA 是否真的能取代 ASIC?

圖 ASIC基本架構

四、兩者的設計流程

FPGA 是否真的能取代 ASIC?

圖 FPGA和ASIC設計流程

完整的FPGA設計流程包括功能描述、電路設計與輸入、功能仿真、綜合優化、綜合後仿真、實現與佈局佈線、時序仿真、板級仿真與驗證、調試與加載配置。

ASIC的設計流程(數字芯片)包括:功能描述、模塊劃分、模塊編碼輸入、模塊級仿真驗證、系統集成和系統仿真驗證、綜合、STA(靜態時序分析)、形式驗證。

插一句,在ASIC 設計過程中,往往要用到FPGA 進行原型驗證。FPGA 驗證是進行ASIC 設計的重要環節,其後,還需要引入ASIC 版本源碼,插入IO PAD,DFT,功耗估計和進行其它後端流程。完成FPGA 驗證可以說就完成了ASIC 整套流程的50~80%。

從設計成本來考慮,小批量上FPGA佔優,大批量時,ASIC佔優。

FPGA 是否真的能取代 ASIC?


FPGA本身就是一個芯片,只是你可以通過編程的方式修改內部邏輯連接和配置實現自己想要的功能。實現ASIC,就如從一張白紙開始,你得有代碼,之後綜合,之後佈局,佈線,得到GDSII後去流片。

五、比速度

相同的工藝和設計,在FPGA上的速度應該比ASIC跑得慢。因為FPGA內部是基於通用的結構,也就是LUT(look up table),它可以實現加法器,組合邏輯等等,而ASIC,一般加法器就是加法器,而比較器就是比較器,FPGA結構上的通用性必然導致冗餘。

另外,作為FPGA基本單元是LUT(LUT組成SLICE,SLICE組成CLB--這是xilinx的結構),為此大的設計假如一個LUT實現不了,就得用兩個LUT,一個SLICE實現不了就要用CLB,不同結構處於特定的位置,信號之間的互聯,導致的wire delay是不可忽略的一部分。

而對於ASIC來說沒有結構上的限制,而且對於特定的實際可以在空間上靠得很近,相對之下wire delay和cell delay都應該比FPGA小。

當然LUT中也有DFF,作為高速的設計一般都會在一個簡單的組合邏輯操作之後打一拍,再做下一步的處理。

六、比個頭

完全相同的結構的話,FPGA被ASIC遠遠踢飛。FPGA要規模大得多才能實現ASIC相同的功能,主頻還只有幾分之一。因此,FPGA相對於ASIC來說還是大很多的。

FPGA 是否真的能取代 ASIC?

七、功耗方面

在相同工藝條件下,FPGA要大於ASIC。FPGA,尤其是基於佔用大量硅面積的、每個單元六個晶體管的靜態存儲器(SRAM)的查尋表(LUT)和配置元件技術的FPGA,其功耗要比對等的ASIC大得多。


八、比花的銀子

FPGA貴在單片,開發工具和風險基本不存在。對於ASIC貴在流片的費用和開發工具,NRE費用隨著工藝的提高變相當貴,除非你的芯片一次成功可以量產,否則單片費用將其貴無比!

九、其他方面

ASIC用於大型項目,而對於需要快速投放市場且支持遠程升級的小型項目,FPGA則更為適合。FPGA技術的主要優勢仍是產品投放市場的時間較短。

在ASIC的優勢方面,ASIC加電後可立即運行,就單位邏輯大小而言封裝選擇更多,還可包括某些模擬邏輯。

與此相對比,FPGA加載配置進入存儲器需要時間,因此不能立即工作。此外,FPGA的封裝也較複雜。

除此之外,FPGA內部還包括接口I/O,I/O分為普通I/O和高速I/O,高速I/O支持例如高速的SERDES,用於實現XAUI,PCIE等高速接口,這些接口動輒幾Gbps到10Gbps以上。

此外種類多種多樣的硬核IP也是各FPGA廠商差異化競爭利器,例如POWERPC、ARM等硬核IP。

從而構成CPU+FPGA於一體的集可編程性和可重構的處理平臺。因此,相對來說,FPGA雖然發展有二三十年的歷史,其基本架構一直不變不大。

十、兩者的定位

FPGA和ASIC產品的使用要根據產品的定位和設計需要來選用,ASIC產品適用於設計規模特別大,如CPU、DSP或多層交換芯片等。

或者是應用於技術非常成熟且利潤率非常低的產品,如家用電器和其它消費類電器,亦或是大量應用的通用器件如RAM、PHY等。

而FPGA產品適用於設計規模適中,產品要求快速佔領市場,或產品需要靈活變動的特性設計等方面的產品,如PDH、2.5G以下SDH設備和大部分的接口轉換芯片等。

當然具體使用那種產品來設計還要設計者充分考慮自己的產品定位來決定。

十一、兩者在互相融合

最明顯的莫過於處理器中開始集成FPGA,而可編程的ASIC也開始興起。隨著SoC成為主流,兩者的邊界也就不辣麼明顯了。


十二、最後奉上網友對FPGA比ASIC快的解釋

FPGA的LUT等資源已經固定了,你用不用都在那裡,不多不少。

ASIC理論上每一個你用到的CELL或者IP等資源你都可以手動的擺放來進行優化。

FPGA的資源固定有兩個劣勢:

劣勢一:能夠利用的資源是固定的,且不成大片,橫跨區域的產生邏輯,會退化時序。其實也就是你沒有辦法把邏輯儘可能的擺得近。邏輯擺得近可以減小線上的延遲,可以提高速度。ASIC的cell你可以全部的擠在一起(不違反DRC的前提下)。

如下圖所示啦,這就是一個FPGA的資源圖。

FPGA 是否真的能取代 ASIC?

劣勢二:你的大小是固定的。你用1個門還是用10W個門,都是這一片已經固定好了的LUT給你用。如果你的邏輯很小很小,FPGA很大,你信號從IO進來到邏輯,有可能會走比較長的距離,這個也要花時間的。

極端的例子,你從上部的IO進來,你的邏輯在下部,這走線的長度感人啊。(正常的設計不會這麼做的)

除此之外,FPGA的走線,你幾乎是動不了的。

ASIC中你可以直接加寬金屬線,比如兩倍寬度走時鐘線,復位線啦,之類的。金屬線寬度變大,線上的延遲變小,對速度也是有幫助的。

還有asic的庫一般還包含高性能cell,低功耗cell等。在關鍵路徑,為了提高時序,你全用高性能的cell(功耗大)。一般的路徑,時序比較松,多用低功耗的cell(性能低)。

FPGA一旦選定了,你就只有他給你的東西,你沒有選的。

ASIC還可以使用useful skew的方式來提高速度,手段會比FPGA中的多。

總的來說,就如同GPU和CPU一樣。GPU可以非常快的處理圖像,但是讓GPU去處理其他的東西,GPU表示攤手。CPU很多的運算都能處理,也能去處理圖像,只是慢而已。

一旦你是衝著某個目的去的(ASIC)你為了實現這個目標,你各種沒節操沒下線都可以。如果你想要多方面兼顧(FPGA),你就不可能在每一個方面都做到最好,你必須trade-off。


分享到:


相關文章: