?
3. FPGA
FPGA(Field Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在 PAL、GAL、CPLD 等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為 ASIC 領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。
(1) 技術(shù)背景
以硬件描述語言(Verilog 或 VHDL)所完成的電路設(shè)計,可以經(jīng)過簡單的綜合與布局,快速的燒錄至 FPGA 上進行測試,是現(xiàn)代 IC 設(shè)計驗證的技術(shù)主流。
這些可編輯元件可以被用來實現(xiàn)一些基本的邏輯門電路(比如 AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學(xué)方程式。在大多數(shù)的 FPGA 里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flip-flop)或者其他更加完整的記憶塊。系統(tǒng)設(shè)計師可以根據(jù)需要通過可編輯的連接把 FPGA 內(nèi)部的邏輯塊連接起來,就好像一個電路試驗板被放在了一個芯片里。一個出廠后的成品 FPGA 的邏輯塊和連接可以按照設(shè)計者而改變,所以 FPGA 可以完成所需要的邏輯功能。
1984 年 Ross Freeman、Bernie Vonderschmitt 和 Jim Barnett 創(chuàng)立了賽靈思(Xilinx)公司,Xilinx 是第一個建立無工廠(fabless)生產(chǎn)模式,除了設(shè)計、營銷與產(chǎn)品支持以外其他事務(wù)均進行外包的半導(dǎo)體公司,Xilinx 首創(chuàng)了 FPGA 這一創(chuàng)新性的技術(shù),并于 1985 年首次推出商業(yè)化產(chǎn)品——XC2064,采用 2μm 工藝,包含 64 個邏輯模塊和 85000 個晶體管,門數(shù)量不超過 1000 個。
Xilinx 創(chuàng)始人 Ross Freeman(左圖, FPGA 的發(fā)明人)和 Bernie Vonderschmitt(右圖)
世界第一款 FPGA——XC2064 實物圖
FPGA 一般來說比 ASIC 的速度要慢,實現(xiàn)同樣的功能比 ASIC 電路面積要大。但是他們也有很多的優(yōu)點比如可以快速成品,可以被修改來改正程序中的錯誤和更便宜的造價。
與 FPGA 相似的另外一種方法是用 CPLD(Complex Programmable Logic Device,復(fù)雜可編程邏輯器件)。CPLD 和 FPGA 包括了一些相對大數(shù)量的可編輯邏輯單元。CPLD 邏輯門的密度在幾千到幾萬個邏輯單元之間,而 FPGA 通常是在幾萬到幾百萬。CPLD 和 FPGA 的主要區(qū)別是他們的系統(tǒng)結(jié)構(gòu)。
CPLD 和 FPGA 在系統(tǒng)結(jié)構(gòu)的比較
選項 |
CPLD |
FPGA |
結(jié)構(gòu)要求 |
|
|
內(nèi)置功能模塊和存儲器 |
無 |
|
運行機制 |
CPLD 下電之后,原有燒入的邏輯結(jié)構(gòu)不會消失 |
FPGA 下電之后,再次上電時,需要重新加載 FLASH 里面的邏輯代碼,需要一定的加載時間。 |
?
(2) 工作原理
FPGA 采用了邏輯單元陣列 LCA(Logic Cell Array)這樣一個概念,內(nèi)部包括可配置邏輯模塊 CLB(Configurable Logic Block)、輸入輸出模塊 IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個部分。
FPGA 是可編程器件,與傳統(tǒng)邏輯電路和門陣列(如 PAL,GAL 及 CPLD 器件)相比,F(xiàn)PGA 具有不同的結(jié)構(gòu)。FPGA 利用小型查找表(16×1RAM)來實現(xiàn)組合邏輯,每個查找表連接到一個 D 觸發(fā)器的輸入端,觸發(fā)器再來驅(qū)動其他邏輯電路或驅(qū)動 I/O,由此構(gòu)成了既可實現(xiàn)組合邏輯功能又可實現(xiàn)時序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到 I/O 模塊。
FPGA 的可編程實際上是改變了 CLB 和 IOB 的觸發(fā)器狀態(tài),這樣,可以實現(xiàn)多次重復(fù)的編程由于 FPGA 需要被反復(fù)燒寫,它實現(xiàn)組合邏輯的基本結(jié)構(gòu)不可能像 ASIC 那樣通過固定的與非門來完成,而只能采用一種易于反復(fù)配置的結(jié)構(gòu)。
查找表(Look-Up-Table,LUT)可以很好地滿足這一要求,LUT 本質(zhì)上就是一個 RAM。
目前 FPGA 中多使用 4 輸入的 LUT,所以每一個 LUT 可以看成一個有 4 位地址線的 RAM。 當(dāng)用戶通過原理圖或 HDL 語言描述了一個邏輯電路以后,PLD/FPGA 開發(fā)軟件會自動計算邏輯電路的所有可能結(jié)果,并把真值表事先寫入 RAM,這樣,每輸入一個信號進行邏輯運算就等于輸入一個地址進行查表,找出地址對應(yīng)的內(nèi)容,然后輸出即可。
輸入與門的真值表
從表中可以看到,LUT 具有和邏輯電路相同的功能。實際上,LUT 具有更快的執(zhí)行速度和更大的規(guī)模。
FPGA 芯片主要由 7 部分完成,分別為:可編程輸入輸出單元、基本可編程邏輯單元、完整的時鐘管理、嵌入塊式 RAM、豐富的布線資源、內(nèi)嵌的底層功能單元和內(nèi)嵌專用硬件模塊。
FPGA 芯片的內(nèi)部結(jié)構(gòu)
每個模塊的功能如下:
可編程輸入輸出單元(IOB)
可編程輸入 / 輸出單元簡稱 I/O 單元,是芯片與外界電路的接口部分,完成不同電氣特性下對輸入 / 輸出信號的驅(qū)動與匹配要求。
FPGA 內(nèi)的 I/O 按組分類,每組都能夠獨立地支持不同的 I/O 標(biāo)準(zhǔn)。通過軟件的靈活配置,可適配不同的電氣標(biāo)準(zhǔn)與 I/O 物理特性,可以調(diào)整驅(qū)動電流的大小,可以改變上、下拉電阻。I/O 口的頻率也越來越高,一些高端的 FPGA 通過 DDR 寄存器技術(shù)可以支持高達 2Gbps 的數(shù)據(jù)速率。
可配置邏輯塊(CLB)
CLB 是 FPGA 內(nèi)的基本邏輯單元。CLB 的實際數(shù)量和特性會依器件的不同而不同,但是每個 CLB 都包含一個可配置開關(guān)矩陣,此矩陣由 4 或 6 個輸入、一些選型電路(多路復(fù)用器等)和觸發(fā)器組成。
開關(guān)矩陣是高度靈活的,可以對其進行配置以便處理組合邏輯、移位寄存器或 RAM。在 Xilinx 公司的 FPGA 器件中,CLB 由多個(一般為 4 個或 2 個)相同的 Slice 和附加邏輯構(gòu)成。每個 CLB 模塊不僅可以用于實現(xiàn)組合邏輯、時序邏輯,還可以配置為分布式 RAM 和分布式 ROM。
數(shù)字時鐘管理模塊(DCM)
業(yè)內(nèi)大多數(shù) FPGA 均提供數(shù)字時鐘管理,如 Xilinx 的全部 FPGA 均具有這種特性。
Xilinx 推出最先進的 FPGA 提供數(shù)字時鐘管理和相位環(huán)路鎖定。相位環(huán)路鎖定能夠提供精確的時鐘綜合,且能夠降低抖動,并實現(xiàn)過濾功能。
嵌入式塊 RAM(BRAM)
大多數(shù) FPGA 都具有內(nèi)嵌的塊 RAM,這大大拓展了 FPGA 的應(yīng)用范圍和靈活性。塊 RAM 可被配置為單端口 RAM、雙端口 RAM、內(nèi)容地址存儲器 (CAM)以及 FIFO 等常用存儲結(jié)構(gòu)。
CAM 存儲器在其內(nèi)部的每個存儲單元中都有一個比較邏輯,寫入 CAM 中的數(shù)據(jù)會和內(nèi)部的每一個數(shù)據(jù)進行比較,并返回與端口數(shù)據(jù)相同的所有數(shù)據(jù)的地址,因而在路由的地址交換器中有廣泛的應(yīng)用。
除了塊 RAM,還可以將 FPGA 中的 LUT 靈活地配置成 RAM、ROM 和 FIFO 等結(jié)構(gòu)。單片塊 RAM 的容量為 18k 比特,即位寬為 18 比特、深度為 1024,可以根據(jù)需要改變其位寬和深度,也可以將多片塊 RAM 級聯(lián)起來形成更大的 RAM。
?
豐富的布線資源
布線資源連通 FPGA 內(nèi)部的所有單元,而連線的長度和工藝決定著信號在連線上的驅(qū)動能力和傳輸速度。
FPGA 芯片內(nèi)部有著豐富的布線資源,根據(jù)工藝、長度、寬度和分布位置的不同而劃分為 4 類不同的類別,詳見下表。
FPGA 芯片內(nèi)部的布線資源表
類別名稱 |
功能說明 |
全局布線資源 |
用于芯片內(nèi)部全局時鐘和全局復(fù)位 / 置位的布線 |
長線資源 |
用以完成芯片 Bank 間的高速信號和第二全局時鐘信號的布線 |
短線資源 |
用于完成基本邏輯單元之間的邏輯互連和布線 |
分布式的布線資源 |
用于專有時鐘、復(fù)位等控制信號線 |
底層內(nèi)嵌功能單元
內(nèi)嵌功能模塊主要指 DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP 和 CPU 等軟處理核(SoftCore)。
DLL 和 PLL 具有類似的功能,可以完成時鐘高精度、低抖動的倍頻和分頻,以及占空比調(diào)整和移相等功能。
內(nèi)嵌專用硬核
內(nèi)嵌專用硬核是相對底層嵌入的軟核而言的,指 FPGA 處理能力強大的硬核(Hard Core),等效于 ASIC 電路。為了提高 FPGA 性能,芯片生產(chǎn)商在芯片內(nèi)部集成了一些專用的硬核。
例如:為了提高 FPGA 的乘法速度,主流的 FPGA 中都集成了專用乘法器;為了適用通信總線與接口標(biāo)準(zhǔn),很多高端的 FPGA 內(nèi)部都集成了串并收發(fā)器(SERDES),可以達到數(shù)十 Gbps 的收發(fā)速度。
正因如此,F(xiàn)PGA 具有如下的基本特點:
- 采用 FPGA 設(shè)計 ASIC 電路,用戶不需要投片生產(chǎn),就能得到合用的芯片,是 ASIC 電路中設(shè)計周期最短、開發(fā)費用最低、風(fēng)險最小的器件之一。
- 可做其它全定制或半定制 ASIC 電路的中試樣片。
- 內(nèi)部有豐富的觸發(fā)器和 I/O 引腳。
- 采用高速 CMOS 工藝,功耗低,可以與 CMOS、TTL 電平兼容。
可以說,F(xiàn)PGA 芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。
(3) 生產(chǎn)廠商
全球知名的 FPGA 生產(chǎn)廠商及相應(yīng)的開發(fā)平臺信息如下:
廠商 |
主要貢獻 |
開發(fā)平臺 |
Altera |
可編程邏輯器件的發(fā)明者 |
Quartus II |
Xilinx |
FPGA 的發(fā)明者,擁有世界一半以上的市場 |
ISE |
Actel |
提供非易失性 FPGA |
Libero |
Lattice |
提供瞬時上電操作、安全性和節(jié)省空間的單芯片解決方案的一系列無可匹敵的非易失可編程器件。 |
ISPLEVER |
Atmel |
2016 年,被美國 MICROCHIP 收購 |
盡管 FPGA 和 CPLD 都是可編程 ASIC 器件,有很多共同特點,但由于 CPLD 和 FPGA 結(jié)構(gòu)上的差異,具有各自的特點:
CPLD |
FPGA |
|
應(yīng)用場合 |
適合完成各種算法和組合邏輯 |
適合于完成時序邏輯 |
時序延遲 |
均勻的、可預(yù)測 |
不可預(yù)測 |
編程原理 |
通過修改具有固定內(nèi)連電路的邏輯功能來編程 |
可在邏輯門下編程,比 CPLD 具有更大的靈活性 |
集成度 |
低 |
高 |
編程方式 |
|
|
速度 |
邏輯塊級編程,速度快 |
門級編程,并且 CLB 之間采用分布式互聯(lián),速度慢 |
保密性 |
好 |
差 |
功耗 |
大 |
小 |
?
(4) 市場發(fā)展
20 世紀(jì) 90 年代后期 FPGA 市場就已經(jīng)過一番激烈整合,許多業(yè)者不是退出 PLD(可程序化邏輯裝置)市場,就是出售其 PLD 業(yè)務(wù)部門,或?qū)?PLD 業(yè)務(wù)部門分立成獨立公司,或進行購并等。
時至今日,F(xiàn)PGA 市場的主要業(yè)者僅剩數(shù)家,包括 Altera、Xilinx、Actel、Atmel、Lattice、QuickLogic 等,不過 2007 年 11 月 QuickLogic 也確定淡出 FPGA 市場,并轉(zhuǎn)進發(fā)展 CSSP(CustomerSpecificStandardProduct)。
但 FPGA 領(lǐng)域依然有新興業(yè)者出現(xiàn),例如 AchronixSemiconductor、MathStar 等。且除了單純數(shù)字邏輯性質(zhì)的可程序邏輯裝置外,混訊、模擬性質(zhì)的可程序邏輯裝置也展露頭角,例如:
CypressSemiconductor 的 PSoC(ProgrammableSystem-on-Chip)即具有可組態(tài)性的混訊電路、Actel 公司也提出可程序化的混訊芯片——Fusion,或者也有業(yè)者提出所謂的現(xiàn)場可程序化模擬數(shù)組(FieldProgrammableAnalogArray;FPAA)等,相信這些都能為可程序化芯片帶來更多的發(fā)展動能。
Cypress 的 PSoC 典型應(yīng)用
FPGA 產(chǎn)品的應(yīng)用領(lǐng)域已經(jīng)從原來的通信擴展到消費電子、汽車電子、工業(yè)控制、測試測量等廣泛的領(lǐng)域。而應(yīng)用的變化也使 FPGA 產(chǎn)品近幾年的演進趨勢越來越明顯:
一方面,F(xiàn)PGA 供應(yīng)商致力于采用當(dāng)前最先進的工藝來提升產(chǎn)品的性能,降低產(chǎn)品的成本;
另一方面,越來越多的通用 IP(知識產(chǎn)權(quán))或客戶定制 IP 被引入 FPGA 中,以滿足客戶產(chǎn)品快速上市的要求。此外,F(xiàn)PGA 企業(yè)都在大力降低產(chǎn)品的功耗,滿足業(yè)界越來越苛刻的低功耗需求。
4. ASIC、單片機和 DSP 的區(qū)別與聯(lián)系
ASIC 原本就是專門為某一項功能開發(fā)的專用集成芯片,比如:攝像頭里面的芯片,小小的一片,集成度很低,成本很低,可是夠用了。后來 ASIC 發(fā)展了一些,稱為半定制專用集成電路,相對來說更接近 FPGA,甚至在某些地方,ASIC 就是個大概念,F(xiàn)PGA 屬于 ASIC 之下的一部分。
單片機就是一個“百搭”的通用 CPU,提供各種接口來對整體進行控制,相當(dāng)一個總調(diào)度,簡單的功能一片 CPU 獨立工作也就完成了。原來的 51 系列就是一堆 IO 口,后來慢慢的把常用的 PWM、AD 之類的功能加入了單片機。接下來又出現(xiàn)了 AVR、PIC、ARM、HOTEK……,其實 ARM9 以后,已經(jīng)說不清 ARM 算哪類了,目前的架構(gòu)來看,ARM 更接近 DSP。
與非網(wǎng)原創(chuàng)內(nèi)容,不經(jīng)允許,謝絕轉(zhuǎn)載!
本系列更多內(nèi)容,請參照:處理器史話匯總。