FPGA結構簡介

1、總體結構
FPGA內部最主要的、最需要關注的部件是CLB(Configurable Logic Block,可配置邏輯塊)、Input/Output Block(輸入/輸出塊)和BlockRAM(塊RAM)。
CLB是FPGA具有可編程能力的主要承擔者。通過配置這些CLB可以讓FPGA實現各種不同的邏輯功能。Input/Output Block分佈在FPGA的周邊,也具有可編程特性,可以配置支持各種不同的接口標準,如LVTTL、LVCMOS、PCI和LVDS等。BlockRAM是成塊的RAM,可以在設計中用於存儲數據,是設計的重要資源。在大規模設計選擇FPGA時,RAM資源是否夠用是重要的考慮因素。
除了CLB、Input/Output Block和BlockRAM以外,FPGA還有很多其他的功能單元,例如佈線資源、DCM(Digital Clock Manager,數字時鐘管理器)和Multiplier(乘法器)等。佈線資源在FPGA內部佔用硅片面積很大,爲FPGA部件提供靈活可配的連接;DCM模塊提供各種時鐘資源,包括多種分頻、移相後的時鐘;Multiplier爲18bit×18bit硬件乘法器,可以在一個時鐘週期內完成乘法運算。
在高級的FPGA中,還包含了嵌入式處理器、DSP模塊、以太網MAC、高速串行IO收發器等。
1.1 可配置邏輯塊CLB
Xilinx Virtex-5 FPGA的一個CLB包含兩個Slice。Slice內部包含4個LUT(查找表)、4個觸發器、多路開關及進位鏈等資源。部分Slice還包括分佈式RAM和32bit移位寄存器,這種Slice稱爲SLICEM,其他Slice稱爲SLICEL。
CLB內部的兩個Slice是相互獨立的,各自分別連接開關陣列(Switch Matrix),以便與通用佈線陣列(General routing Matrix)相連。
在Xilinx FPGA設計工具中,Slice的位置用“XmYn”表示,其中m爲Slice所在橫座標,一個CLB的兩個Slice的橫座標分別是m和m+1;n爲CLB的縱座標,一個CLB的兩個Slice有相同的n。Virtex-5左下角的Slice編號爲X0Y0。
實際上,查找表類似於一個ROM,容量是64bit,6個輸入作爲地址輸入,存儲的內容作爲布爾運算的結果。查找表中的內容由ISE生成並在FPGA配置時加載進去。

Slice中的觸發器可以配置成多種工作方式,例如是FF或Latch,同步復位或異步復位、復位高有效或低有效等。

CLB內部包含多個選擇器。CLB的選擇器與一般的選擇器不同,它們沒有選擇端。通路的選擇在FPGA配置後固定下來。

CLB內部還包含了一個重要的資源——進位鏈,其作用是方便加法器的實現。

SLICEM的結構與SLICEL的結構類似,最大的區別是使用了一個新的單元代替SLICE中的查找表。這個新的單元可以配置爲LUT、RAM、ROM或移位寄存器(SRL16/SRL32),從而可以實現LUT的邏輯功能,也能做存儲單元(多個單元組合起來可以提供更大的容量)和移位寄存器(提供延遲等功能)

CLB內部查找表、觸發器、多路器等基本單元的配置是由ISE自動完成,一般情況下不需要設計者干預。但是,如果認爲有必要,設計者可以通過ISE中集成的FPGA底層編輯器——FPGA Editor直接編輯CLB內部觸發器和多路器的配置。

SLICE指FPGA的組成單元,如xilinx的fpga的結構中,基本單元是LUT(查找表),由LUT組成SLICE(切片),由SLICE組成CLB,具體多少個LUT組成SLICE,多少個SLICE組成CLB由不同的器件類型決定。

1.2 輸入輸出模塊(Input/Output Block)

Input/Output Block 作用是爲FPGA提供內部資源與外圍電路之間的接口,提供輸入緩衝、輸出驅動、接口電平轉換、阻抗匹配、延遲控制等功能。高端FPGA的輸入/輸出模塊還提供了DDR輸入/輸出接口、高速串行接口(SERDES)(見注1)等功能。

Xilinx FPGA 的輸入/輸出模塊採用SelectIO技術(SelectIO是Xilinx公司的註冊商標),提供多達960個用戶IO,支持20多個單端和差分電平I/O標準;還支持DDR、DDR-2、SDRAM、QDR-II和RLDRAM-II等Memory接口標準。SelectIO經驗DCI(Digitally Controlled Imepedence,數字控制阻抗),提供有源I/O終端以實現阻抗匹配。

Virtex-5的Input/Output Block以Tile爲單位,IO Tile的概念與CLB有相似之處,同樣是一個較大的組成單元,內部包含多個相同單元。一個Tile包含兩個IOB、兩個ILOGIC/ISERDES單元和兩個OLOGIC/OSERDES單元。

IOB內部的主要組成部分是輸入/輸出Buffer和PAD(焊盤,在集成電路版圖上由金屬焊點和靜電防護二極管組成),提供輸入信號緩衝、輸出信號驅動等功能。

在Input/Output Block 中,每個ILOGIC/ISERDES 單元都可以配置爲ILOGIC或ISERDES。配置爲ILOGIC時,可以作爲常見的輸入邏輯單元,或作爲DDR接口的輸入端;配置爲ISERDES時,可以完成1到6的串並轉換,兩個ISERDES單元相連可以完成1到10的串並轉換。

類似地,每個OLOGIC/OSERDES 單元可以配置爲OLOGIC,實現常見的輸入邏輯單元,或作爲DDR接口的輸出端。也可以配置爲OSERDES,完成6到1的並串轉換,經過IOB和PAD驅動高速串行總線。兩個OSERDES單元相連可以完成10到1的並串轉換。

Input/Output Block中有IDELAY單元,可以提供精確的延遲,這個延遲不受工藝和溫度的影響。延遲共有64個抽頭,每個抽頭提供75ps的延遲,因此延遲的數值可以在0~4800ps之間進行選擇。

部分IO接口標準需要特定的Vcco和Vref電壓,這些電壓由FPGA外部電路提供,並連接到FPGA管腳,供多個I/O Tile共享。連接到同一組Vcco和Vref電壓的I/O Tile組成一個Bank(中文意思是“組”,但是通常直接用Bank表示更方便)。

1.3 塊RAM(BlockRAM)

Xilinx FPGA 內部成塊的RAM資源稱爲BlockRAM;根據器件系列不同,BlockRAM大小有4096bit(Virtex、VirtexE和Spartan系列)、18Kbit(Virtex-II、Spartan-3和Virtex-4系列)和38Kbit等3種(Virtex-5)。BlockRAM是真正的雙口RAM結構,有兩套讀寫數據、地址和控制總線。兩套總線的操作是完全獨立的,共享同一組存儲單元。BlockRAM的雙口RAM結構對於邏輯設計至關重要,它有兩套獨立的接口,可以方便地連接兩個其他設計單元,允許一個端口寫入數據的同時,另一個端口讀出數據,提高了數據吞吐率(Throughput)。

BlockRAM的內容除了在電路運行中重寫以外,也可以通過配置文件在FPGA上電配置時清零或初始化爲特定值。寫BlockRAM時,數據輸出端可以輸出新寫入的數據、被覆蓋的數據或保持不變。FIFO是邏輯設計中常用的功能單元,Virtex-5的BlockRAM具有FIFO專用邏輯,因此實現FIFO時將不需要額外的CLB資源,也不需要設計者自行設計FIFO邏輯控制電路,對BlockRAM進行配置即可。

BlockRAM的調用,一般通過CORE Generator進行,在CORE Generator的圖形界面中指定所需要RAM的數據寬度和深度、設置控制信號和初值,就可以生成設計者所需要的RAM(這些RAM通過調用BlockRAM實現),然後在項目RTL代碼中優化,即可進行仿真、綜合、佈局佈線。

可編程邏輯器件:
可編程硬件的基本思想是要得到一個通用電路,並可以針對特殊應用對該通用電路的功能進行編程實現。
通用FPGA芯片的基本結構和必要組件:
可編程器件包含了一組用來實現應用程序邏輯功能的細粒化功能塊,它們有時也被稱爲FPGA的織料(fabric)。邏輯功能塊通常基於查找表(LUT)結構(使它們能完成輸入的任意函數)。這些邏輯功能塊通常平鋪在網絡結構中,並通過在任意配置下都能使模塊被連接上的可編程矩陣相連。輸入輸出(I/O)塊將FPGA的核心部分及內部其他部分與外圍器件相連。佈線意味着基本上任何信號都可以被安排到器件的任意I/O引腳。
除了這些基本特點,大多數FPGA還提供了一些形式的時鐘同步,以控制與外部器件相關的時鐘信號的時序。

轉自博客:http://blog.sina.com.cn/s/blog_6a59174c0100kc1r.html

http://blog.sina.com.cn/s/blog_6a59174c0100kc1o.html

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