這篇文章將介紹FPGA的概念知識,將小白們引入到FPGA的硬件世界中,或許都知道FPGA的編程語言,有Verilog,VHDL,但是FPGA的內部架構到底是怎樣的呢?不了解硬件是沒法寫出出色的硬件功能的。為此,特別開設專題,介紹FPGA的硬件相關的內容。
FPGA(Field Programmable Gate Array)是在PAL、GAL等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。
Field Programmable Gate Array,其重點在于“Programmable ”,它是一種硬件編程,利用FPGA內部的邏輯單元,去構建硬件功能,和搭積木非常的相似。
從PLD看今天的FPGA
說到FPGA就不得不說其鼻祖PLD。PLD稱為可編程邏輯器件 英文全稱為:programmable logic device。早期的PLD,其作用與今天的FPGA大同小異,只是功能比FPGA弱得多。那么,說這么多,利用硬件編程語言編寫的“程序”到底是怎么讓積木搭起來的呢?接著往下看。
Fusible-link Technology
熔絲連接技術,同樣,也有反熔絲連接技術。為什么要講這個呢?因為,這個技術,就是搭積木的雙手。假如我們有一個簡單邏輯功能y=(&
)需要去實現,而內部的邏輯單元如下圖示例:
首先,這四個斷路的地方是可編程的連接點。
然后,在PLD可編程出廠時,每一路是有一個非常小的熔絲連接在一起。
通過編寫的程序,使其中的兩個目標連接點的熔絲斷開,使其形成目標功能。
這整個過程就是基于熔絲技術的器件的編程過程。當然,這只是一個示例,實際的過程比這復雜。但是這已經能夠形象的表示了這個積木是怎么搭的。雖然熔解鏈接技術在今天的FPGA中沒有使用,但它為理解這些技術奠定了基礎,所以我們將簡要地探討它。當你購買一個基于熔斷器的可編程設備時,所有的熔斷器最初都是完好無損的。這意味著,在非編程狀態下,示例函數的輸出總是邏輯0。關鍵在于設計工程師可以通過在設備輸入端施加相對高的電壓和電流脈沖來選擇性地去除不需要的熔斷器。
FPGA編程技術
當今FPGA的編程技術,主要有三種:
分別為SRAM編程技術,antifuse編程技術以及EPPROM或EEPPROM編程技術。
antifuse編程技術:作為熔融鏈路技術的一種直徑替代方案,我們有其對應的反熔絲,其中每個可配置路徑都有一個稱為反熔絲的關聯鏈接。在非程控狀態下,反熔斷器具有很高的電阻,可以認為是開路(導線的斷路)。
SRAM編程技術:分別有DRAM和SRAM技術,但是SRAM是目前占主導地位的FPGA技術。SRAM的特別之處就是,一旦值被寫入SRAM單元中,除非被特別指定修改,或者斷電,其值都是不會被改變的。
由上圖就很容易知道,這就是一個可指定通斷的“熔絲”。通斷的主要依據為SRAM單元中的值。
EPPROM或EEPPROM編程技術 :也稱之為FLASH編程技術,該技術相對上面兩個來說比較新。這一技術需要先了解其E2PROM的結構,內容還比較多,那就放到下一章再說。