事實上,,MCU 對有些任務來說是很適合的,,但對其它一些任務來說可能做的并不好。舉例來說,,當需要并行執(zhí)行大量計算任務時,,FPGA 可能會讓你喜出望外,。
如果我們進一步放大,我們可以看到,,每個可編程模塊都包含有許多數(shù)字功能,。在這個例子中,我們可以見到一個三輸入的查找表(LUT),、一個復用器和一個觸發(fā)器,,但重要的是我們要認識到,這些功能的數(shù)量和類型對不同系列的 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 架構
如果某個邏輯功能(比方說計數(shù)器)是用 FPGA 的可編程構造實現(xiàn)的,那么這個功能可以被說成“軟功能”,。相比之下,,如果某個功能是直接用芯片實現(xiàn)的,則被說成“硬功能”,。(隨著這些功能變得越來越大越來越復雜,,我們一般稱它們?yōu)閮群耍\泝群说膬?yōu)勢在于,,你可以讓它們做你想讓它們做的任何事,。硬內核的優(yōu)勢是它們占用較少的硅片面積,具有較高的性能,,并且功耗較低,。最優(yōu)的解決方案是混合使用軟內核(用可編程構造實現(xiàn))和硬內核(直接用硅片實現(xiàn))。
舉例來說,,該器件可能包含數(shù)千個加法器,、乘法器和數(shù)字信號處理(DSP)功能;數(shù)兆位的片上內存,,大量的高速串行互連(SERDES)收發(fā)器模塊,,以及眾多的其它功能。
這是真正讓人興奮的事情,你可以用 FPGA 中的普通可編程構造做的事情之一是,,使用其中的一部分實現(xiàn)一個或多個軟處理器內核,。當然,你可以實現(xiàn)不同規(guī)模的處理器,。舉例來說,,你可以創(chuàng)建一個或多個 8 位的處理器,加上一個或多個 16 位或 32 位的軟處理器—所有處理器都在同一器件中,。
一種情形是軟件開發(fā)人員捕獲他們的代碼,在 SoC FPGA 的 Cortex-A9 處理器上運行這些代碼,,然后通過分析識別任何可能嚴重影響性能并成為瓶頸的功能,。這些功能隨后可能就轉交給硬件設計工程師用可編程構造來實現(xiàn),它們(這些功能,,不是設計工程師)將使用較低的時鐘頻率提供明顯更高的性能,,而且功耗更低。
更多信息可以來這里獲取==>>電子技術應用-AET<<