天天看點

FPGA基礎知識了解

FPGA學習的一些誤區

FPGA入門必看資源

FPGA百度百科

FPGA基礎知識及其工作原理

高端設計工具為少有甚是沒有硬體設計技術的工程師和科學家提供現場可程式設計門陣列(FPGA)。無論你使用圖形化設計程式,ANSIC語言還是VHDL語言,如此複雜的合成工藝會不禁讓人去想FPGA真實的運作情況。在這個晶片中的程式在這些可設定矽片間到底是如何工作的。本文會使非數字化設計人員明白FPGA(現場可程式設計門陣列)的基礎知識及其工作原理。此資訊在使用高端設計工具時同樣十分有用,希望可以為了解這一特别技術提供一些線索。

  1.FPGA-現場可程式設計門陣列

  每一塊FPGA晶片都是由有限多個帶有可程式設計連接配接的預定義源組成來實作一種可重構數字電路。

FPGA基礎知識了解

  圖1.FPGA不同構成

  FPGA晶片說明書中,包含了可程式設計邏輯子產品的數量、固定功能邏輯子產品(如乘法器)的數目及存儲器資源(如嵌入式RAM)的大小。FPGA晶片中還有很多其它的部分,但是以上名額通常是為特定應用選擇和比較FPGA時,最重要的參考名額。

  在最底層,可配置邏輯子產品(如片或邏輯單元)有着兩種最基本的部件:觸發器和查找表(LUT)。這很重要,因為各種FPGA家族之是以各不相同,就是因為觸發器和查找表組合的方式不同。例如,Virtex-II系列的FPGA,它的片具有兩個查找表和兩個觸發器,而Virtex-5FPGA的片具有4個查找表和4個觸發器。查找表本身的結構也可能各不相同(4輸入或6輸入)。關于查找表工作原理的更多資訊将在後面的章節中給出。

  表1中列出了在NILabVIEWFPGA硬體目标中使用的FPGA的名額。邏輯門的數量是一種将FPGA晶片與ASIC技術進行比較的傳統方法,但是它并不能真實地表述FPGA内部的獨立單元的數量。這就是Xilinx公司沒有在新型Virtex-5系列中指定邏輯門數量的原因之一。

FPGA基礎知識了解

  表1.不同系列FPGA源規格

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

FPGA基礎知識了解

  圖2.載入5個信号的簡單布爾邏輯

  在通常情況下(LabVIEWSCTL-單周期定時環路外),圖2所示相應電路圖同圖3所示相近。

FPGA基礎知識了解

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

  雖然很難明白,但是實際上這裡建立了兩個并行分支的電路。最上面的5條黑線被回報到第一個分支,它在每個布爾操作間添加了觸發器。最下面的5條黑線構成了第二個邏輯鍊。其中一支路在每步操作之間增加了同步寄存器,另一條邏輯鍊是確定執行資料流的。本電路圖正常工作時總共需要12個觸發器和12個查找表。上端分支和每個元件将在以後章節分析。

  2.觸發器

FPGA基礎知識了解

  圖4.觸發器符号

觸發器是二進制移位寄存器,用于同步邏輯以及儲存時鐘(脈沖)周期内的邏輯狀态。在每個時間(脈沖)邊沿,觸發器在輸入時鎖定1(真)或0(假)值并且儲存此值直到下次時鐘(脈沖)邊沿。在正常情況下,LabVIEWFPGA在每次操作之間都設定一個觸發器,以保證有足夠的時間來執行每步操作。對此律的例外隻發生在SCTL結構中寫代碼的情況。在這個特殊的環路結構中,觸發器隻放置在閉環疊代的始末段,并且由程式設計者考慮定時因素來決定如何放置。對SCTL内代碼如何同步的更多内容将在以後章節中讨論。圖5表示的是圖3的上端分支,觸發器由紅色高亮表示。

FPGA基礎知識了解

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

  3.查找表

FPGA基礎知識了解

  圖6.雙四輸入查找表

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

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

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

FPGA基礎知識了解

  圖7.布爾型AND操作

FPGA基礎知識了解

  表2.布爾與門操作的真值表

  你可以認為輸入值是所有輸出值的數字索引,如表3所示。

FPGA基礎知識了解

  表3.布爾與門擦操作的真值查找表實作

  Virtex-II和Spartan-3系列FPGA晶片有着4輸入查找表來實作真正的4輸入信号的16種組合。圖8就是一個四輸入電路實作的例子。

FPGA基礎知識了解

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

  表4所示為使用雙四輸入查找表實作的相應的真值表。

FPGA基礎知識了解

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

  Virtex-5系列的FPGA使用雙六輸入查找表,可以通過6個不同輸入信号的64種組合來實作真值表。因為觸發器之間的組合邏輯十分複雜,是以在LabVIEWFPGA中使用SCTL也越來越重要。下一節将講述SCTL如何優化利用LabVIEW中的FPGA源。

  4.SCTL

  上幾節中使用的代碼例子假定代碼是設定在SCTL外部,并為保證執行同步資料量也同步了附加電路。SCTL是LabVIEWFPGA中一個特殊結構,生成一個更為優化的電路圖,以期望達到在一個時鐘(脈沖)周期内執行完所有邏輯電路分支。例如,若設定SCTL在40MHZ運作,則所有邏輯電路分支将在25ns内執行完畢。

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

FPGA基礎知識了解

  圖9.附有STCL的簡單布爾邏輯

FPGA基礎知識了解

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

  很明顯,這種實作方法簡單多了。在Virtex-II或Spartan-3系列FPGA中,觸發器間的邏輯需要至少2個4輸入查找表,如圖11所示。

FPGA基礎知識了解

  圖11.圖10中電路圖的雙四輸入查找表實作

  由于Virtex-5系列FPGA有着6輸入的查找表,使用者可以在一個查找表中實作相同數量的邏輯,如圖12所示。

FPGA基礎知識了解

  圖12.圖10中雙六輸入查找表實

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

  5.乘數器和DSP片

FPGA基礎知識了解

  圖13.乘數器功能

  看起來簡單的兩數相乘運算在數字電路中實作起來是十分複雜的,也是極為消耗資源的。為提供相關參考,圖14所示是一種使用組合邏輯電路實作4×4位元組乘數器的示意圖。

FPGA基礎知識了解

  圖14.兩個4位元組輸入相乘的電路圖

  試想兩個32位元組的數字相乘要通過2000多步操作才能得到結果。是以,FPGA預設了乘數器電路,在數學和信号處理應用中儲存對查找表和觸發器使用。Virtex-II和Spartan-3FPGA擁有18×18bit乘法器,是以兩個32位元組數字相乘的運算需要三個乘法器來實作。許多信号處理算法都包括連乘運算結果的功能,是以Virtex-5等高性能FPGA都預設被稱為DSP片的乘數器累加電路.這些預設處理元件,也被稱為DSP48片,包括25×18bit乘數器以及加法器電路,盡管您可單獨使用乘數器功能。表5所示為不同FPGA系列DSP決策。

FPGA基礎知識了解

  表5.不同FPGA的DSP源

  6.塊随機存取存儲器(RAM)

  選擇FPGA時,記憶源是另一個需要考慮的關鍵因素。嵌入FPGA晶片中的使用者自定義随機存取存儲器(RAM),對儲存資料設定或平行環路之間傳送數值很有幫助。基于FPGA系列,您可在16或36kb元件中設定闆載RAM,或者使用觸發器以數組來執行資料設定;然而,對于FPGA邏輯源來說,大型數組很快就變得十分"奢侈"。由100個32位元組元素數組可消耗Virtex-II1000FPGA中超過30%的觸發器,或者占用少于1%的嵌入式塊RAM。DSP算法通常需要追蹤整個資料塊或是複雜等式的系數,而在沒有闆載存儲器情況下,許多處理功能在FPGA晶片的硬體邏輯電路中都不适用。圖16所示為使用塊RAM讀寫存儲器的圖形化功能。

FPGA基礎知識了解

  圖15.用于讀寫存儲器的塊RAM函數

  同樣,你也可以使用記憶體塊,将一段完整周期存儲為數值和索引的順序表,為闆載信号發生器存儲周期性波形資料。輸出信号的最終頻率由檢索數值的速度決定,這樣您就可用此方法動态改變輸出頻率,而不需要輸入波形中的急劇變化。

FPGA基礎知識了解

  圖17.用于先進先出緩沖器的塊RAM功能

  FPGA固有的并行執行要求邏輯電路獨立元件可在不用時間脈沖下驅動。在不同運作速度下的邏輯電路之間傳遞資料是很棘手的。使用先進先出(FIFO)緩沖器時,闆載存儲器可用來是傳輸更加平穩。如圖16所示,使用者可以将FIFO緩沖器配置成不同大小以確定資料在FPGA晶片的非同步部件間不會丢失。表6所示為嵌入不同FPGA系列的使用者可設定快RAM。

FPGA基礎知識了解

  表6.不同FPGA的記憶源

  7.總結

  随着高端技術的發展以及新概念的深入概括,FPGA技術地采用将不斷增加。然而探究FPGA其中奧秘,感歎這矽片中在方框圖間彙編出的變化,也是十分重要的。在發展階段,如果您懂得如何利用和優化資源,比較和選擇觸發器、查找表、乘數器和塊RAM等硬體名額是十分有幫助的。這些基本的功能塊并不是包含所有資源的完整清單,而且這篇白皮書并沒有包含對所有FPGA部件的讨論。

轉載于:https://www.cnblogs.com/losing-1216/p/4994740.html