FPGA

FPGA

半定制電路
FPGA是英文Field-Programmable Gate Array的縮寫,即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的産物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。[1]FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個新概念,内部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和内部連線(Interconnect)三個部分。
    中文名:現場可編程邏輯門陣列 外文名:Field Programmable Gate Array 所屬學科: 簡稱:FPGA 借助對象:邏輯單元陣列

背景

以硬件描述語言(Verilog或VHDL)所完成的電路設計,可以經過簡單的綜合與布局,快速的燒錄至FPGA上進行測試,是現代 IC設計驗證的技術主流。這些可編輯元件可以被用來實現一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更複雜一些的組合功能比如解碼器或數學方程式。在大多數的FPGA裡面,這些可編輯的元件裡也包含記憶元件例如觸發器(Flip-flop)或者其他更加完整的記憶塊。

系統設計師可以根據需要通過可編輯的連接把FPGA内部的邏輯塊連接起來,就好像一個電路試驗闆被放在了一個芯片裡。一個出廠後的成品FPGA的邏輯塊和連接可以按照設計者而改變,所以FPGA可以完成所需要的邏輯功能。

FPGA一般來說比ASIC(專用集成電路)的速度要慢,實現同樣的功能比ASIC電路面積要大。但是他們也有很多的優點比如可以快速成品,可以被修改來改正程序中的錯誤和更便宜的造價。廠商也可能會提供便宜的但是編輯能力差的FPGA。因為這些芯片有比較差的可編輯能力,所以這些設計的開發是在普通的FPGA上完成的,然後将設計轉移到一個類似于ASIC的芯片上。另外一種方法是用CPLD(Complex Programmable Logic Device,複雜可編程邏輯器件)。

開發

FPGA的開發相對于傳統PC、單片機的開發有很大不同。FPGA以并行運算為主,以硬件描述語言來實現;相比于PC或單片機(無論是馮諾依曼結構還是哈佛結構)的順序操作有很大區别,也造成了FPGA開發入門較難。目前國内有專業的FPGA外協開發廠家,如[北京中科鼎橋ZKDQ-TECH]等。FPGA開發需要從頂層設計、模塊分層、邏輯實現、軟硬件調試等多方面着手。

産品比較

早在1980年代中期,FPGA已經在PLD設備中紮根。CPLD和FPGA包括了一些相對大數量的可編輯邏輯單元。CPLD邏輯門的密度在幾千到幾萬個邏輯單元之間,而FPGA通常是在幾萬到幾百萬。

CPLD和FPGA的主要區别是他們的系統結構。CPLD是一個有點限制性的結構。這個結構由一個或者多個可編輯的結果之和的邏輯組列和一些相對少量的鎖定的寄存器組成。這樣的結果是缺乏編輯靈活性,但是卻有可以預計的延遲時間和邏輯單元對連接單元高比率的優點。而FPGA卻是有很多的連接單元,這樣雖然讓它可以更加靈活的編輯,但是結構卻複雜的多。

CPLD和FPGA另外一個區别是大多數的FPGA含有高層次的内置模塊(比如加法器和乘法器)和内置的記憶體。因此一個有關的重要區别是很多新的FPGA支持完全的或者部分的系統内重新配置。允許他們的設計随着系統升級或者動态重新配置而改變。一些FPGA可以讓設備的一部分重新編輯而其他部分繼續正常運行。

CPLD和FPGA還有一個區别:CPLD下電之後,原有燒入的邏輯結構不會消失;而FPGA下電之後,再次上電時,需要重新加載FLASH裡面的邏輯代碼,需要一定的加載時間。

工作原理

FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,内部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸入輸出模塊IOB(Input Output Block)和内部連線(Interconnect)三個部分。現場可編程門陣列(FPGA)是可編程器件,與傳統邏輯電路和門陣列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的結構。FPGA利用小型查找表(16×1RAM)來實現組合邏輯,每個查找表連接到一個D觸發器的輸入端,觸發器再來驅動其他邏輯電路或驅動I/O,由此構成了既可實現組合邏輯功能又可實現時序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過向内部靜态存儲單元加載編程數據來實現的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯接方式,并最終決定了FPGA所能實現的功能,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系列會産生上電湧入電流。在此期間,電源轉換器持續供電。這種應用中,因為器件需通過降低輸出電壓來限制電流,所以不推薦使用返送電流限制。但在限流電源解決方案中,一旦限流電源所供電的電路電流超過設定的額定電流,電源就會将該電流限制在額定值以下。

配電結構

對于高速、高密度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芯片的内部結構

每個模塊的功能如下:

1.可編程輸入輸出單元(IOB)

可編程輸入/輸出單元簡稱I/O單元,是芯片與外界電路的接口部分,完成不同電氣特性下對輸入/輸出信号的驅動與匹配要求,其示意結構如圖1-2所示。FPGA内的I/O按組分類,每組都能夠獨立地支持不同的I/O标準。通過軟件的靈活配置,可适配不同的電氣标準與I/O物理特性,可以調整驅動電流的大小,可以改變上、下拉電阻。目前,I/O口的頻率也越來越高,一些高端的FPGA通過DDR寄存器技術可以支持高達2Gbps的數據速率。

圖1-2 典型的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結構示意圖

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結構示意圖

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模塊示意圖

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的使用非常靈活。

注意事項

基礎問題

FPGA的基礎就是數字電路和VHDL語言,想學好FPGA的人,建議床頭都有一本數字電路的書,不管是哪個版本的,這個是基礎,多了解也有助于形成硬件設計的思想。在語言方面,建議初學者學習Verilog語言,VHDL語言語法規範嚴格,調試起來很慢,Verilog語言容易上手,而且,一般大型企業都是用Verilog語言,VHDL語言規範,易讀性強,所以一般軍工都用VHDL。

工具問題

熟悉幾個常用的就可以的,開發環境Quartus II,或ISE就可以了,這兩個基本是相通的,會了哪一個,另外的那個也就很Easy了。功能仿真建議使用Modelsim,如果你是做芯片的,就可以學學别的仿真工具,做FPGA的,Modelsim就足夠了。綜合工具一般用Synplify,初學先不用太關心這個,用Quartus綜合就OK了。

思想問題

對于初學者,特别是從軟件轉過來的,設計的程序既費資源又速度慢,而且很有可能綜合不了,這就要求我們熟悉一些固定模塊的寫法,可綜合的模塊很多書上都有,語言介紹上都有,不要想當然的用軟件的思想去寫硬件。在學習FPGA開發過程,首先要對電路設計熟悉,明白電路的工作過程:電路是并行執行。

習慣問題

FPGA學習要多練習,多仿真,signaltapII是很好的工具,可以看到每個信号的真實值,建議初學者一定要自己多動手,光看書是沒用的。關于英文文檔問題,如果要學會Quartus II的所有功能,隻要看它的handbook就可以了,很詳細,對于IT行業的人,大部分知識來源都是英文文檔,一定要耐心看,會從中收獲很多的。

算法問題

做FPGA的工程師,最後一般都是專攻算法了,這些基礎知識都是順手捏來的,如果你沒有做好搞理論的準備,學FPGA始終隻能停留在初級階段上。對于初學者,數字信号處理是基礎,應該好好理解,往更深的方向,不用什麼都學,根據你以後從事的方向,比如說通信、圖像處理,雷達、聲納、導航定位等。

設計注意

不管你是一名邏輯設計師、硬件工程師或系統工程師,甚或擁有所有這些頭銜,隻要你在任何一種高速和多協議的複雜系統中使用了FPGA,你就很可能需要努力解決好器件配置、電源管理、IP集成、信号完整性和其他的一些關鍵設計問題。不過,你不必獨自面對這些挑戰,因為在當前業内領先的FPGA公司裡工作的應用工程師每天都會面對這些問題,而且他們已經提出了一些将令你的設計工作變得更輕松的設計指導原則和解決方案。

設計法則

FPGA設計的三大黃金法則

一.面積與速度的平衡互換原則

這裡的面積指的是FPGA的芯片資源,包括邏輯資源和I/O資源等;這裡的速度指的是FPGA工作的最高頻率(和DSP或者ARM不同,FPGA設計的工作頻率是不固定的,而是和設計本身的延遲緊密相連)。在實際設計中,使用最小的面積設計出最高的速度是每一個開發者追求的目标,但是“魚和熊掌不可兼得”,取舍之間展示了一個開發者的智慧。

1.速度換面積

速度優勢可以換取面積的節約。面積越小,就意味着可以用更低的成本來實現産品的功能。速度換面積的原則在一些較複雜的算法設計中常常會用到。在這些算法設計中,流水線設計常常是必須用到的技術。在流水線的設計中,這些被重複使用但是使用次數不同的模塊将會占用大量的FPGA資源。對FPGA的設計技術進行改造,将被重複使用的算法模塊提煉出最小的複用單元,并利用這個最小的高速代替原設計中被重複使用但次數不同的模塊。當然,在改造的過程中必然會增加一些其他的資源來實現這個代替的過程。但是隻要速度具有優勢,那麼增加的這部分邏輯依然能夠實現降低面積提高速度的目的。

可以看到,速度換面積的關鍵是高速基本單元的複用。

2.面積換速度

在這種方法中面積的複制可以換取速度的提高。支持的速度越高,就意味着可以實現更高的産品性能。一些注重産品性能的應用領域可以采用并行處理技術,實現面積換速度。

二.硬件可實現原則

FPGA設計通常會使用HDL語言,比如Verilog HDL或者VHDL。當采用HDL語言來描述一個硬件電路功能的時候,一定要确保代碼描述的電路是硬件可實現的。

Verilog HDL語言的語法與C語言很相似,但是它們之間有着本質的區别。C語言是基于過程的高級語言,編譯後可以在CPU上運行。而Verilog HDL語言描述的本身就是硬件結構,編譯後是硬件電路。因此,有些語句在C語言的環境中應用是沒有問題的,但是在HDL語言環境下就會導緻結果不正确或者不理想。如:for(i=0;i<16;i++)DoSomething();在C語言中運行沒有任何問題,但是在Verilog HDL的環境下編譯就會導緻綜合後的資源嚴重浪費。

三.同步設計原則

同步電路和異步電路是FPGA設計的兩種基本電路結構形式。

異步電路的最大缺點是會産生毛刺。同步設計的核心電路是由各種觸發器構成的。這類電路的任何輸出都是在某個時鐘的邊沿驅動觸發器産生的。所以,同步設計可以很好地避免毛刺的産生。

信号分配

可提供最多的多功能引腳、I/O标準、端接方案和差分對的FPGA在信号分配方面也具有最複雜的設計指導原則。盡管Altera的FPGA器件沒有設計指導原則(因為它實現起來比較容易),但賽靈思的FPGA設計指導原則卻很複雜。但不管是哪一種情況,在為I/O引腳分配信号時,都有一些需要牢記的共同步驟:

1.使用一個電子數據表列出所有計劃的信号分配,以及它們的重要屬性,例如I/O标準、電壓、需要的端接方法和相關的時鐘。

2.檢查制造商的塊/區域兼容性準則。

3.考慮使用第二個電子數據表制訂FPGA的布局,以确定哪些管腳是通用的、哪些是專用的、哪些支持差分信号對和全局及局部時鐘、哪些需要參考電壓。

4.利用以上兩個電子數據表的信息和區域兼容性準則,先分配受限制程度最大的信号到引腳上,最後分配受限制最小的。例如,你可能需要先分配串行總線和時鐘信号,因為它們通常隻分配到一些特定引腳。

5.按照受限制程度重新分配信号總線。在這個階段,可能需要仔細權衡同時開關輸出(SSO)和不兼容I/O标準等設計問題,尤其是當你具有很多個高速輸出或使用了好幾個不同的I/O标準時。如果你的設計需要局部/區域時鐘,你将可能需要使用高速總線附近的管腳,最好提前記住這個要求,以免最後無法為其安排最合适的引腳。如果某個特定塊所選擇的I/O标準需要參考電壓信号,記住先不要分配這些引腳。差分信号的分配始終要先于單端信号。如果某個FPGA提供了片内端接,那麼它也可能适用于其他兼容性規則。

6.在合适的地方分配剩餘的信号。

在這個階段,考慮寫一個隻包含端口分配的HDL文件。然後通過使用供應商提供的工具或使用一個文本編輯器手動創建一個限制文件,為I/O标準和SSO等增加必要的支持信息。準備好這些基本文件後,你可以運行布局布線工具來确認是否忽視了一些準則或者做了一個錯誤的分配。

這将使你在設計的初始階段就和布局工程師一起工作,共同規劃PCB的走線、冗餘規劃、散熱問題和信号完整性。FPGA工具可能可以在這些方面提供幫助,并協助你解決這些問題,因此你必須确保了解你的工具包的功能。

你咨詢一位布局專家的時間越晚,你就越有可能需要去處理一些複雜的問題和設計反複,而這些可能可以通過一些前期分析加以避免。一旦你實現了滿意的信号分配,你就要用限制文件鎖定它們。

基于CMOS的設計主要消耗三類功率:内部的(短路)、漏電的(靜态的)以及開關的(電容)。當門電路瞬變時,VDD與地之間短路連接消耗内部功率。漏電功耗是CMOS工藝普遍存在的寄生效應引起的。而開關功耗則是自負載電容,放電造成的。開關功耗與短路功耗合在一起稱為動态功耗。下面介紹降低靜态功耗和動态功耗的設計技巧。

靜态功耗

簡介

雖然靜态電流與動态電流相比可以忽略不計,然而對電池供電的手持設備就顯得十分重要,在設備通電而不工作時更是如此。靜态電流的因素衆多,包括處于沒有完全關斷或接通的狀态下的I/O以及内部晶體管的工作電流、内部連線的電阻、輸入與三态電驅動器的上拉或下拉電阻。在易失性技術中,保持編程信息也需一定的靜态功率。抗熔斷是一種非易失性技術,因此信息存儲不消耗靜态電流。

功耗的方法

·驅動輸入應有充分的電壓電平,因而所有晶體管都是完全通導或關閉的。

·由于I/O線上的上拉或下拉電阻要消耗一定的電流,因此盡量避免使用這些電阻。

·少用驅動電阻或雙極晶體管,這些器件需維持一個恒定電流,從而增加了靜态電流。

·将時鐘引腳按參數表推薦條件連接至低電平。懸空的時鐘輸入會大大增加靜态電流。

·在将設計劃分為多個器件時,減少器件間I/O的使用。

eX器件LP方式引腳的使用

Actel的EX系列設計了特殊的低功率“休眠”模式。在該引腳驅動至高電平800ns後,器件進入極低功率待機模式,待機電流小于100μA。在低功率模式下,所有I/O(除時鐘輸入外)都處于三态,而内核全部斷電。由于内核被斷電,觸發器中存儲的信息會丢失,在進入工作模式(在引腳驅動至低平200ms後)時,用戶需再次對器件初始化。同樣,用戶也應關閉所有通過CLKA、CLKB以及HCLK輸入的時鐘。然而這些時鐘并不處于三态,時鐘就可進入器件,從而增加功耗,因此在低功率模式下,時鐘輸入必須處于邏輯0或邏輯1。

有時用戶很難阻止時鐘進入器件。在此場合,用戶可使用與CLKA或CLKA相鄰的正常輸入引腳并在設計中加進CLKINT。這樣,時鐘将通過靠近時鐘引腳的正常輸入進入器件,再通過CLKINT向器件提供時鐘資源。

采用這種輸入電路後,由于常規I/O是三态的,因此用戶不必擔心時鐘進入器件。當然,增加一級門電路會産生0.6ns的較大時鐘延時,幸好這在多數低功率設計中是可以接受的。注意應将與CLKINT緩沖器相關的CLKA或CLKB引腳接地。

此外還要注意,CLKINT隻可用作連線時鐘,HCLK并不具備将内部走線網連接到HCLK的能力,因而HCLK資源不能被常規輸入驅動。換句話說,如果使用LP引腳就不能使用HCLK;使用HCLK時就應在外部截斷時鐘信号。

動态功耗

降低動态功耗

動态功耗是在時鐘工作且輸入正在開關時的功耗。對CMOS電路,動态功耗基本上确定了總功耗。動态功耗包括幾個成分,主要是電容負載充電與放電(内部與I/O)以及短路電流。多數動态功率是内部或外部電容向器件充、放電消耗的。如果器件驅動多個I/O負載,大量的動态電流構成總功耗的主要部分。

對設計中給定的驅動器,動态功耗由下式計算

p=CL×V 2 DD×f

式中,CL是電容負載,VDD是電源電壓,f則是開關頻率。總功耗是每個驅動器功耗之總和。

由于VDD是固定的,降低内部功耗就要降低平均邏輯開關頻率,減少每個時鐘沿處的邏輯開關總數、減少連線網絡,特别是高頻信号連線網絡中的電容值。對低功率設計,需要從系統至工藝的每個設計級别中采取相應預防措施,級别越高,效果越好。

與CPLD的辨别和分類

FPGA與CPLD的辨别和分類主要是根據其結構特點和工作原理。通常的分類方法是:

将以乘積項結構方式構成邏輯行為的器件稱為CPLD,如Lattice的ispLSI系列、Xilinx的XC9500系列、Altera的MAX7000S系列和Lattice(原Vantis)的Mach系列等。

将以查表法結構方式構成邏輯行為的器件稱為FPGA,如Xilinx的SPARTAN系列、Altera的FLEX10K或ACEX1K系列等。

盡管FPGA和CPLD都是可編程ASIC器件,有很多共同特點,但由于CPLD和FPGA結構上的差異,具有各自的特點:

①CPLD更适合完成各種算法和組合邏輯,FP GA更适合于完成時序邏輯。換句話說,FPGA更适合于觸發器豐富的結構,而CPLD更适合于觸發器有限而乘積項豐富的結構。

②CPLD的連續式布線結構決定了它的時序延遲是均勻的和可預測的,而FPGA的分段式布線結構決定了其延遲的不可預測性。

③在編程上FPGA比CPLD具有更大的靈活性。CPLD通過修改具有固定内連電路的邏輯功能來編程,FPGA主要通過改變内部連線的布線來編程;FPGA可在邏輯門下編程,而CPLD是在邏輯塊下編程。

④FPGA的集成度比CPLD高,具有更複雜的布線結構和邏輯實現。

⑤CPLD比FPGA使用起來更方便。CPLD的編程采用E2PROM或FASTFLASH技術,無需外部存儲器芯片,使用簡單。而FPGA的編程信息需存放在外部存儲器上,使用方法複雜。

⑥CPLD的速度比FPGA快,并且具有較大的時間可預測性。這是由于FPGA是門級編程,并且CLB之間采用分布式互聯,而CPLD是邏輯塊級編程,并且其邏輯塊之間的互聯是集總式的。

⑦在編程方式上,CPLD主要是基于E2PROM或FLASH存儲器編程,編程次數可達1萬次,優點是系統斷電時編程信息也不丢失。CPLD又可分為在編程器上編程和在系統編程兩類。FPGA大部分是基于SRAM編程,編程信息在系統斷電時丢失,每次上電時,需從器件外部将編程數據重新寫入SRAM中。其優點是可以編程任意次,可在工作中快速編程,從而實現闆級和系統級的動态配置。

⑧CPLD保密性好,FPGA保密性差。

⑨一般情況下,CPLD的功耗要比FPGA大,且集成度越高越明顯。

應用

電路設計

連接邏輯,控制邏輯是FPGA早期發揮作用比較大的領域也是FPGA應用的基石.事實上在電路設計中應用FPGA的難度還是比較大的這要求開發者要具備相應的硬件知識(電路知識)和軟件應用能力(開發工具)這方面的人才總是緊缺的,往往都從事新技術,新産品的開發成功的産品将變成市場主流基礎産品供産品設計者應用在不遠的将來,通用和專用IP的設計将成為一個熱門行業!搞電路設計的前提是必須要具備一定的硬件知識.在這個層面,幹重于學,當然,快速入門是很重要的,越好的位子越不等人電路開發是黃金飯碗。

産品設計

把相對成熟的技術應用到某些特定領域如通訊,視頻,信息處理等等開發出滿足行業需要并能被行業客戶接受的産品這方面主要是FPGA技術和專業技術的結合問題,另外還有就是與專業客戶的界面問題産品設計還包括專業工具類産品及民用産品,前者重點在性能,後者對價格敏感産品設計以實現産品功能為主要目的,FPGA技術是一個實現手段在這個領域,FPGA因為具備接口,控制,功能IP,内嵌CPU等特點有條件實現一個構造簡單,固化程度高,功能全面的系統産品設計将是FPGA技術應用最廣大的市場,具有極大的爆發性的需求空間産品設計對技術人員的要求比較高,路途也比較漫長不過現在整個行業正處在組建"首發團隊"的狀态,隻要加入,前途光明産品設計是一種職業發展方向定位,不是簡單的愛好就能做到的!産品設計領域會造就大量的企業和企業家,是一個發展熱點和機遇。

系統級

系統級的應用是FPGA與傳統的計算機技術結合,實現一種FPGA版的計算機系統如用XilinxV-4,V-5系列的FPGA,實現内嵌POWERPCCPU,然後再配合各種外圍功能,實現一個基本環境,在這個平台上跑LINUX等系統,這個系統也就支持各種标準外設和功能接口(如圖象接口)了這對于快速構成FPGA大型系統來講是很有幫助的。這種"山寨"味很濃的系統早期優勢不一定很明顯,類似ARM系統的境況但若能慢慢發揮出FPGA的優勢,逐漸實現一些特色系統也是一種發展方向。若在系統級應用中,開發人員不具備系統的擴充開發能力,隻是搞搞編程是沒什麼意義的,當然設備驅動程序的開發是另一種情況,搞系統級應用看似起點高,但不具備深層開發能力,很可能會變成愛好者,就如很多人會做網頁但不能稱做會編程。類似以上是幾點個人觀點,希望能幫助想學FPGA但很茫然無措的人理一理思路。這是一個不錯的行業,有很好的個人成功機會。但也肯定是一個競争很激烈的行業,關鍵看的就是速度和深度當然還有市場适應能力。

上一篇:VI

下一篇:PID算法

相關詞條

相關搜索

其它詞條