事實上,MCU 對有些任務(wù)來說是很適合的,但對其它一些任務(wù)來說可能做的并不好。舉例來說,當需要并行執(zhí)行大量計算任務(wù)時,FPGA 可能會讓你喜出望外。
如果我們進一步放大,我們可以看到,每個可編程模塊都包含有許多數(shù)字功能。在這個例子中,我們可以見到一個三輸入的查找表(LUT)、一個復(fù)用器和一個觸發(fā)器,但重要的是我們要認識到,這些功能的數(shù)量和類型對不同系列的 FPGA 來說是會變化的。
觸發(fā)器可以被配置(編程)為寄存器或鎖存器;復(fù)用器可以被配置為選擇一個到邏輯塊的輸入或 LUT 的輸出;LUT 可以被配置為代表任何所要求的邏輯功能。在實際應(yīng)用中,即使最簡單的 FPGA 都會使用四輸入 LUT,而一些更大更復(fù)雜的器件甚至?xí)Q使用六、七或八輸入的 LUT,但為了簡單起見,我們還是討論三輸入版本。
我們會在以后的文章中討論各種類型的 FPGA 實現(xiàn)技術(shù)?,F(xiàn)在我們只需要知道,F(xiàn)PGA 內(nèi)部的可編程單元可以用反熔絲、閃存單元或 SRAM 內(nèi)存單元來實現(xiàn)。先讓我們看一個用反熔絲技術(shù)創(chuàng)建的 FPGA 吧。這是一種一次性可編程(OTP)技術(shù),這意味著一旦你編程了這個 FPGA,它將永遠保持這個狀態(tài)而不再改變。
對基于反熔絲技術(shù)的 FPGA 來說,編程器件相當于通過“硬件連線”將第一組復(fù)用器的輸入連接到實現(xiàn)目標邏輯功能所需的正確 0 或 1 值。我們使用這個 LUT 實現(xiàn)了前面那張圖隱含的公式 y=(a & b)|c。在實際應(yīng)用中,復(fù)用器可以用場效應(yīng)管的分支“樹”來實現(xiàn),但我們在這里真的不用擔心最底層的實現(xiàn)細節(jié)。另外一種非常常見的 FPGA 實現(xiàn)技術(shù)是使用 SRAM 配置單元。同樣,我們會在以后的文章中討論更多的細節(jié)。這里我們所要知道的僅是當電路板第一次上電時,基于 SRAM 的 FPGA 會加載配置信息(我們可以把這個過程想像為器件的編程)。
我沒有顯示 0 和 1 被加載進 SRAM 單元的那種機制,因為我不想讓問題變得復(fù)雜。出于這次討論的目的,我們真的無需擔心這種“魔術(shù)”是如何發(fā)生的。我在這里唯一要提的事(給你考慮的空間)是—使用一種被稱為部分再配置的技術(shù)—FPGA 的一部分可以發(fā)起對另一部分進行再配置(當然反過來也行)。對于具有微控制器和 / 或軟件背景的讀者來說,我們可以將這種技術(shù)想象為相當于自我修改代碼的硬件。這意味著這種技術(shù)是非常非常強大的,但也會帶來很難隔離和調(diào)試的問題。
FPGA 器件還包含有通用的輸入 / 輸出(GPIO)引腳和焊盤。通過配置單元,F(xiàn)PGA 器件內(nèi)的互連部分可以被編程為這樣:將器件的主輸入連接到一個或多個可編程邏輯塊的輸入。任何邏輯塊的輸出也可以用來驅(qū)動任何其它邏輯塊的輸入和 / 或 FPGA 器件的主輸出。另外,GPIO 引腳可以被配置為支持種類廣泛的 I/O 標準,包括電壓、終端阻抗、擺率等。
世界上第一塊 FPGA 與本文中討論的架構(gòu)非常類似。這塊 FPGA 就是賽靈思公司在 1985 年推出的 XC2064(是用 2um 工藝節(jié)點制造的),它包含有 8×8=64 的邏輯塊陣列,每個邏輯塊包含一個四輸入 LUT 和其它一些簡單功能。從那以后,F(xiàn)PGA 發(fā)展勢不可擋,正像我們看到的那樣,更為復(fù)雜的 FPGA 架構(gòu)
如果某個邏輯功能(比方說計數(shù)器)是用 FPGA 的可編程構(gòu)造實現(xiàn)的,那么這個功能可以被說成“軟功能”。相比之下,如果某個功能是直接用芯片實現(xiàn)的,則被說成“硬功能”。(隨著這些功能變得越來越大越來越復(fù)雜,我們一般稱它們?yōu)閮?nèi)核)。軟內(nèi)核的優(yōu)勢在于,你可以讓它們做你想讓它們做的任何事。硬內(nèi)核的優(yōu)勢是它們占用較少的硅片面積,具有較高的性能,并且功耗較低。最優(yōu)的解決方案是混合使用軟內(nèi)核(用可編程構(gòu)造實現(xiàn))和硬內(nèi)核(直接用硅片實現(xiàn))。
舉例來說,該器件可能包含數(shù)千個加法器、乘法器和數(shù)字信號處理(DSP)功能;數(shù)兆位的片上內(nèi)存,大量的高速串行互連(SERDES)收發(fā)器模塊,以及眾多的其它功能。
這是真正讓人興奮的事情,你可以用 FPGA 中的普通可編程構(gòu)造做的事情之一是,使用其中的一部分實現(xiàn)一個或多個軟處理器內(nèi)核。當然,你可以實現(xiàn)不同規(guī)模的處理器。舉例來說,你可以創(chuàng)建一個或多個 8 位的處理器,加上一個或多個 16 位或 32 位的軟處理器—所有處理器都在同一器件中。
一種情形是軟件開發(fā)人員捕獲他們的代碼,在 SoC FPGA 的 Cortex-A9 處理器上運行這些代碼,然后通過分析識別任何可能嚴重影響性能并成為瓶頸的功能。這些功能隨后可能就轉(zhuǎn)交給硬件設(shè)計工程師用可編程構(gòu)造來實現(xiàn),它們(這些功能,不是設(shè)計工程師)將使用較低的時鐘頻率提供明顯更高的性能,而且功耗更低。
更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<