FPGA series # FPGA內部資源

勿忘初心,好好學習。

FPGA 的基本結構包括7個部分:

  • 可編程輸入輸出單元IOB(Input Output Block)
  • 可配置邏輯塊CLB(Configurable Logic Block)
  • 佈線資源(內部連線 Interconnect)
  • 數字時鐘管理模塊(DCM)
  • 嵌入式塊RAM(BRAM)
  • 內嵌專用硬核
  • 底層內嵌功能單元
    常見的內部結構圖有這樣兩張:

0
1

Part One

對這7個部分做一個簡單的介紹:

1. 可編程輸入輸出單元IOB
  可編程輸入/輸出單元簡稱I/O單元,是芯片與外界電路的接口部分,完成不同電氣特性下對輸入/輸出信號的驅動與匹配要求。 FPGA內的I/O按組分類,每組都能夠獨立地支持不同的I/O標準。通過軟件的靈活配置,可適配不同的電氣標準與I/O物理特性,可以調整驅動電流的大 小,可以改變上、下拉電阻。目前,I/O口的頻率也越來越高,一些高端的FPGA通過DDR寄存器技術可以支持高達2Gbps的數據速率。
  外部輸入信號可以通過IOB模塊的存儲單元輸入到FPGA的內部,也可以直接輸入FPGA 內部。當外部輸入信號經過IOB模塊的存儲單元輸入到FPGA內部時,其保持時間(Hold Time)的要求可以降低,通常默認爲0。
   爲了便於管理和適應多種電器標準,FPGA的IOB被劃分爲若干個組(bank),每個bank的接口標準由其接口電壓VCCO決定,一個bank只能有 一種VCCO,但不同bank的VCCO可以不同。只有相同電氣標準的端口才能連接在一起,VCCO電壓相同是接口標準的基本條件。

2. 可配置邏輯塊CLB
  CLB是FPGA(xilinx)內的基本邏輯單元,CLB的實際數量和特性會因爲器件的不同而不同,但是每個CLB都包含一個可配置開關矩陣,此矩陣由4或6個輸入、一些選型電路(MUX)和觸發器組成。開關矩陣是高度靈活的,可以對其進行配置以組成組合邏輯、移位寄存器或RAM。

3. 佈線資源 Interconnect
  佈線資源連通FPGA內部的所有單元,而連線的長度和工藝決定着信號在連線上的驅動能力和傳輸速度。FPGA芯片內部有着豐富的佈線資源,根據工藝、長 度、寬度和分佈位置的不同而劃分爲4類不同的類別。第一類是全局佈線資源,用於芯片內部全局時鐘和全局復位/置位的佈線;第二類是長線資源,用以完成芯片 Bank間的高速信號和第二全局時鐘信號的佈線;第三類是短線資源,用於完成基本邏輯單元之間的邏輯互連和佈線;第四類是分佈式的佈線資源,用於專有時 鍾、復位等控制信號線。
  在實際中設計者不需要直接選擇佈線資源,佈局佈線器可自動地根據輸入邏輯網表的拓撲結構和約束條件選擇佈線資源來連通各個模塊單元。從本質上講,佈線資源的使用方法和設計的結果有密切、直接的關係。

4. 數字時鐘管理模塊DCM
  業內大多數FPGA均提供數字時鐘管理(Xilinx的全部FPGA均具有這種特性)。Xilinx推出最先進的FPGA提供數字時鐘管理和相位環路鎖定。相位環路鎖定能夠提供精確的時鐘綜合,且能夠降低抖動,並實現過濾功能。

5. 嵌入式塊RAM(BRAM)
  大多數FPGA都具有內嵌的塊RAM,這大大拓展了FPGA的應用範圍和靈活性。塊RAM可被配置爲單端口RAM、雙端口RAM、內容地址存儲器 (CAM)以及FIFO等常用存儲結構。RAM、FIFO是比較普及的概念,在此就不冗述。CAM存儲器在其內部的每個存儲單元中都有一個比較邏輯,寫入CAM中的數據會和內部的每一個數據進行比較,並返回與端口數據相同的所有數據的地址,因而在路由的地址交換器中有廣泛的應用。
  除了塊RAM,還可以將 FPGA中的LUT靈活地配置成RAM、ROM和FIFO等結構。FPGA芯片內有兩種存儲器資源:一種叫block ram,另一種是由LUT配置成的內部存儲器(也就是分佈式ram)。Block ram由一定數量固定大小的存儲塊構成的,使用BLOCK RAM資源不佔用額外的邏輯資源,並且速度快。但是使用的時候消耗的BLOCK RAM資源是其塊大小的整數倍。在實際應用中,芯片內部塊RAM的數量也是選擇芯片的一個重要因素。
  例如:單片塊RAM的容量爲18k比特,即位寬爲18比特、深度爲1024,可以根據需要改變其位寬和深度,但要滿足兩個原則:首先,修改後的容量(位寬 深度)不能大於18k比特;其次,位寬最大不能超過36比特。當然,可以將多片塊RAM級聯起來形成更大的RAM,此時只受限於芯片內塊RAM的數量,而不再受上面兩條原則約束。

6. 內嵌專用硬核
  內嵌功能模塊主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等軟處理核(Soft Core)。現在越來越豐富的內嵌功能單元,使得單片FPGA成爲了系統級的設計工具,使其具備了軟硬件聯合設計的能力,逐步向SOC平臺過渡。
  DLL和PLL具有類似的功能,可以完成時鐘高精度、低抖動的倍頻和分頻,以及佔空比調整和移相等功能。Xilinx公司生產的芯片上集成了 DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同時集成了PLL和DLL。PLL 和DLL可以通過IP核生成的工具方便地進行管理和配置。

7. 底層內嵌功能單元
  內嵌專用硬核是相對底層嵌入的軟核而言的,指FPGA處理能力強大的硬核(Hard Core),等效於ASIC電路。爲了提高FPGA性能,芯片生產商在芯片內部集成了一些專用的硬核。例如:爲了提高FPGA的乘法速度,主流的FPGA 中都集成了專用乘法器;爲了適用通信總線與接口標準,很多高端的FPGA內部都集成了串並收發器(SERDES),可以達到數十Gbps的收發速度。 Xilinx公司的高端產品不僅集成了Power PC系列CPU,還內嵌了DSP Core模塊,其相應的系統級設計工具是EDK和Platform Studio,並依此提出了片上系統(System on Chip)的概念。通過PowerPC、Miroblaze、Picoblaze等平臺,能夠開發標準的DSP處理器及其相關應用,達到SOC的開發目的。

  • 軟核
      軟核在EDA設計領域指的是綜合之前的寄存器傳輸級(RTL)模型;具體在FPGA設計中指的是對電路的硬件語言描述,包括邏輯描述、網表和幫助文檔等。 軟核只經過功能仿真,需要經過綜合以及佈局佈線才能使用。其優點是靈活性高、可移植性強,允許用戶自配置;缺點是對模塊的預測性較低,在後續設計中存在發 生錯誤的可能性,有一定的設計風險。軟核是IP核應用最廣泛的形式。
  • 固核
      固核在EDA設計領域指的是帶有平面規劃信息的網表;具體在FPGA設計中可以看做帶有佈局規劃的軟核,通常以RTL代碼和對應具體工藝網表的混合形式提 供。將RTL描述結合具體標準單元庫進行綜合優化設計,形成門級網表,再通過佈局佈線工具即可使用。和軟核相比,固核的設計靈活性稍差,但在可靠性上有較 大提高。目前,固核也是IP核的主流形式之一。
  • 硬核
      硬核在EDA設計領域指經過驗證的設計版圖;具體在FPGA設計中指佈局和工藝固定、經過前端和後端驗證的設計,設計人員不能對其修改。不能修改的原因有 兩個:首先是系統設計對各個模塊的時序要求很嚴格,不允許打亂已有的物理版圖;其次是保護知識產權的要求,不允許設計人員對其有任何改動。IP硬核的不許 修改特點使其複用有一定的困難,因此只能用於某些特定應用,使用範圍較窄。

Part Two

詳解CLB
  FPGA採用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內部包括CLB、IOB、Interconnect三個部分。 FPGA中的基本邏輯單元是CLB模塊,一個CLB模塊一般包含若干個基本的查找表、寄存器和多路選擇器資源,因此FPGA中的邏輯表達式基於LUT的。 (另:FPGA內部的編程信息一般存儲在SRAM單元中,因此通常的FPGA都是基於SRAM的,所以掉電後信息會丟失,下次上電需要先配置才能使用。)
  典型的CLB結構示意圖:
3
4
  CLB包含一個可配置開關矩陣,此矩陣有選型電路(多路複用器),觸發器和4或6個輸入組成。在Xilinx公司的FPGA器件中,CLB由多個(一般爲4個或2個)相同的slice和附加邏輯構成。每個CLB模塊不僅可以用於實現組合邏輯和時序邏輯,還可以配置爲分佈式RAM和分佈式ROM。SLICE分爲SLICEL(L:Logic)和SLICEM(M:Memory),因此CLB可分爲CLBLL和CLBLM兩類。SLICEL和SLICEM內部都包含4個6輸入查找表(LUT6)、3個數據選擇器(MUX)、1個進位鏈(carry chain)和8個觸發器(Flip-Flop)。
  5
  Slice是Xilinx公司定義的基本邏輯單位,一個Slice由兩個4輸入的函數、進位邏輯、算術邏輯、存儲邏輯和函數複用器組成。算術邏輯包括一個異或門(XORG)和一個專用與門(MULTAND),一個異或門可以使一個Slice實現 2bit全加操作,專用與門用於提高乘法器的效率;進位邏輯由專用進位信號和函數複用器(MUXC)組成,用於實現快速的算術加減法操作;4輸入函數發生 器用於實現4輸入LUT、分佈式RAM或16比特移位寄存器(Virtex-5系列芯片的Slice中的兩個輸入函數爲6輸入,可以實現6輸入LUT或 64比特移位寄存器);進位邏輯包括兩條快速進位鏈,用於提高CLB模塊的處理速度。Slice內部結構如圖所示:
2
  一個CLB由2個SLICE構成,一個SLICE含有4個6輸入LUT,所以LUT=8*CLB。
 6
附:7系FPGA datasheet

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章