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