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