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