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 是為 VIP 服務的
ASIC 是定制的,具體分為全定制和半定制。
全定制設計可以實現最小面積,最佳布線布局、最優功耗速度,得到最好的電特性。特點:精工細作,設計要求高、周期長,設計成本昂貴。
半定制設計方法又分成基于標準單元的設計方法 CBIC 和基于門陣列的設計方法。半定制主要適合于開發周期短,低開發成本、投資、風險小的小批量數字電路設計。
ASIC 的特點是:
面向特定用戶的需求,ASIC 在批量生產時與通用集成電路相比具有體積更小、功耗更低、可靠性提高、性能提高、保密性增強、成本降低等優點。
ASIC 需要較長的開發周期,風險較大,一旦有問題,成片全部作廢,所以小公司已經玩不起了。
(ASIC 基本架構)
四、兩者的設計流程
完整的 FPGA 設計流程包括功能描述、電路設計與輸入、功能仿真、綜合優化、綜合后仿真、實現與布局布線、時序仿真、板級仿真與驗證、調試與加載配置。
ASIC 的設計流程(數字芯片)包括:功能描述、模塊劃分、模塊編碼輸入、模塊級仿真驗證、系統集成和系統仿真驗證、綜合、STA(靜態時序分析)、形式驗證。
(FPGA 和 ASIC 設計流程)
插一句,在 ASIC 設計過程中,往往要用到 FPGA 進行原型驗證。FPGA 驗證是進行 ASIC 設計的重要環節,其后,還需要引入 ASIC 版本源碼,插入 IO PAD,DFT,功耗估計和進行其它后端流程。完成 FPGA 驗證可以說就完成了 ASIC 整套流程的 50~80%。
從設計成本來考慮,小批量上 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,尤其是基于占用大量硅面積的、每個單元六個晶體管的靜態存儲器(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 的前提下)。
劣勢二:你的大小是固定的。你用 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。
審核編輯 黃昊宇
-
FPGA
+關注
關注
1643文章
21954瀏覽量
613988 -
asic
+關注
關注
34文章
1242瀏覽量
121975
發布評論請先 登錄
JESD204B有專用于ADC/DAC和FPGA或ASIC的接口嗎?
ASIC和GPU的原理和優勢

大多數FPGA的程序存儲器(FLASH)為什么都放在外面呢?FPGA的主要應用

FPGA與ASIC的區別 FPGA性能優化技巧
ASIC集成電路如何提高系統效率
ASIC集成電路與FPGA的區別
FPGA和ASIC在大模型推理加速中的應用

FPGA與ASIC的優缺點比較
FPGA仿真工具包軟件EasyGo Vs Addon介紹

將ASIC IP核移植到FPGA上——更新概念并推動改變以完成充滿挑戰的任務!

超級電容器憑什么能取代鋰電,可能嗎?

ESP32能取代STM32嗎?哪個更好?

評論