FPGA工作原理
電源類型
FPGA電源要求輸出電壓范圍從1.2V到5V,輸出電流范圍從數十毫安到數安培。可用三種電源:低壓差(LDO)線性穩壓器、開關式DC-DC穩壓器和開關式電源模塊。最終選擇何種電源取決于系統、系統預算和上市時間要求。 如果電路板空間是首要考慮因素,低輸出噪聲十分重要,或者系統要求對輸入電壓變化和負載瞬變做出快速響應,則應使用LDO穩壓器。LDO功效比較低(因為是線性穩壓器),只能提供中低輸出電流。輸入電容通常可以降低LDO輸入端的電感和噪聲。LDO輸出端也需要電容,用來處理系統瞬變,并保持系統穩定性。也可以使用雙輸出LDO,同時為VCCINT和VCCO供電。 如果在設計中效率至關重要,并且系統要求高輸出電流,則開關式穩壓器占優勢。開關電源的功效比高于LDO,但其開關電路會增加輸出噪聲。與LDO不同,開關式穩壓器需利用電感來實現DC-DC轉換。要求
為確保正確上電,內核電壓VCCINT的緩升時間必須在制造商規定的范圍內。對于一些FPGA,由于VCCINT會在晶體管閾值導通前停留更多時間,因此過長的緩升時間可能會導致啟動電流持續較長時間。如果電源向FPGA提供大電流,則較長的上電緩升時間會引起熱應力。ADI公司的DC-DC穩壓器提供可調軟啟動,緩升時間可以通過外部電容進行控制。緩升時間典型值在20ms至100ms范圍內。 許多FPGA沒有時序控制要求,因此VCCINT、VCCO和VCCAUX可以同時上電。如果這一點無法實現,上電電流可以稍高。時序要求依具體FPGA而異。對于一些FPGA,必須同時給VCCINT和VCCO供電。對于另一些FPGA,這些電源可按任何順序接通。多數情況下,先給VCCINT后給VCCO供電是一種較好的做法。 當VCCINT在0.6V至0.8V范圍內時,某些FPGA系列會產生上電涌入電流。在此期間,電源轉換器持續供電。這種應用中,因為器件需通過降低輸出電壓來限制電流,所以不推薦使用返送電流限制。但在限流電源解決方案中,一旦限流電源所供電的電路電流超過設定的額定電流,電源就會將該電流限制在額定值以下。配電結構
集中式電源結構[2]
對于高速、高密度FPGA器件,保持良好的信號完整性對于實現可靠、可重復的設計十分關鍵。適當的電源旁路和去耦可以改善整體信號完整性。如果去耦不充分,邏輯轉換將會影響電源和地電壓,導致器件工作不正常。此外,采用分布式電源結構也是一種主要解決方案,給FPGA供電時可以將電源電壓偏移降至最低。 在傳統電源結構中,AC/DC或DC/DC轉換器位于一個地方,并提供多 個輸出電壓,在整個系統內分配。這種設計稱為集中式電源結構(CPA),見左圖。以高電流分配低電壓時,銅線或PCB軌道會產生嚴重的電阻損耗,CPA就會發生問題。分布式電源結構
CPA的替代方案是分布式電源結構(DPA),見左圖。采用DPA時,整個系統內僅分配一個半穩壓的DC電壓,各DC/DC轉換器(線性或開關式)與各負載相鄰。DPA中,DC/DC轉換器與負載(例如FPGA)之間的距離近得多,因而線路電阻和配線電感引起的電壓下降得以減小。這種為負載提供本地電源的方法稱為負載點(POL)。 芯片結構 主流的FPGA仍是基于查找表技術的,已經遠遠超出了先前版本的基本性能,并且整合了常用功能(如RAM、時鐘管理和DSP)的硬核(ASIC型)模塊。如圖1-1所示(注:圖1-1只是一個示意圖,實際上每一個系列的FPGA都有其相應的內部結構),FPGA芯片主 要由7部分完成,分別為:可編程輸入輸出單元、基本可編程邏輯單元、完整的時鐘管理、嵌入塊式RAM、豐富的布線資源、內嵌的底層功能單元和內嵌專用硬件模塊。 圖1-1 FPGA芯片的內部結構FPGA芯片的內部結構
每個模塊的功能如下: 1. 可編程輸入輸出單元(IOB) 可編程輸入/輸出單元簡稱I/O單元,是芯片與外界電路的接口部分,完成不同電氣特性下對輸入/輸出信號的驅動與匹配要求,其示意結構如圖1-2所示。FPGA內的I/O按組分類,每組都能夠獨立地支持不同的I/O標準。通過軟件的靈活配置,可適配不同的電氣標準與I/O物理特性,可以調整驅動電流的大小,可以改變上、下拉電阻。I/O口的頻率也越來越高,一些高端的FPGA通過DDR寄存器技術可以支持高達2Gbps的數據速率。 圖1-2 典型的IOB內部結構示意圖典型的IOB內部結構示意圖
外部輸入信號可以通過IOB模塊的存儲單元輸入到FPGA的內部,也可以直接輸入FPGA 內部。當外部輸入信號經過IOB模塊的存儲單元輸入到FPGA內部時,其保持時間(Hold Time)的要求可以降低,通常默認為0。 為了便于管理和適應多種電器標準,FPGA的IOB被劃分為若干個組(bank),每個bank的接口標準由其接口電壓VCCO決定,一個bank只能有 一種VCCO,但不同bank的VCCO可以不同。只有相同電氣標準的端口才能連接在一起,VCCO電壓相同是接口標準的基本條件。2. 可配置邏輯塊(CLB) CLB是FPGA內的基本邏輯單元。CLB的實際數量和特性會依器件的不同而不同,但是每個CLB都包含一個可配置開關矩陣,此矩陣由4或6個輸入、一些選型電路(多路復用器等)和觸發器組成。開關矩陣是高度靈活的,可以對其進行配置以便處理組合邏輯、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多個(一般為4個或2個)相同的Slice和附加邏輯構成,如圖1-3所示。每個CLB模塊不僅可以用于實現組合邏輯、時序邏輯,還可以配置為分布式RAM和分布式ROM。 圖1-3 典型的CLB結構示意圖
典型的CLB結構示意圖
Slice是Xilinx公司定義的基本邏輯單位,其內部結構如圖1-4所示,一個Slice由兩個4輸入的函數、進位邏輯、算術邏輯、存儲邏輯和函數復用器組成。算術邏輯包括一個異或門(XORG)和一個專用與門(MULTAND),一個異或門可以使一個Slice實現 2bit全加操作,專用與門用于提高乘法器的效率;進位邏輯由專用進位信號和函數復用器(MUXC)組成,用于實現快速的算術加減法操作;4輸入函數發生 器用于實現4輸入LUT、分布式RAM或16比特移位寄存器(Virtex-5系列芯片的Slice中的兩個輸入函數為6輸入,可以實現6輸入LUT或 64比特移位寄存器);進位邏輯包括兩條快速進位鏈,用于提高CLB模塊的處理速度。 圖1-4 典型的4輸入Slice結構示意圖典型的4輸入Slice結構示意圖
3. 數字時鐘管理模塊(DCM) 業內大多數FPGA均提供數字時鐘管理(Xilinx的全部FPGA均具有這種特性)。Xilinx推出最先進的FPGA提供數字時鐘管理和相位環路鎖定。相位環路鎖定能夠提供精確的時鐘綜合,且能夠降低抖動,并實現過濾功能。 4.嵌入式塊RAM(BRAM) 大多數FPGA都具有內嵌的塊RAM,這大大拓展了FPGA的應用范圍和靈活性。塊RAM可被配置為單端口RAM、雙端口RAM、內容地址存儲器 (CAM)以及FIFO等常用存儲結構。RAM、FIFO是比較普及的概念,在此就不冗述。CAM存儲器在其內部的每個存儲單元中都有一個比較邏輯,寫入 CAM中的數據會和內部的每一個數據進行比較,并返回與端口數據相同的所有數據的地址,因而在路由的地址交換器中有廣泛的應用。除了塊RAM,還可以將 FPGA中的LUT靈活地配置成RAM、ROM和FIFO等結構。在實際應用中,芯片內部塊RAM的數量也是選擇芯片的一個重要因素。 單片塊RAM的容量為18k比特,即位寬為18比特、深度為1024,可以根據需要改變其位寬和深度,但要滿足兩個原則:首先,修改后的容量(位寬 深度)不能大于18k比特;其次,位寬最大不能超過36比特。當然,可以將多片塊RAM級聯起來形成更大的RAM,此時只受限于芯片內塊RAM的數量,而不再受上面兩條原則約束。 5. 豐富的布線資源 布線資源連通FPGA內部的所有單元,而連線的長度和工藝決定著信號在連線上的驅動能力和傳輸速度。FPGA芯片內部有著豐富的布線資源,根據工藝、長度、寬度和分布位置的不同而劃分為4類不同的類別。第一類是全局布線資源,用于芯片內部全局時鐘和全局復位/置位的布線;第二類是長線資源,用以完成芯片 Bank間的高速信號和第二全局時鐘信號的布線;第三類是短線資源,用于完成基本邏輯單元之間的邏輯互連和布線;第四類是分布式的布線資源,用于專有時鐘、復位等控制信號線。 在實際中設計者不需要直接選擇布線資源,布局布線器可自動地根據輸入邏輯網表的拓撲結構和約束條件選擇布線資源來連通各個模塊單元。從本質上講,布線資源的使用方法和設計的結果有密切、直接的關系。 6. 底層內嵌功能單元 內嵌功能模塊主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等軟處理核(SoftCore)。越來越豐富的內嵌功能單元,使得單片FPGA成為了系統級的設計工具,使其具備了軟硬件聯合設計的能力,逐步向SOC平臺過渡。 DLL和PLL具有類似的功能,可以完成時鐘高精度、低抖動的倍頻和分頻,以及占空比調整和移相等功能。Xilinx公司生產的芯片上集成了 DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同時集成了PLL和DLL。PLL 和DLL可以通過IP核生成的工具方便地進行管理和配置。DLL的結構如圖1-5所示。 圖1-5 典型的DLL模塊示意圖典型的DLL模塊示意圖
7. 內嵌專用硬核 內嵌專用硬核是相對底層嵌入的軟核而言的,指FPGA處理能力強大的硬核(Hard Core),等效于ASIC電路。為了提高FPGA性能,芯片生產商在芯片內部集成了一些專用的硬核。例如:為了提高FPGA的乘法速度,主流的FPGA 中都集成了專用乘法器;為了適用通信總線與接口標準,很多高端的FPGA內部都集成了串并收發器(SERDES),可以達到數十Gbps的收發速度。 Xilinx公司的高端產品不僅集成了Power PC系列CPU,還內嵌了DSP Core模塊,其相應的系統級設計工具是EDK和Platform Studio,并依此提出了片上系統(System on Chip)的概念。通過PowerPC、Microblaze、Picoblaze等平臺,能夠開發標準的DSP處理器及其相關應用,達到SOC的開發目的。 基本特點 1)采用FPGA設計ASIC電路(專用集成電路),用戶不需要投片生產,就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。 3)FPGA內部有豐富的觸發器和I/O引腳。 4)FPGA是ASIC電路中設計周期最短、開發費用最低、風險最小的器件之一。 5) FPGA采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容。 可以說,FPGA芯片是小批量系統提高系統集成度、可靠性的最佳選擇之一。 FPGA是由存放在片內RAM中的程序來設置其工作狀態的,因此,工作時需要對片內的RAM進行編程。用戶可以根據不同的配置模式,采用不同的編程方式。 加電時,FPGA芯片將EPROM中數據讀入片內編程RAM中,配置完成后,FPGA進入工作狀態。掉電后,FPGA恢復成白片,內部邏輯關系消失,因此,FPGA能夠反復使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當需要修改FPGA功能時,只需換一片EPROM即可。這樣,同一片FPGA,不同的編程數據,可以產生不同的電路功能。因此,FPGA的使用非常靈活。查找表的原理與結構
查找表(Look-Up-Table)簡稱為LUT,LUT本質上就是一個RAM。目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成一個有4位地址線的的RAM。當用戶通過原理圖或HDL語言描述了一個邏輯電路以后,PLD/FPGA開發軟件會自動計算邏輯電路的所有可能結果,并把真值表(即結果)事先寫入RAM,這樣,每輸入一個信號進行邏輯運算就等于輸入一個地址進行查表,找出地址對應的內容,然后輸出即可。
下面給出一個四輸入與非門電路的例子來說明LUT實現邏輯功能的原理。
表給出一個使用LUT實現四輸入與門電路的真值表。
表??輸入與門的真值表
從中可以看到,LUT具有和邏輯電路相同的功能。實際上,LUT具有更快的執行速度和更大的規模。
3.1.2查找表結構的FPGA邏輯實現原理
我們還是以這個電路的為例:
圖??四輸入與門電路圖
A,B,C,D由FPGA芯片的管腳輸入后進入可編程連線,然后作為地址線連到到LUT,LUT中已經事先寫入了所有可能的邏輯結果,通過地址查找到相應的數據然后輸出,這樣組合邏輯就實現了。該電路中D觸發器是直接利用LUT后面D觸發器來實現。時鐘信號CLK由I/O腳輸入后進入芯片內部的時鐘專用通道,直接連接到觸發器的時鐘端。觸發器的輸出與I/O腳相連,把結果輸出到芯片管腳。這樣PLD就完成了圖所示電路的功能。(以上這些步驟都是由軟件自動完成的,不需要人為干預)
這個電路是一個很簡單的例子,只需要一個LUT加上一個觸發器就可以完成。對于一個LUT無法完成的的電路,就需要通過進位邏輯將多個單元相連,這樣FPGA就可以實現復雜的邏輯。
因為基于LUT的FPGA具有很高的集成度,其器件密度從數萬門到數千萬門不等,可以完成極其復雜的時序與邏輯組合邏輯電路功能,所以適用于高速、高密度的高端數字邏輯電路設計領域。其組成部分主要有可編程輸入/輸出單元、基本可編程邏輯單元、內嵌SRAM、豐富的布線資源、底層嵌入功能單元、內嵌專用單元等,主要設計和生產廠家有Xilinx、Altera、Lattice、Actel、Atmel和QuickLogic等公司,其中最大的是Xilinx、Altera、Lattice三家。
總結
以上是生活随笔為你收集整理的FPGA工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于储存设备知识介绍汇总
- 下一篇: 边沿检测技术