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