色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 給MCU工程師詳解FPGA硬件屬性

          給MCU工程師詳解FPGA硬件屬性

          作者: 時(shí)間:2018-08-13 來源:網(wǎng)絡(luò) 收藏

          我的許多朋友都是經(jīng)驗(yàn)豐富的嵌入式設(shè)計(jì)工程師,但他們都是微控制器(MCU)背景,因此對(duì)于是什么以及能做什么只有一個(gè)模糊的概念。如果問急了,他們會(huì)說“你可以通過配置讓它做不同的事情”諸如此類的話,但他們真的不是很清楚FPGA里面有什么,或者如何在設(shè)計(jì)中使用FPGA。

          本文引用地址:http://cafeforensic.com/article/201808/386541.htm

          事實(shí)上,MCU對(duì)有些任務(wù)來說是很適合的,但對(duì)其它一些任務(wù)來說可能做的并不好。舉例來說,當(dāng)需要并行執(zhí)行大量計(jì)算任務(wù)時(shí),F(xiàn)PGA可能會(huì)讓你喜出望外。在本文中我們將討論FPGA的硬件屬性。

          簡(jiǎn)單的FPGA構(gòu)造

          在集成電路領(lǐng)域人們經(jīng)常會(huì)聽到構(gòu)造(fabric)這個(gè)術(shù)語(yǔ),它指的是FPGA器件的底層基礎(chǔ)結(jié)構(gòu)。(作為一個(gè)興趣點(diǎn),單詞“構(gòu)造”來自中世紀(jì)英語(yǔ)fabryke,意思是“建造的某些東西”)。下面讓我們從FPGA中的內(nèi)核開始吧……

          如果我們仔細(xì)觀察FPGA封裝的內(nèi)部,我們將看到硅片(技術(shù)術(shù)語(yǔ)裸片)。表現(xiàn)為可編程邏輯塊陣列,如下圖所示。如果我們用放大鏡“放大查看”,我們可以看到這種構(gòu)造由沉浸于可編程互連“海洋”中的許多邏輯“島”(可編程邏輯塊)組成。

          圖1:簡(jiǎn)單的FPGA構(gòu)造。

          基本FPGA的一般性表示。

          是啊,我確實(shí)是用自己的雙手親自創(chuàng)作的這幅圖片,我因此感到非常自豪呢,非常感謝你加以關(guān)注。如果我們進(jìn)一步放大,我們可以看到,每個(gè)可編程模塊都包含有許多數(shù)字功能。在這個(gè)例子中,我們可以見到一個(gè)三輸入的查找表(LUT)、一個(gè)復(fù)用器和一個(gè)觸發(fā)器,但重要的是我們要認(rèn)識(shí)到,這些功能的數(shù)量和類型對(duì)不同系列的FPGA來說是會(huì)變化的。

          觸發(fā)器可以被配置(編程)為寄存器或鎖存器;復(fù)用器可以被配置為選擇一個(gè)到邏輯塊的輸入或LUT的輸出;LUT可以被配置為代表任何所要求的邏輯功能。

          更詳細(xì)地了解LUT

          上面所示的簡(jiǎn)單例子包含一個(gè)三輸入的查找表(LUT)。在實(shí)際應(yīng)用中,即使最簡(jiǎn)單的FPGA都會(huì)使用四輸入LUT,而一些更大更復(fù)雜的器件甚至?xí)Q使用六、七或八輸入的LUT,但為了簡(jiǎn)單起見,我們還是討論三輸入版本。

          我們會(huì)在以后的文章中討論各種類型的FPGA實(shí)現(xiàn)技術(shù)?,F(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)而不再改變。

          形象化介紹這種技術(shù)的最簡(jiǎn)單方法是用下圖所示級(jí)聯(lián)的2:1復(fù)用器(MUX)。對(duì)基于反熔絲技術(shù)的FPGA來說,編程器件相當(dāng)于通過“硬件連線”將第一組復(fù)用器的輸入連接到實(shí)現(xiàn)目標(biāo)邏輯功能所需的正確0或1值。下圖中所示的值反映的實(shí)際結(jié)果是,我們使用這個(gè)LUT實(shí)現(xiàn)了前面那張圖隱含的公式y(tǒng)=(a b)|c。在實(shí)際應(yīng)用中,復(fù)用器可以用場(chǎng)效應(yīng)管的分支“樹”來實(shí)現(xiàn),但我們?cè)谶@里真的不用擔(dān)心最底層的實(shí)現(xiàn)細(xì)節(jié)。

          圖2:輸入值經(jīng)“硬件連接的”反熔絲型LUT(左),輸入從SRAM單元饋入的SRAM型LUT(右)。

          另外一種非常常見的FPGA實(shí)現(xiàn)技術(shù)是使用SRAM配置單元。同樣,我們會(huì)在以后的文章中討論更多的細(xì)節(jié)。這里我們所要知道的僅是當(dāng)電路板第一次上電時(shí),基于SRAM的FPGA會(huì)加載配置信息(我們可以把這個(gè)過程想像為器件的編程)。作為這種配置的一部分,用作LUT復(fù)用器輸入的SRAM單元會(huì)被加載進(jìn)上圖所示的目標(biāo)0或1值。

          我沒有顯示0和1被加載進(jìn)SRAM單元的那種機(jī)制,因?yàn)槲也幌胱寙栴}變得復(fù)雜。出于這次討論的目的,我們真的無(wú)需擔(dān)心這種“魔術(shù)”是如何發(fā)生的。我在這里唯一要提的事(給你考慮的空間)是—使用一種被稱為部分再配置的技術(shù)—FPGA的一部分可以發(fā)起對(duì)另一部分進(jìn)行再配置(當(dāng)然反過來也行)。對(duì)于具有微控制器和/或軟件背景的讀者來說,我們可以將這種技術(shù)想象為相當(dāng)于自我修改代碼的硬件。這意味著這種技術(shù)是非常非常強(qiáng)大的,但也會(huì)帶來很難隔離和調(diào)試的問題。

          通用的輸入和輸出

          FPGA器件還包含有通用的輸入/輸出(GPIO)引腳和焊盤(圖1中沒有顯示)。通過配置單元,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)

          正如我們?cè)谇懊嬲f的那樣,賽靈思公司在1985年推出的第一塊FPGA—XC2064包含8×8=64的邏輯塊陣列,每個(gè)邏輯塊包含一個(gè)四輸入查找表及其它一些簡(jiǎn)單功能。由于它們的容量非常有限,因此早期的FPGA只用來執(zhí)行一些相對(duì)簡(jiǎn)單的任務(wù),比如集中一些膠合邏輯,或?qū)崿F(xiàn)基本的狀態(tài)機(jī)。然而隨著時(shí)間的推移,事情開始改變……

          隨著時(shí)間的推移和工藝節(jié)點(diǎn)的進(jìn)步,F(xiàn)PGA的容量和性能不斷得到提高,功耗卻不斷的下降。直到大約2006年以前廣泛使用的一直是四輸入查找表。事實(shí)上,在寫這篇文章之時(shí),較小的FPGA系列器件仍在使用四輸入的查找表,但一些高端器件可能使用六、七或八輸入的查找表。這些大家伙可能被用作一個(gè)大的查找表,或分裂成許多更小的功能,比如兩個(gè)四輸入的查找表或一個(gè)三輸入一個(gè)五輸入的查找表。在實(shí)際的高端器件中,這種可編程構(gòu)造可以描述相當(dāng)于百萬(wàn)級(jí)(有時(shí)甚至千萬(wàn)級(jí))的原始邏輯門。

          如果某個(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))。這樣,除了基于查找表的可編程構(gòu)造外,今天的FPGA可以利用以下介紹的各種硬內(nèi)核進(jìn)行性能增強(qiáng):

          圖3:更復(fù)雜的FPGA架構(gòu)。

          舉例來說,該器件可能包含數(shù)千個(gè)加法器、乘法器和數(shù)字信號(hào)處理(DSP)功能;數(shù)兆位的片上內(nèi)存,大量的高速串行互連(SERDES)收發(fā)器模塊,以及眾多的其它功能。

          帶嵌入式處理器的FPGA

          這是真正讓人興奮的事情……你可以用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位的軟處理器—所有處理器都在同一器件中。

          如果FPGA供應(yīng)商希望提供一個(gè)占用較少硅片面積、消耗較低功率但性能更高的處理器,解決方案是將它實(shí)現(xiàn)為硬內(nèi)核。一個(gè)非常令人興奮的開發(fā)成果是Altera和賽靈思等公司最近推出的SoC FPGA??紤]下面所示這個(gè)例子:

          圖4:一種新的SoC FPGA

          這個(gè)漂亮的小東西整合了一個(gè)完全以硬內(nèi)核方式實(shí)現(xiàn)的雙路ARM Cortex-A9微控制器子系統(tǒng)(運(yùn)行時(shí)鐘高達(dá)1GHz,包含浮點(diǎn)引擎,片上緩存,計(jì)數(shù)器,定時(shí)器等),以及種類廣泛的硬內(nèi)核接口功能(SPI,I2C,CAN等),還有一個(gè)硬內(nèi)核的動(dòng)態(tài)內(nèi)存控制器,所有這些組件都利用大量傳統(tǒng)的可編程構(gòu)造和大量的通用輸入輸出(GPIO)引腳進(jìn)行了性能增強(qiáng)。(即將在16nm節(jié)點(diǎn)推出的一款SoC FPGA據(jù)稱包含四內(nèi)核的64位ARM Cortex-A53處理器,雙內(nèi)核32位ARM Cortex-R5實(shí)時(shí)處理器,以及一個(gè)ARM Mali-400MP圖形處理器。這些可不是你祖母時(shí)候的FPGA哦!)

          傳統(tǒng)的嵌入式系統(tǒng)架構(gòu)師可能將其中一個(gè)器件放置在電路板上,并將它用作傳統(tǒng)的高性能雙內(nèi)核ARM Cortex-A9微控制器。當(dāng)電路板上電時(shí),硬微控制器內(nèi)核立即啟動(dòng),并在任何可編程構(gòu)造完成配置之前就可用了。這樣可以節(jié)省時(shí)間和精力,并讓軟件開發(fā)人員和硬件設(shè)計(jì)師同時(shí)開始開發(fā)。

          一種情形是軟件開發(fā)人員捕獲他們的代碼,在SoC FPGA的Cortex-A9處理器上運(yùn)行這些代碼,然后通過分析識(shí)別任何可能嚴(yán)重影響性能并成為瓶頸的功能。這些功能隨后可能就轉(zhuǎn)交給硬件設(shè)計(jì)工程師用可編程構(gòu)造來實(shí)現(xiàn),它們(這些功能,不是設(shè)計(jì)工程師)將使用較低的時(shí)鐘頻率提供明顯更高的性能,而且功耗更低。

          前面我們說過,硬內(nèi)核實(shí)現(xiàn)的功能(圖4所示的ARM Cortex-A9就是一種硬內(nèi)核)與等效的軟內(nèi)核相比具有更高的性能和更低的功耗。但現(xiàn)在我們又說如果在硬內(nèi)核處理器上運(yùn)行的軟件功能是個(gè)瓶頸,我們可以用可編程構(gòu)造來實(shí)現(xiàn),這樣它就能……你理解的沒錯(cuò),提供更高的性能和更低的功耗。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉