FPGA深層解析

發(fā)布時(shí)間:2010-10-9 10:16    發(fā)布者:eetech
關(guān)鍵詞: FPGA , 解析 , 深層
高端設計工具為少有甚是沒(méi)有硬件設計技術(shù)的工程師和科學(xué)家提供現場(chǎng)可編程門(mén)陣列(FPGA)。無(wú)論你使用圖形化設計程序,ANSI C語(yǔ)言還是VHDL語(yǔ)言,如此復雜的合成工藝會(huì )不禁讓人去想FPGA真實(shí)的運作情況。在這個(gè)芯片中的程序在這些可設置硅片間到底是如何工作的。本書(shū)會(huì )使非數字化設計人員明白FPGA(現場(chǎng)可編程門(mén)陣列)的基礎知識及其工作原理。此信息在使用高端設計工具時(shí)同樣十分有用,希望可以為理解這一特別技術(shù)提供一些線(xiàn)索。

FPGA-現場(chǎng)可編程門(mén)陣列

每一塊FPGA芯片都是由有限多個(gè)帶有可編程連接的預定義源組成來(lái)實(shí)現一種可重構數字電路。



圖1.FPGA不同構成

FPGA芯片說(shuō)明書(shū)中,包含了可編程邏輯模塊的數量、固定功能邏輯模塊(如乘法器)的數目及存儲器資源(如嵌入式RAM)的大小。FPGA芯片中還有很多其它的部分,但是以上指標通常是為特定應用選擇和比較FPGA時(shí),最重要的參考指標。

在最底層,可配置邏輯模塊(如片或邏輯單元)有著(zhù)兩種最基本的部件:觸發(fā)器和查找表(LUT)。這很重要,因為各種FPGA家族之所以各不相同,就是因為觸發(fā)器和查找表組合的方式不同。例如,Virtex-II 系列的FPGA ,它的片具有兩個(gè)查找表和兩個(gè)觸發(fā)器,而Virtex-5 FPGA的片具有4個(gè)查找表和4個(gè)觸發(fā)器。查找表本身的結構也可能各不相同(4輸入或6輸入)。關(guān)于查找表工作原理的更多信息將在后面的章節中給出。

表1中列出了在NI LabVIEW FPGA硬件目標中使用的FPGA的指標。邏輯門(mén)的數量是一種將FPGA芯片與ASIC技術(shù)進(jìn)行比較的傳統方法,但是它并不能真實(shí)地表述FPGA內部的獨立單元的數量。這就是Xilinx公司沒(méi)有在新型Virtex-5系列中指定邏輯門(mén)數量的原因之一。

表1.不同系列FPGA源規格



為了更好地理解這些規格的意義,將編碼考慮為合成的數字電路模式。對任何一段合成代碼,或圖形化或文本形式,都有相應的電路圖反映邏輯組件該如何連線(xiàn)。通過(guò)一段簡(jiǎn)單布爾邏輯電路了解下相應的示意圖。圖2表示的是傳遞5個(gè)布爾信號并且可圖形化計算所得的二進(jìn)制值的功能組。



圖2.載入5個(gè)信號的簡(jiǎn)單布爾邏輯

在通常情況下(LabVIEW SCTL—單周期定時(shí)環(huán)路外),圖2所示相應電路圖同圖3所示相近。



圖3.為圖2中布爾邏輯的相應電路圖

雖然很難明白,但是實(shí)際上這里創(chuàng )建了兩個(gè)并行分支的電路。最上面的5條黑線(xiàn)被反饋到第一個(gè)分支,它在每個(gè)布爾操作間添加了觸發(fā)器。最下面的5條黑線(xiàn)構成了第二個(gè)邏輯鏈。其中一支路在每步操作之間增加了同步寄存器,另一條邏輯鏈是確保執行數據流的。本電路圖正常工作時(shí)總共需要12個(gè)觸發(fā)器和12個(gè)查找表。上端分支和每個(gè)元件將在以后章節分析。

觸發(fā)器



圖4.觸發(fā)器符號

觸發(fā)器是二進(jìn)制移位寄存器,用于同步邏輯以及保存時(shí)鐘(脈沖)周期內的邏輯狀態(tài)。在每個(gè)時(shí)間(脈沖)邊沿,觸發(fā)器在輸入時(shí)鎖定1(真)或0(假)值并且保存此值直到下次時(shí)鐘(脈沖)邊沿。在正常情況下,LabVIEW FPGA在每次操作之間都設置一個(gè)觸發(fā)器,以保證有足夠的時(shí)間來(lái)執行每步操作。對此律的例外只發(fā)生在SCTL結構中寫(xiě)代碼的情況。在這個(gè)特殊的環(huán)路結構中,觸發(fā)器只放置在閉環(huán)迭代的始末段,并且由編程者考慮定時(shí)因素來(lái)決定如何放置。對SCTL內代碼如何同步的更多內容將在以后章節中討論。圖5表示的是圖3的上端分支,觸發(fā)器由紅色高亮表示。



圖5.繪制由紅色高亮表示出觸發(fā)器的電路圖

查找表

圖6所示示意圖中的其他邏輯電路通過(guò)使用少量查找表形式的隨機存取存儲器實(shí)現。我們可以簡(jiǎn)單地假定FPGA中系統門(mén)的數量可參考與非門(mén)(NAND)以及或非門(mén)(NOR)的數量,但實(shí)際上,所有的組合邏輯(與門(mén)、或門(mén)、與非門(mén)、異或門(mén)等)都是通過(guò)查找表存儲器中的真值表來(lái)實(shí)現。真值表是輸出對應于每個(gè)輸入值組合的預定義表(現在卡諾圖的重要性在你的頭腦中可能會(huì )慢慢淡化)。以下是對數字邏輯電路課程的快速回顧:比如,圖7是布爾邏輯與門(mén)操作過(guò)程。



圖6.雙四輸入查找表

這是對數字邏輯課程的快速回顧:

例如,圖7中顯示了布爾型AND操作。



圖7.布爾型AND操作

表2.布爾與門(mén)操作的真值表




你可以認為輸入值是所有輸出值的數字索引,如表3所示。
 
3.布爾與門(mén)擦操作的真值查找表實(shí)現



Virtex-II和Spartan-3系列FPGA芯片有著(zhù)4輸入查找表來(lái)實(shí)現真正的4輸入信號的16種組合。圖8就是一個(gè)四輸入電路實(shí)現的例子。



圖8.輸入布爾邏輯的四信號電路

表4所示為使用雙四輸入查找表實(shí)現的相應的真值表。

表4.圖8中所示相應真值表


Virtex-5系列的FPGA使用雙六輸入查找表,可以通過(guò)6個(gè)不同輸入信號的64種組合來(lái)實(shí)現真值表。因為觸發(fā)器之間的組合邏輯十分復雜,所以在LabVIEW FPGA中使用SCTL也越來(lái)越重要。下一節將講述SCTL如何優(yōu)化利用LabVIEW中的FPGA源。

SCTL

上幾節中使用的代碼例子假定代碼是設置在SCTL外部,并為保證執行同步數據量也同步了附加電路。SCTL是LabVIEW FPGA中一個(gè)特殊結構,生成一個(gè)更為優(yōu)化的電路圖,以期望達到在一個(gè)時(shí)鐘(脈沖)周期內執行完所有邏輯電路分支。例如,若設置SCTL在40MHZ運行,則所有邏輯電路分支將在25ns內執行完畢。

如果在SCTL中設置前例中同樣的布爾邏輯電路(如圖9所示),則生成如圖10所示的相應電路示意圖。




圖9.附有STCL的簡(jiǎn)單布爾邏輯



圖10.圖9所示布爾邏輯相應的電路圖

很明顯,這種實(shí)現方法簡(jiǎn)單多了。在Virtex-II或Spartan-3系列FPGA中,觸發(fā)器間的邏輯需要至少2個(gè)4輸入查找表,如圖11所示。



圖11.圖10中電路圖的雙四輸入查找表實(shí)現

由于Virtex-5系列FPGA有著(zhù)6輸入的查找表,用戶(hù)可以在一個(gè)查找表中實(shí)現相同數量的邏輯,如圖12所示。



圖12.圖10中雙六輸入查找表實(shí)

本例中使用的SCTL(如圖9所示)設置在40MHZ下運行,這意味著(zhù)在任意觸發(fā)器之間邏輯電路必須在25ns內完成執行。電子在電路中傳播的速度決定了代碼執行的最大速度。關(guān)鍵路線(xiàn)是有最長(cháng)傳播延遲的邏輯電路分支,它決定了該部分電路中理論最大時(shí)鐘速率。Virtex-5 FPGA上的雙六輸入查找表不僅減少實(shí)現給定邏輯電路所需要的查找表總數,而且減少電子通過(guò)邏輯電路的傳播延遲(時(shí)間)。Virtex-5系列FPGA中的6輸入查找表不僅可以減少實(shí)現特定邏輯而需要的查找表的數量,而且可以降低邏輯中電流的傳輸延時(shí)。這意味著(zhù),您可簡(jiǎn)單地通過(guò)選擇一個(gè)基于Virtex-5的硬件指標設置相同的SCTL,追求更快的時(shí)間速度。

請查看下方白皮書(shū)的對策列表,獲取更多Virtex-5 FPGA相關(guān)信息。

乘數器和DSP



圖13.乘數器功能

看起來(lái)簡(jiǎn)單的兩數相乘運算在數字電路中實(shí)現起來(lái)是十分復雜的,也是極為消耗資源的。為提供相關(guān)參考,圖14所示是一種使用組合邏輯電路實(shí)現4×4字節乘數器的示意圖。



圖14.兩個(gè)4字節輸入相乘的電路圖

試想兩個(gè)32字節的數字相乘要通過(guò)2000多步操作才能得到結果。因此,FPGA預設了乘數器電路,在數學(xué)和信號處理應用中保存對查找表和觸發(fā)器使用。Virtex-II和Spartan-3 FPGA擁有18×18bit乘法器,所以?xún)蓚(gè)32字節數字相乘的運算需要三個(gè)乘法器來(lái)實(shí)現。許多信號處理算法都包括連乘運算結果的功能,因此Virtex-5等高性能FPGA都預設被稱(chēng)為DSP片的乘數器累加電路.這些預設處理組件,也被稱(chēng)為DSP48片,包括25×18bit乘數器以及加法器電路,盡管您可單獨使用乘數器功能。表5所示為不同FPGA系列DSP決策。
表5.不同FPGA的DSP源



塊隨機存取存儲器(RAM)

選擇FPGA時(shí),記憶源是另一個(gè)需要考慮的關(guān)鍵因素。嵌入FPGA芯片中的用戶(hù)自定義隨機存取存儲器(RAM),對儲存數據設置或平行環(huán)路之間傳送數值很有幫助;贔PGA系列,您可在16或36kb組件中設置板載RAM,或者使用觸發(fā)器以數組來(lái)執行數據設置;然而,對于FPGA邏輯源來(lái)說(shuō),大型數組很快就變得十分“奢侈”。由100個(gè)32字節元素數組可消耗Virtex-II 1000 FPGA中超過(guò)30%的觸發(fā)器,或者占用少于1%的嵌入式塊RAM。DSP算法通常需要追蹤整個(gè)數據塊或是復雜等式的系數,而在沒(méi)有板載存儲器情況下,許多處理功能在FPGA芯片的硬件邏輯電路中都不適用。圖16所示為使用塊RAM讀寫(xiě)存儲器的圖形化功能。



圖15.用于讀寫(xiě)存儲器的塊RAM函數

同樣,你也可以使用內存塊,將一段完整周期存儲為數值和索引的順序表,為板載信號發(fā)生器存儲周期性波形數據。輸出信號的最終頻率由檢索數值的速度決定,這樣您就可用此方法動(dòng)態(tài)改變輸出頻率,而不需要輸入波形中的急劇變化。



圖16.用于先進(jìn)先出緩沖器的塊RAM功能

FPGA固有的并行執行要求邏輯電路獨立元件可在不用時(shí)間脈沖下驅動(dòng)。在不同運行速度下的邏輯電路之間傳遞數據是很棘手的。使用先進(jìn)先出(FIFO)緩沖器時(shí),板載存儲器可用來(lái)是傳輸更加平穩。如圖16所示,用戶(hù)可以將FIFO緩沖器配置成不同大小以確保數據在FPGA芯片的非同步部件間不會(huì )丟失。表6所示為嵌入不同FPGA系列的用戶(hù)可設置快RAM。

表6.不同FPGA的記憶源



總結

隨著(zhù)高端技術(shù)的發(fā)展以及新概念的深入概括,FPGA技術(shù)地采用將不斷增加。然而探究FPGA其中奧秘,感嘆這硅片中在方框圖間匯編出的變化,也是十分重要的。在發(fā)展階段,如果您懂得如何利用和優(yōu)化資源,比較和選擇觸發(fā)器、查找表、乘數器和塊RAM等硬件指標是十分有幫助的。這些基本的功能塊并不是包含所有資源的完整清單,而且這篇白皮書(shū)并沒(méi)有包含對所有FPGA部件的討論。用戶(hù)可以通過(guò)下面的推薦資源,繼續學(xué)習關(guān)于FPGA和數字硬件設計的知識。
本文地址:http://selenalain.com/thread-30948-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页