我經常收到關于各類設備之間的差異的問題,諸如ASIC、ASSP、SoC和FPGA之間的區別問題。例如是SoC是ASIC嗎?或ASIC是SoC嗎?ASIC和ASSP之間的區別是什么?以及高端FPGA應該歸類為SoC嗎? 這里有幾個難題,至少技術和術語隨著時間而演變。牢記這一點,對于這些術語的起源以及它們現在的意義是什么,我對此做了高度簡化的解釋。 ASIC——特定應用集成電路 讓我們從特定應用集成電路(ASIC)開始。正如其名稱所表示的,這是因特定目的而創建的設備。當大多數人聽到這個詞ASIC時,他們的“下意識”反應是,假設它是數字設備。事實上,不論它是模擬的、數字的,或兩者的混合,任何定制的芯片都是一個ASIC。然而,對于這些討論的目的,我們應該假設這是一個完全或主要部分是數字性質的芯片,任何模擬和混合信號功能是沿著物理接口線(物理層)或鎖相回路(PLL)的。 ASIC通常被設計和使用在特定系統中的單個公司。開發ASIC非常昂貴、耗時、資源密集的,但ASIC確實能提供低功耗的高性能。 ASSP——專用標準產品 專用標準產品(ASSP)的設計和實施方式完全和ASIC相同。這并不奇怪,因為它們本質上是相同的東西。唯一的區別是,ASSP是更通用的設備,適用于多個系統設計工作室。例如,獨立的USB接口芯片可以歸類為ASSP。 SoC——系統級芯片 系統級芯片(SoC)是硅芯片,包含一個或多個處理器核心——微處理器(MPU)和/或微控制器(MCU)和/或數字信號處理器(DSP)——片上存儲器、硬件加速器功能、外圍功能,以及(潛在的)各種其他“東西”。看它是否屬于SOC的辦法是,先看一個ASIC是否包含一個或多個處理器內核,那么它就是一個SoC。同樣,如果一個ASSP包含一個或多個處理器內核,那么它也是一個SoC。 在此基礎上,我們可以把ASIC(和ASSP)當做是擴展集術語,因為它包含SoC,或者我們可以把SoC當做是擴展集術語,因為它包括ASIC(或ASSP)的一切,包含一個或多個處理器核心。是不是覺得很好玩呢? FPGA——現場可編程門陣列 ASIC、ASSP和SoC具有高性能、低功耗的優勢,但它們包含的任何算法——除了那些在軟件內部處理器內核執行的——其余都是“凍結的”。所以這個時候我們就需要現場可編程門陣列(FPGA)了。早期的FPGA器件的架構相對簡單——只是一系列通過可編程互連的可編程模塊。 FPGA最厲害的地方是,我們可以配置它的可編程架構來實現任意我們需要的數字功能組合。另外,我們可以以大規模并行的方式實施算法,這意味著我們可以非常迅速和有效地執行大數據的處理。 SoC級的FPGA 隨著時間的推移,FPGA器件的能力(容量和性能)大幅提升。例如,現代的FPGA可能包含幾千個加法器、乘法器和數字信號處理(DSP)功能;片上存儲器、大量高速串行互連器(SERDES)收發器模塊,以及許多其他功能。 問題是,現場可編程門陣列(FPGA)的名字不再足以表達出如今可編程器件的性能和功能。我們需要想出一些新的術語,可以表達出一切目前國家最先進的工具和技術能夠做到的事情。 和我們在這里的討論尤其相關的是,今天的FPGA可以包含一個或多個軟/硬核處理器。在此基礎上,我們應該把這種類型的FPGA歸類為SOC(系統級芯片)嗎?我個人不得不說SoC不為我工作,因為我把“SOC”一詞定義為創建于使用ASIC技術的自定義設備。 另一種方法是稱呼這些器件為可編程片上系統,或PSoC,但賽普拉斯半導體公司已經對PSoC這個名稱申請了控制權。賽普拉斯的器件具有一個硬核的微控制器,增添了一些可編程模擬和可編程的數字架構(這個數字架構更傾向于CPLD,而不是FPGA)。 Altera公司通常稱呼這些器件的這個版本為SoC FPGA,它們結合了硬MCU內核、可編程的FPGA架構,但他們似乎已經發展到只稱呼它們為SoC。同時,Xilinx(賽靈思)稱呼這些設備的特點為“所有可編程片上系統”。 就個人而言,我拿不定主意什么名字最好。如果賽普拉斯對這一稱謂沒有采取的控制權的話,我想我更愿意稱它為PSoC。但是因為他們已經對PSoC這個詞采取了控制權,所以我們不能。PSoC行不通,我想我會選擇SoC FPGA。除非你有更好的提議。 |