FPGA的英文全稱是Field Programmable Gate Array,翻譯成中文則是“現場可編程門陣列”。初聽起來,這個名字的確有些拗口。從FPGA的本質上看,它實際上就是半導體芯片的一種。從這個意義上講,它和我們更加熟悉的中央處理器CPU,或者圖形處理器GPU等芯片并無二致。顧名思義,從FPGA的名字上就能體現出它的三個Zui主要的特點:門陣列、可編程、現場。
首先,FPGA芯片由大量的邏輯門陣列組成。我們知道,邏輯門是數字電路的基本組成單元,它們基于“布爾代數”對二進制數0和1進行操作,并完成不同的邏輯運算,例如與、或、非、異或,等等。舉例來說,“非”就是把0變成1,或者把1變成0;把一個0和一個1進行“或”操作就會得到1;把一個0和一個1進行“與”操作就會得到0。在圖1中,就列舉了一些常見邏輯門的電路符號。
圖1 幾個常見的邏輯門
通過對這些邏輯門的排列組合,可以得到一些稍微復雜的運算單元,例如執行算術運算的加法器和乘法器等。圖2就是一個二進制加法器,它的功能是完成一位二進制加法的運算,這個運算只需要五個邏輯門就可以實現。
圖2 全加器(full adder)的邏輯結構圖
有了這些基于邏輯門的通用運算單元,就能進一步用它們設計出更加復雜的功能模塊,并Zui終形成一個個功能各異的IP(Intellectual Property)。對于大部分數字芯片來說,它們都是通過使用不同的IP,實現特定的邏輯功能,然后經過驗證、集成、優化等過程,Zui終將設計流片,制造得到Zui終的芯片產品。
我們應該注意到的是,這些芯片一旦被生產出來,它的邏輯功能就已經被“固化”在芯片上了。也就是說,這些功能已經成為了芯片的一部分。盡管很多芯片都可以通過對片上的寄存器進行編程,但這種編程更多的是改變芯片的配置,并不會改變它本身的邏輯功能。如果想要對它的邏輯功能進行更改,或者發現設計的缺陷和漏洞,就要重新對芯片進行設計、驗證和制造,而這些過程都需要耗費大量的時間、人力、金錢,這樣的投入和風險是很多公司無法承擔的。
在這個大背景下,芯片設計者們提出,與其將邏輯固化在芯片中,不如設計一種更加通用的芯片,在其中只包含Zui基本的邏輯門,并通過某種方式對這些邏輯門進行排列組合,使之能夠通過編程改變它的邏輯結構。這樣,就可以使用一種芯片實現許多不同芯片的功能了。這個想法,就是FPGA的前身。
FPGAZui主要的組成部分就是海量的“邏輯門”,它們通過特定的方式組合成邏輯門陣列,并通過互連單元進行連接。由于邏輯門可以任意組成更加復雜的電路單元,這就使得FPGA在理論上可以實現任意的數字邏輯功能。隨著FPGA技術的不斷發展,在現代FPGA中集成了上千萬個這樣的邏輯單元,因此人們可以使用FPGA完成很多非常復雜的功能,它甚至在某些領域替代了專用芯片。
值得一提的是,這里的“邏輯門”加上了引號,是因為FPGA里的邏輯門是通過查找表(Lookup-Table,LUT)的方式實現的。簡單來說,就是將某個簡單邏輯功能的全部可能結果寫到一個存儲單元中,并根據輸入的變化直接查找結果并輸出。除了部分中低端以及較早的FPGA采用了4輸入LUT結構之外,在大部分的現代FPGA中,例如英特爾的Arria10、Stratix10和Agilex,以及賽靈思的6系、7系、UltraScale及UltraScale+系列等,查找表LUT的輸入通常有6個,也就是說,這樣的查找表結構Zui多可以實現任意6輸入、1輸出的邏輯功能。
除了查找表之外,FPGA的Zui小邏輯單元里還包括寄存器、選擇器,甚至一些算術運算單元,例如加法的進位鏈,等等。不同的廠商對于FPGA的這個Zui小邏輯單元的命名都不盡相同,例如英特爾將其稱為ALM(Adaptive Logic Module,自適應邏輯單元),賽靈思稱之為CLB(Configurable Logic Block,可配置邏輯模塊)。雖然名稱有所差異,但它們的主要組成部分都很類似,也都包含上面所說的這幾個主要組成部分。圖3展示了英特爾Stratix10FPGA芯片的Zui小邏輯單元ALM的結構示意圖。
圖3 Stratix10 FPGA的ALM邏輯結構示意圖
FPGA的第二個主要特點是可編程性。很多人有這樣的疑問:CPU、GPU,以及很多專用芯片都可以進行編程,那么FPGA的可編程性又有什么獨特之處?事實上,FPGA的可編程性,指的是可以對邏輯陣列進行編程,從而改變FPGA實現的邏輯功能,這與其他芯片的可編程性有著本質區別。相比之下,用戶對專用芯片的編程大都是通過改變芯片上各種寄存器的配置實現的,而這并不會改變芯片的主要功能,打個簡單的比方,這種編程并不能使一個網絡交換芯片變成視頻處理芯片。
正是由于FPGA可以對邏輯門陣列進行重復編程,使得FPGA可以在邏輯層面改變自身實現的硬件結構,從而有著極高的靈活性。從理論上講,如果FPGA的可編程資源足夠多,一個FPGA就可以實現任何數字電路的邏輯功能。FPGA的一個重要應用領域,就是用來構建專用芯片ASIC流片前的硬件仿真或原型驗證平臺,即emulation或prototyping,而這正是利用了FPGA的可編程性。在這個過程中,芯片設計者使用FPGA實現目標功能,與真實的軟硬件系統進行交互和仿真,并且可以不斷地進行迭代和修改。待設計滿足要求后,再進行流片生產。這極大降低了因設計疏漏導致流片失敗的風險,還能在芯片尚未流片之前就啟動固件、驅動、應用程序的開發,進一步縮短了項目開發周期。
FPGA的第三個主要特點,就是它的“現場”可編程性。“現場”這個詞指的是,FPGA可以在使用時進行編程,而無須將芯片拆下并返回生產廠家完成編程。這個特點在現在看起來有些理所當然,畢竟目前的大部分芯片都有著現場編程能力,而且這也并非FPGA專有的特點。
事實上,現場可編程這個特點的存在有著背后的歷史原因。在20世紀80年代以前,芯片的固件大都是保存在掩膜ROM(mask ROM)或者基于熔絲的PROM里,只能讀取而不能寫入,更不用說多次寫入了。后來出現了能擦寫的PROM(EPROM),但擦寫過程非常復雜,需要使用特殊設備,對芯片進行長時間的強紫外線照射,這個過程并不能在芯片的使用現場完成。
在20世紀80年代之后,人們發明了EEPROM和閃存(Flash memory),這才使得現場可編程成為可能。對于現代FPGA而言,人們可以每隔幾秒就改變一次FPGA芯片上運行的硬件設計,這也使得FPGA有著極大的靈活性。
由此我們知道了,FPGA作為一種包含大量邏輯門陣列的芯片,可以在使用現場通過編程改變自身的硬件邏輯,并在理論上可以實現任何數字電路的功能。人們對于FPGA有著很多形象的比喻,有人把它比成樂高積木,通過很多基本的積木單元,可以組成汽車、高樓和飛船;也有人把它比成活字印刷,使用一個個字膜,就可以排列組合成任意的詩詞歌賦。這些比喻都形象地突出了FPGA的Zui大特點:靈活性和通用性。
隨著半導體和芯片技術飛速發展至今,FPGA早已不再是面世之初的簡單的可編程門陣列。除了可編程邏輯單元之外,FPGA芯片逐漸變得越來越復雜,并結合Zui新的半導體制造技術,衍生出了很多不同的架構和設計。
- 現場總線網絡的實現 2025-01-03
- 現場總線的現狀 2025-01-03
- 現場總線的產生與發展 2025-01-03
- 流行現場總線簡介(五) 2025-01-03
- 流行現場總線簡介(四) 2025-01-03
- 流行現場總線簡介(三) 2025-01-03
- 流行現場總線簡介(二) 2025-01-03
- 流行現場總線簡介(一) 2025-01-03
- 工業以太網與實時以太網 2025-01-03
- 工業以太網的產生與發展 2025-01-03
- 工業以太網的主要標準(四) 2025-01-03
- 工業以太網的主要標準(三) 2025-01-03
- 工業以太網的主要標準(二) 2025-01-03
- 工業以太網的主要標準(一) 2025-01-03
- 操作系統---PV操作 2025-01-03
聯系方式
- 電 話:18126392341
- 聯系人:梁濤
- 手 機:15267534595
- 微 信:15267534595