FPGA學習之基本結構


 如何學習FPGA中提到第一步:學習、了解FPGA結構,FPGA到底是什么東西,芯片里面有什么,不要開始就拿個開發板照着別人的東西去編程。既然要開始學習FPGA,那么就應該從其基本結構開始。以下內容是我學習過程中的整理的一些東西。主要來自:Xilinx中文網站,博客LAY Trust Jesus,博文FPGA學習筆記 ,博文FPGA基本結構

1.可編程邏輯器件

      從PLD的發展歷程來看,按照結構區分,前后共有4種可編程邏輯器件類型:PLA、PAL、CPLD和FPGA。PLA——PAL——CPLD是繼承的關系,然而FPGA是相對獨立的,采用了截然不同的設計方法。

 

    復雜可編程邏輯器件 (CPLD )由完全可編程與/或陣列以及宏單元庫構成。 與/或陣列可重編程,能夠執行眾多邏輯功能。宏單元是執行組合邏輯或時序邏輯的功能塊,同時還提供了真值或補碼輸出和以不同的路徑反饋等更高靈活性。CPLD的塊結構如下所示

    FPGA是由通過可編程互連連接的可配置邏輯塊 (CLB) 矩陣構成的可編程半導體器件。相對於專為特定設計定制構建的專用集成電路 (ASIC)而言,FPGA 能通過編程來滿足應用和功能要求。 雖然市面上也有一次性可編程 (OTP) FPGA,但絕大多數是基於 SRAM 的類型,可隨着設計的演化進行重編程。

 

FPGA Block Structure

    CPLD分解組合邏輯的功能很強,一個宏單元就可以分解十幾個甚至20-30多個組合邏輯輸入。而FPGA的一個LUT只能處理4輸入的組合邏輯,因此,PLD適合用於設計譯碼等復雜組合邏輯。 但FPGA的制造工藝確定了FPGA芯片中包含的LUT和觸發器的數量非常多,往往都是幾千上萬,PLD一般只能做到512個邏輯單元,而且如果用芯片價格除以邏輯單元數量,FPGA的平均邏輯單元成本大大低於PLD。 所以如果設計中使用到大量觸發器,例如設計一個復雜的時序邏輯,那么使用FPGA就是一個很好選擇。

2.FPGA和ASIC

image

3.FPGA結構及相關知識

SRAM

    SRAM是一種可編程技術,與之類似的還有Flash/E2PROM 編程技術,反熔絲編程技術(軍品和宇航級可能會用)。在FPGA中,SRAM是主流。

image

    最基本的5管SRAM單元結構如圖所示,通過傳輸管控制存儲信息的讀寫。當傳輸管導通時,SRAM單元內存儲的信息可由數據端讀取或改寫;當傳輸管截止時,存儲的信息被首尾相連的兩個反相器鎖定,由Q和Q'端輸出。理論上,SARM單元可被配置無數次。

    FPGA中的SRAM單元主要實現以下功能:作為多路開關、交叉開關、互連通道等可編程結構的控制端,對信號的傳輸路徑進行編程;對片內相對獨立的邏輯功能模塊(如可編程觸發器、用戶可編程I/O)進行配置;作為查找表(LookUp-Table,LUT)的存儲單元,用來實現FPGA的邏輯功能;使用SRAM存儲陣列作為嵌入式存儲器,實現復雜的數字信號處理和存儲功能。

    SRAM的缺點主要在於斷電后信息丟失,上電后需要重新配置。這個過程通過外部存儲進行,信息可能會被截取。同時,傳輸管是非理想的。

CLB

    CLB 是 FPGA 的基本邏輯單元。實際數量和特性會依器件的不同而改變,但是每個 CLB 都包含一個由 4 或 6 個輸入、一些選擇電路(多路復用器等)和觸發器組成的可配置開關矩陣。開關矩陣具有高度的靈活性,經配置可以處理組合型邏輯、移位寄存器或 RAM。

Basic Configurable Logic Block Structure

    CLB由Slices組成,Slices包含LUT,觸發器和相關邏輯。LUT即查找表本質上可以看成是一個RAM,對應於實現的不同邏輯功能,LUT有相應的輸入地址和存儲的數值。CLB可以配置為相應的邏輯模塊,也可以用來構成分布式RAM和ROM。

IOB

    目前的 FPGA 可支持許多種 I/O 標准,因而為您的系統提供了理想的接口橋接。FPGA 內的 I/O 按 bank 分組 (見下圖) ,每個 bank 能獨立支持不同的 I/O 標准。目前最先進的 FPGA 提供了十多個 I/O bank,能夠提供靈活的 I/O 支持。

Basic SelectIO (IOBs) Structure

    可編程輸入/輸出單元簡稱I/O單元,是芯片與外界電路的接口部分,完成不同電氣特性下對輸入/輸出信號的驅動與匹配要求,其示意結構如下圖所示。

    外部輸入信號可以通過IOB模塊的存儲單元輸入到FPGA的內部,也可以直接輸入FPGA 內部。當外部輸入信號經過IOB模塊的存儲單元輸入到FPGA內部時,其保持時間(Hold Time)的要求可以降低,通常默認為0。

互連

    CLB 提供了邏輯性能,靈活的互連布線則負責在 CLB 和 I/O 之間傳遞信號。布線有幾種類型,從設計用於專門實現 CLB 互連、到器件內的高速水平和垂直長線、再到時鍾與其它全局信號的全局低歪斜布線。除非另行說明,否則設計軟件會將互連布線任務隱藏起來,用戶根本看不到,從而大幅降低了設計復雜性。也就是說這個基本不用管。

image

存儲器,時鍾管理

   此外,大部分FPGA內部嵌入了塊RAM用來實現片上存儲;大多數 FPGA 都提供數字時鍾管理(所有 Xilinx FPGA 都具有此特性)。FPGA 提供了數字時鍾管理和鎖相環鎖定功能(DCM或PLL),不僅提供了精確時鍾綜合功能,而且能夠降低抖動和實現過濾。

4.Xilinx的FPGA

Xilinx Multi-Node Product Portfolio Offering

image

5.總結

    遇事多問幾個為什么,就會發現自己還有很多東西不懂,繼續努力!看到了一則新聞

深度學習算法有望在FPGA和超級計算機上運行,和我前段時間想的一樣,FPGA是很有很好的發明,學好FPGA是很有意義的!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM