fpga(field-programmable gate array),即現場可程式門陣列,它是在pal、gal、cpld等可件的基礎上進一步發展的產物。它是作為(asic)領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可件門電路數有限的缺點。
基本介紹
- 中文名:現場可程式邏輯門陣列
- 外文名:field programmable gate array
- 簡稱:fpga
- 藉助對象:陣列
背景,開發,產品比較,發展歷程,理念成熟,工作原理,電源類型,要求,配電結構,晶片結構,基本特點,注意事項,基礎問題,工具問題,思想問題,習慣問題,算法問題,配置模式,主要生產,設計注意,三大法則,信號分配,靜態功耗,簡介,功耗的方法,降低動態功耗,比較分類,套用,電路設計,產品設計,系統級,最新套用,市場發展,
背景
以硬體描述語言(或)所完成的電路設計,可以經過簡單的綜合與布局,快速的至 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開發需要從頂層設計、模組分層、邏輯實現、軟硬體調試等多方面著手。
產品比較
早在1980年代中期,fpga已經在設備中紮根。和fpga包括了一些相對大數量的可編輯。cpld邏輯門的密度在幾千到幾萬個邏輯單元之間,而fpga通常是在幾萬到幾百萬。
cpld和fpga的主要區別是他們的系統結構。cpld是一個有點限制性的結構。這個結構由一個或者多個可編輯的結果之和的邏輯組列和一些相對少量的鎖定的暫存器組成。這樣的結果是缺乏編輯靈活性,但是卻有可以預計的延遲時間和邏輯單元對連線單元高比率的優點。而fpga卻是有很多的連線單元,這樣雖然讓它可以更加靈活的編輯,但是結構卻複雜的多。
cpld和fpga另外一個區別是大多數的fpga含有高層次的內置模組(比如和乘法器)和內置的。因此一個有關的重要區別是很多新的fpga支持完全的或者部分的系統內重新配置。允許他們的設計隨著系統升級或者動態重新配置而改變。一些fpga可以讓設備的一部分重新編輯而其他部分繼續正常運行。
cpld和fpga還有一個區別:下電之後,原有燒入的邏輯結構不會消失;而fpga下電之後,再次上電時,需要重新載入裡面的邏輯代碼,需要一定的載入時間。
發展歷程
每一個最後看來很成功的新事物,從誕生到發展壯大都不可避免地經歷過艱難的歷程,並可能成為被研究的案例,fpga也不例外。
1985年,當全球首款fpga產品——xc2064誕生時,注定要使用大量晶片的pc機剛剛走出矽谷的實驗室進入商業市場,網際網路只是科學家和政府機構通信的神秘鏈路,無線電話笨重得像磚頭,日後大紅大紫的bill gates正在為生計而奮鬥,創新的可程式產品似乎並沒有什麼用武之地。
事實也的確如此。最初,fpga只是用於膠合邏輯(glue logic),從膠合邏輯到算法邏輯再到數位訊號處理、高速串列收發器和嵌入式處理器,fpga真正地從配角變成了主角。在以閃電般速度發展的半導體產業里,22年足夠改變一切。“在未來十年內每一個電子設備都將有一個可程式邏輯晶片”的理想正成為現實。
1985年,xilinx公司推出的全球第一款fpga產品xc2064怎么看都像是一隻“醜小鴨”——採用2μm工藝,包含64個邏輯模組和85000個電晶體,門數量不超過1000個。22年後的2007年,fpga業界雙雄xilinx和altera公司紛紛推出了採用最新65nm工藝的fpga產品,其門數量已經達到千萬級,電晶體個數更是超過10億個。一路走來,fpga在不斷地緊跟並推動著半導體工藝的進步——2001年採用150nm工藝、2002年採用130nm工藝,2003年採用90nm工藝,2006年採用65nm工藝。
在上世紀80年代中期,可程式器件從任何意義上來講都不是當時的主流,雖然其並不是一個新的概念。可程式邏輯陣列(pla)在1970年左右就出現了,但是一直被認為速度慢,難以使用。1980年之後,可配置可程式邏輯陣列(pla)開始出現,可以使用原始的軟體工具提供有限的觸發器和查找表實現能力。pal被視為小規模/中等規模集成膠合邏輯的替代選擇被逐步接受,但是當時可程式能力對於大多數人來說仍然是陌生和具有風險的。20世紀80年代在“megapal”方面的嘗試使這一情況更加嚴重,因為“megapal”在功耗和工藝擴展方面有嚴重的缺陷,限制了它的廣泛套用。
然而,xilinx公司創始人之一——fpga的發明者ross freeman認為,對於許多套用來說,如果實施得當的話,靈活性和可定製能力都是具有吸引力的特性。也許最初只能用於原型設計,但是未來可能代替更廣泛意義上的定製晶片。事實上,正如xilinx公司亞太區行銷董事鄭馨南所言,隨著技術的不斷發展,fpga由配角到主角,很多系統設計都是以fpga為中心來設計的。fpga走過了從初期開發套用到限量生產套用再到大批量生產套用的發展歷程。從技術上來說,最初只是邏輯器件,現在強調平台概念,加入數位訊號處理、嵌入式處理、高速串列和其他高端技術,從而被套用到更多的領域。“90年代以來的20年間,pld產品的終極目標一直瞄準速度、成本和密度三個指標,即構建容量更大、速度更快和價格更低的fpga,讓客戶能直接享用。”actel司總裁兼執行長johneast如此總結可程式邏輯產業的發展脈絡。
當1991年xilinx公司推出其第三代fpga產品——xc4000系列時,人們開始認真考慮可程式技術了。xc4003包含44萬個電晶體,採用0.7μm工藝,fpga開始被製造商認為是可以用於製造工藝開發測試過程的良好工具。事實證明,fpga可為製造工業提供優異的測試能力,fpga開始用來代替原先存儲器所扮演的用來驗證每一代新工藝的角色。也許從那時起,向最新製程半導體工藝的轉變就已經不可阻擋了。最新工藝的採用為fpga產業的發展提供了機遇。
actel公司相信,flash將繼續成為fpga產業中重要的一個增長領域。flash技術有其獨特之處,能將非易失性和可重編程性集於單晶片解決方案中,因此能提供高成本效益,而且處於有利的位置以搶占龐大的市場份額。actel以flash技術為基礎的低功耗igloo系列、低成本的proasic3系列和混合信號fusion fpga將因具備flash的固有優勢而繼續引起全球廣泛的興趣和注意。
altera公司估計可程式邏輯器件市場在2006年的規模大概為37億美元,xilinx公司的估計更為樂觀一些,為50億美元。雖然兩家公司合計占據該市場90%的市場份額,但是作為業界老大的xilinx公司在2006年的營收不過18.4億美元,altera公司則為12.9億美元。pld市場在2000年達到41億美元,其後兩年出現了下滑,2002年大約為23億美元。雖然從2002年到2006年,pld市場每年都在增長,複合平均增長率接近13%,但是pld終究是一個規模較小的市場。而xilinx公司也敏銳地意識到,fpga產業在經歷了過去幾年的快速成長後將放慢前進的腳步,那么,未來fpga產業的出路在哪裡?
altera公司總裁兼執行長john daane認為,fpga及pld產業發展的最大機遇是替代asic和專用標準產品(assp),主要由asic和assp構成的數字邏輯市場規模大約為350億美元。由於用戶可以迅速對pld進行編程,按照需求實現特殊功能,與asic和assp相比,pld在靈活性、開發成本以及產品及時面市方面更具優勢。然而,pld通常比這些替代方案有更高的成本結構。因此,pld更適合對產品及時面市有較大需求的套用,以及產量較低的最終套用。pld技術和半導體製造技術的進步,從總體上縮小了pld和固定晶片方案的相對成本差,在以前由asic和assp占據的市場上,altera公司已經成功地提高了pld的銷售份額,並且今後將繼續這一趨勢。“fpga和pld供應商的關鍵目標不是簡單地增加更多的原型客戶,而是向大批量套用最終市場和客戶滲透。”john daane為fpga產業指明了方向。
理念成熟
xilinx公司認為,asic soc設計周期平均是14個月到24個月,用fpga進行開發時間可以平均降低55%。而產品晚上市六個月5年內將少33%的利潤,每晚四周等於損失14%的市場份額。因此,鄭馨南雄心勃勃地預言:“fpga套用將不斷加快,從面向50億美元的市場擴展到面向410億美元的市場。”其中,asic和assp市場各150億美元,嵌入式處理和高性能dsp市場各30億美元。
雖然沒有像蒸汽機車發明之初備受嘲笑被譏諷為“怪物”,但是fpga在誕生之初受到懷疑是毫無疑問的。當時,電晶體邏輯門資源極為珍貴,每個人都希望用到的電晶體越少越好。不過,ross freeman挑戰了這一觀念,他大膽預言:“在未來,電晶體將變得極為豐富從而可以‘免費’使用。”如今,這一預言成為現實。
“fpga非常適用於原型設計,但對於批量dsp系統套用來說,成本太高,功耗太大。”這是業界此前的普遍觀點,很長時間以來也為fpga進入dsp領域設定了觀念上的障礙。而如今,隨著xilinx公司和altera公司相關產品的推出,dsp領域已經不再是fpga的禁區,相反卻成了fpga未來的希望所在。
fpga對半導體產業最大的貢獻莫過於創立了無生產線(fabless)模式。如今採用這種模式司空見慣,但是在20多年前,製造廠被認為是半導體晶片企業必須認真考慮的主要競爭優勢。然而,基於過去和關係和直接、清晰的業務模式,xilinx創始人之一bernie vonderschmitt成功地使日本精工公司(seiko)確信利用該公司的製造設施來生產xilinx公司設計的晶片對雙方都是有利的,於是,無生產線模式誕生了。
未來,相信fpga還將在更多方面改變半導體產業。
工作原理
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輸出端也需要電容,用來處理系統瞬變,並保持系統穩定性。也可以使用雙輸出,同時為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供電時可以將電源電壓偏移降至最低。
集中式電源結構

在傳統電源結構中,或轉換器位於一個地方,並提供多個輸出電壓,在整個系統內分配。這種設計稱為集中式電源結構(cpa),見左圖。以高電流分配低電壓時,銅線或軌道會產生嚴重的電阻損耗,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模組的存儲單元輸入到fpga的內部,也可以直接輸入fpga 內部。當外部輸入信號經過iob模組的存儲單元輸入到fpga內部時,其保持時間(hold time)的要求可以降低,通常默認為0。
典型的iob內部結構示意圖

為了便於管理和適應多種電器標準,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模組的處理速度。
典型的clb結構示意圖

圖1-4 典型的4輸入slice結構示意圖
3. 數字時鐘管理模組(dcm)
典型的4輸入slice結構示意圖

業內大多數fpga均提供管理(xilinx的全部fpga均具有這種特性)。xilinx推出最先進的fpga提供管理和相位環路鎖定。相位環路鎖定能夠提供精確的時鐘綜合,且能夠降低抖動,並實現過濾功能。
4.塊ram(bram)
大多數fpga都具有內嵌的塊,這大大拓展了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)、和等軟處理核(softcore)。越來越豐富的內嵌功能單元,使得單片fpga成為了系統級的設計工具,使其具備了軟硬體聯合設計的能力,逐步向soc平台過渡。
dll和pll具有類似的功能,可以完成時鐘高精度、低抖動的和分頻,以及占空比調整和移相等功能。xilinx公司生產的上集成了 dll,altera公司的晶片集成了pll,lattice公司的新型晶片上同時集成了pll和dll。pll 和dll可以通過ip核生成的工具方便地進行管理和配置。dll的結構如圖1-5所示。
圖1-5 典型的dll模組示意圖
7. 內嵌專用硬核
典型的dll模組示意圖

內嵌專用硬核是相對底層嵌入的而言的,指fpga處理能力強大的硬核(hard core),等效於asic電路。為了提高fpga性能,生產商在晶片內部集成了一些專用的硬核。例如:為了提高fpga的乘法速度,主流的fpga 中都集成了專用乘法器;為了適用通信匯流排與接口標準,很多高端的fpga內部都集成了串並收發器(serdes),可以達到數十gbps的收發速度。
公司的高端產品不僅集成了power pc系列cpu,還內嵌了dsp core模組,其相應的系統級設計工具是edk和platform studio,並依此提出了(system on chip)的概念。通過powerpc、microblaze、picoblaze等平台,能夠開發標準的處理器及其相關套用,達到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有多種配置模式:並行主模式為一片fpga加一片eprom的方式;主從模式可以支持一片prom多片fpga;串列模式可以採用串列prom編程fpga;模式可以將fpga作為的外設,由微處理器對其編程。
如何實現快速的時序收斂、降低和成本、最佳化時鐘管理並降低fpga與pcb並行設計的複雜性等問題,一直是採用fpga的工程師需要考慮的關鍵問題。如今,隨著fpga向更高密度、更大容量、更低和集成更多ip的方向發展,系統設計工程師在從這些優異性能獲益的同時,不得不面對由於fpga前所未有的性能和能力水平而帶來的新的設計挑戰。
例如,領先fpga廠商xilinx推出的virtex-5系列採用65nm工藝,可提供高達33萬個、1,200個i/o和大量硬ip塊。超大容量和密度使複雜的布線變得更加不可預測,由此帶來更嚴重的時序收斂問題。此外,針對不同套用而集成的更多數量的邏輯功能、dsp、處理和接口模組,也讓時鐘管理和電壓分配問題變得更加困難。
幸運地是,fpga廠商、eda工具供應商正在通力合作解決65nm fpga獨特的設計挑戰。不久以前,synplicity與xilinx宣布成立超大容量時序收斂聯合工作小組,旨在最大程度地幫助系統設計工程師以更快、更高效的方式套用65nm fpga器件。設計軟體供應商magma推出的綜合工具blast fpga能幫助建立最佳化的布局,加快時序的收斂。
fpga的配置方式已經多元化!
主要生產
全球知名的fpga生產廠商有:
1.,開發平台是
2. 開發平台是vivado
3.actel ,開發平台是
4.lattice,開發平台是 isplever
5.
其中altera作為世界老牌的廠家,是可程式邏輯器件的發明者,開發軟體max plusii和quartusii。xilinx是fpga的發明者,擁有世界一半以上的市場,提供90%的高端65nmfpga產品,開發軟體為ise,其產品主要用於軍用和宇航。
altera和xilinx主要生產一般用途fpga,其主要產品採用ram工藝。actel主要提供非易失性fpga,產品主要基於反熔絲工藝和flash工藝。
設計注意
不管你是一名邏輯設計師、或,甚或擁有所有這些頭銜,只要你在任何一種高速和多協定的複雜系統中使用了fpga,你就很可能需要努力解決好器件配置、、ip集成、信號完整性和其他的一些關鍵設計問題。不過,你不必獨自面對這些挑戰,因為在當前業內領先的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是固定的,降低內部就要降低平均邏輯開關頻率,減少每個時鐘沿處的邏輯開關總數、減少連線網路,特別是高頻信號連線網路中的電容值。對低功率設計,需要從系統至工藝的每個設計級別中採取相應預防措施,級別越高,效果越好。
比較分類
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是門級編程,並且之間採用分散式互聯,而cpld是邏輯塊級編程,並且其邏輯塊之間的互聯是集總式的。
⑦在方式上,cpld主要是基於e2prom或flash存儲器編程,編程次數可達1萬次,優點是系統斷電時編程信息也不丟失。cpld又可分為在上編程和在兩類。fpga大部分是基於sram,編程信息在系統斷電時丟失,每次上電時,需從器件外部將編程數據重新寫入sram中。其優點是可以任意次,可在工作中快速編程,從而實現板級和系統級的動態配置。
⑧cpld保密性好,fpga保密性差。
⑨一般情況下,cpld的要比fpga大,且集成度越高越明顯。
套用
電路設計
連線邏輯,控制邏輯是fpga早期發揮作用比較大的領域也是fpga套用的基石.事實上在電路設計中套用fpga的難度還是比較大的這要求開發者要具備相應的硬體知識(電路知識)和軟體套用能力(開發工具)這方面的人才總是緊缺的,往往都從事新技術,新產品的開發成功的產品將變成市場主流基礎產品供產品設計者套用在不遠的將來,通用和專用ip的設計將成為一個熱門行業!搞電路設計的前提是必須要具備一定的硬體知識.在這個層面,乾重於學,當然,快速入門是很重要的,越好的位子越不等人電路開發是黃金飯碗.
產品設計
把相對成熟的技術套用到某些特定領域如通訊,視頻,等等開發出滿足行業需要並能被行業客戶接受的產品這方面主要是和專業技術的結合問題,另外還有就是與專業客戶的界面問題產品設計還包括專業工具類產品及民用產品,前者重點在性能,後者對價格敏感產品設計以實現產品功能為主要目的,fpga技術是一個實現手段在這個領域,fpga因為具備接口,控制,功能ip,內嵌cpu等特點有條件實現一個構造簡單,固化程度高,功能全面的系統產品設計將是fpga技術套用最廣大的市場,具有極大的爆發性的需求空間產品設計對技術人員的要求比較高,路途也比較漫長不過現在整個行業正處在組建"首發團隊"的狀態,只要加入,前途光明產品設計是一種職業發展方向定位,不是簡單的愛好就能做到的!產品設計領域會造就大量的企業和企業家,是一個發展熱點和機遇。
系統級
系統級的套用是fpga與傳統的結合,實現一種fpga版的如用xilinx v-4、v-5系列的fpga,實現內嵌power pc cpu,然後再配合各種外圍功能,實現一個基本環境,在這個平台上跑linux等系統,這個系統也就支持各種標準和功能接口(如圖象接口)了這對於快速構成fpga大型系統來講是很有幫助的。這種“山寨”味很濃的系統早期優勢不一定很明顯,類似arm系統的境況但若能慢慢發揮出fpga的優勢,逐漸實現一些特色系統也是一種發展方向。若在系統級套用中,開發人員不具備系統的擴充開發能力,只是搞搞編程是沒什麼意義的,當然的開發是另一種情況,搞系統級套用看似起點高,但不具備深層開發能力,很可能會變成愛好者,就如很多人會做網頁但不能稱做會編程。類似以上是幾點個人觀點,希望能幫助想學fpga但很茫然無措的人理一理思路。這是一個不錯的行業,有很好的個人成功機會。但也肯定是一個競爭很激烈的行業,關鍵看的就是速度和深度當然還有市場適應能力。
最新套用
台北時間2010年12月30日訊息,美英兩國科學家聯合開發了一款超快的,使當前的運算能力提升20倍。
當前的個人電腦使用、4核、16核處理器來執行各項任務。如今,美英研究人員開發的(cpu)將1000個核心有效集成於一個上。這項突破或將在今後幾年開啟一個超高速運算的新時代,使家庭用戶不再對運行緩慢的電腦系統感到沮喪。雖然速度更快,但由於新型“超級”電腦的能耗遠低於當前電腦,所以更加環保。
研究人員採用了一種名為“現場可程式門陣列”(以下簡稱“fpga”)的,使得微晶片就像都含有數百萬個電晶體一樣,而電晶體則是任何電路的基本組成部分。不過,fpga可由用戶安裝到特定電路,它們的功能不是在出廠時就設定好的。這樣一來,用戶可以將電晶體劃分成一個個“小群體”,要求每個“小群體”完成不同的任務。
通過在fpga內創建逾1000個微電路,研究人員便將這個晶片變成了1000個的處理器——每個核心都可以遵照自己的指令工作。這項研究由英國格拉斯哥大學的韋姆·范德堡韋德(wim vanderbauwhede)博士和美國麻薩諸塞大學盧維爾分校的同行共同實施。
范德堡韋德說:“fpga沒有套用於標準電腦上,原因是對fpga晶片相當困難。fpga的處理能力強大,由於速度更快,能耗相當低,是我們更為環保的選擇。”雖然當前市場上銷售的電腦大多數核心超過一個,可以同時實施不同任務,但傳統只能共用一個存儲源,這降低了運算速度。范德堡韋德的研究團隊給每個核心分配一定量的專用,從而加快了處理器的運算速度。
一名用戶坐在運算速度很慢的前面,看上去一籌莫展。在測試中,fpga每秒能處理5gb的數據,處理速度大概相當於當前台式機的20倍。
范德堡韋德博士說:“這只是初期概念驗證研究,我們試圖展示對fpga編程的便捷方式,令其超高速處理的潛力可以更為廣泛地套用於未來的和電子設備上。雖然現有許多技術充分使用fpga,如等離子電視、液晶電視和電腦網路路由器,但它們在標準上的套用卻十分有限。”
“但是,我們看到,包括英特爾和arm在內的一些廠商已經宣布將開發集成傳統cpu與fpga的微晶片。我認為此類處理器會得到更廣泛的套用,有助於在今後幾年進一步提升電腦運算速度。”范德堡韋德希望在2011年3月套用重構運算國際研討會上詳細介紹他的研究發現。
市場發展
事實上20世紀90年代後期fpga市場就已經過一番激烈整合,許多業者不是退出pld(可程式化邏輯裝置)市場,就是出售其pld業務部門,或將pld業務部門分立成獨立公司,或進行購併等。
時至今日,fpga市場的主要業者僅剩數家,包括altera、xilinx(賽靈思,過去稱為:智霖科技)、actel、atmel、lattice、quicklogic等,不過2007年11月quick logic也確定淡出fpga市場,並轉進發展cssp(customer specific standard product)。
但fpga領域依然有新興業者出現,例如achronixsemiconductor、mathstar等。且除了單純數字邏輯性質的可程式邏輯裝置外,混訊、模擬性質的可程式邏輯裝置也展露頭角,例如cypress semiconductor的(progmable system-on-chip)即具有可性的混訊電路,或如actel公司也提出可程式化的混訊:fusion,或者也有業者提出所謂的現場可程式化模擬數組(field programmable analog array;fpaa)等,相信這些都能為可程式化晶片帶來更多的發展動能。
fpga(現場)產品的套用領域已經從原來的通信擴展到消費電子、汽車電子、工業控制、測試測量等廣泛的領域。而套用的變化也使fpga產品近幾年的演進趨勢越來越明顯:一方面,fpga供應商致力於採用當前最先進的工藝來提升產品的性能,降低產品的成本;另一方面,越來越多的通用ip(智慧財產權)或客戶定製ip被引入fpga中,以滿足客戶產品快速上市的要求。此外,fpga企業都在大力降低產品的,滿足業界越來越苛刻的低功耗需求。
第一時間採用新工藝提升性能降低成本
半導體產品的集成度和成本一直在按照演進。在這方面,作為半導體產品的重要一支———也不例外。“最先進的半導體工藝幾乎都會在第一時間被套用在fpga產品上。”駿龍科技公司altera產品事業部經理胡晟說,“而每一次工藝升級帶來的優勢,都會在產品的、最高運行頻率、容量以及成本上得到體現。”

引入更多通用和定製ip向解決方案供應商轉變
fpga的套用已經從過去通信基礎設備這一非常窄的領域迅速擴展到了今天非常廣泛的套用領域。
採用各種技術路線爭做低之王
電池供電套用的迅猛增長刺激了全球市場對低半導體的需求。今天,系統設計人員面對更加嚴格的系統總體限制。與此同時,這類套用所要求的功能、性能和複雜度也在增加,但卻不能以增加電池為代價。為此,原來在指標上並不占優的fpga產品開始採用各種新技術來降低和最佳化功耗。