FPGA開發全攻略——概念篇


原文鏈接:

FPGA開發全攻略連載之一:FPGA為什么這么熱?

FPGA開發全攻略連載之二:為什么工程師要掌握FPGA開發知識?

FPGA開發全攻略連載之三:FPGA基本知識與發展趨勢(part1)

FPGA開發全攻略連載之四:FPGA基本知識與發展趨勢(part2)

寫在前面

2008年,我參加了幾次可編程器件供應商舉辦的技術研討會,讓我留下深刻印象的是參加這些研討會的工程師人數之多,簡直可以用爆滿來形容,很多工程師聚精會神地全天聽講,很少出現吃完午飯就閃人的現象,而且工程師們對研討會上展出的基於可編程器件的通信、消費電子、醫療電子、工業等解決方案也有濃厚的興趣,這和其他器件研討會形成了鮮明的對比。

Garnter和iSuppli公布的數據顯示:2008年,全球半導體整體銷售出現25年以來首次萎縮現象,但是,可編程器件卻還在保持了增長,預計2008年可編程邏輯器件(PLD)市場銷售額增長7.6%,可編程器件的領頭羊美國供應商賽靈思公司2008年營業收入預計升6.5%!現在2009年即將過去,我們看到可編程器件的應用呈現加速勢態,尤其是在賽靈思等公司目標設計平台理念的引領下,FPGA開發的門檻正在不斷降低,未來,我相信FPGA的開發可能和開發單片機、DSP一樣簡單!

在與工程師的交流中,我發現,很多工程師非常需要普及以FPGA為代表的可編程器件的應用開發知識,也有很多工程師苦於進階無門,缺乏專業、權威性的指導,在Google上搜索后,我發現很少有幫助工程師設計的FPGA系統設計資料,即使有也只是介紹一些概念性的基礎知識,缺乏實用性和系統性,於是,我萌生了出版一本指導工程師FPGA應用開發電子書的想法,而且這個電子書要突出實用性,讓大家都可以免費下載,並提供許多技巧和資源信息,很高興美國賽靈思公司對這個想法給予了大力支持,賽靈思公司亞太區市場經理張俊偉小姐和高級產品經理梁曉明先生對電子書提出了寶貴的意見,並提供了大量FPGA設計資源,也介紹了一些FPGA設計高手參與了電子書的編撰。

很短的時間內,一個電子書項目團隊組建起來,北京郵電大學的研究生田耘先生和賽靈思公司上海辦事處的蘇同麒先生等人都參與了電子書的編寫,他們是有豐富設計經驗的高手,在大家的共同努力下,這本凝結着智慧的FPGA電子書終於和大家見面了!我希望這本電子書可以成為對FPGA有興趣或正在使用FPGA進行開發的工程師的手頭設計寶典之一,也希望這個電子書可以對工程師們學習FPGA開發和進階有實用的幫助!如果可能,未來我們還將出版后續版本!

第一章、為什么工程師要掌握FPGA開發知識?

作者:張國斌、田耘

2008 年年初,某著名嵌入式系統IT 公司為了幫助其產品售后工程師和在線技術支持工程師更好的理解其產品,舉行了ASIC/FPGA 基礎專場培訓.由於后者因為保密制度而只能接觸到板級電路圖和LAYOUT,同時因ASIC/FPGA 都是典型的SoC 應用,通常只是將ASIC/FPGA 當作黑盒來理解,其猜測性讀圖造成公司與外部及公司內部大量的無效溝通.培訓結束后, 參與者紛紛表示ASIC/FPGA 的白盒式剖析極大提高了對產品的理解,有效解決了合作伙伴和客戶端理解偏異性問題,參加培訓的工程師小L 表示:“FPGA 同時擁有強大的處理功能和完全的設計自由度,以致於它的行業對手ASIC 的設計者在做wafer fabrication 之前, 也大量使用FPGA 來做整個系統的板級仿真,學習FPGA 開發知識不但提升了我們的服務質量從個人角度講也提升了自己的價值。”

實際上,小L 只是中國數萬FPGA 開發工程師中一個縮影,目前,隨着FPGA 從可編程邏輯芯片升級為可編程系統級芯片,其在電路中的角色已經從最初的邏輯膠合延伸到數字信號處理、接口、高密度運算等更廣闊的范圍,應用領域也從通信延伸到消費電子、汽車電子、工業控制、醫療電子等更多領域,現在,大批其他領域的工程師也像小L 一樣加入到FPGA 學習應用大軍中。未來,隨着FPGA 把更多的硬核如PowerPC™ 處理器等集成進來,以及采用新的工藝將存儲單元集成,FPGA 越來越成為一種融合處理、存儲、接口於一體的超級芯片,“FPGA 會成為一種板級芯片,未來的電子產品可以通過配置FPGA 來實現功能的升級,實際上,某些通信設備廠商已經在嘗試這樣做了。”賽靈思公司全球資深副總裁湯立人這樣指出。

可以想象,未來,FPGA開發能力對工程師而言將成為類似C 語言的基礎能力之一,面對這樣的發展趨勢,你還能簡單地將FPGA 當成一種邏輯器件嗎?還能對FPGA 的發展無動於衷嗎?

電子產品設計趨勢的變化
自電子產品誕生之日起,電子產品開發流程和方法就隨着電子元器件的不斷演進而變化,從最早的電子管器件到晶體管再到集成電路,工程師在設計產品時,所采用的工具和方法都有所不同,但是總的來說貫穿電子設計的統一思路是:使用印刷電路板上的分立、現成元件、連接器或IC 創建物理平台實現所需要的功能。例如,在60 年代,如果要設計一個收音機,工程師必須通過在PCB 板上通過晶體管、電阻、電容、電感、電線、濾波器、二極管等電路搭建出一個物理平台,實現對RF 信號的調諧、濾波、放大等,最后實現收音機的功能。

集成電路出現以后,一些分立器件被集成到一顆芯片上,但是總的設計思路沒有變化,還是要在一個PCB 板上通過無源器件和IC 搭建出一個物理平台,實現信號的接收、處理和輸出。但是,隨着FPGA 等可編程器件的誕生,設計思路正發生着微妙的變化——隨着更多功能從分立器件移到可編程領域,各種不同的設計流程交匯到了一起。現在,有效的電子設計是將板卡設計、可編程邏輯設計和軟件開發融合在一起,未來,隨着FPGA 融合處理、存儲於一體,板卡設計將融合進可編程邏輯設計中,電子產品設計將演變為可編程邏輯設計和嵌入式軟件設計,那時,電子設計將更體現一種“軟”設計,一種通過開發語言和工具實現的設計,而FPGA 將成為這種

“軟”設計的載體,以 FPGA 形式存在的低成本、大規模可編程器件可以隨時隨地獲得,這使設計者有可能將所有系統核心功能都轉移到軟設計中,並利用這種設計的優勢。這些“軟”設計優勢包括:更容易保護系統功能使其不被仿制或逆向工程,編程到設計中的“軟”元素容易更新,使設計過程更具連續性。好的工具所設計的軟設計不依賴於事先指定的硬件平台。而且,設計可以在最終硬件平台內繼續進行,即使產品已經移交客戶也仍然可行。即“軟”設計將成為電子設計的發展方向。

另一點,現今及未來的電子產品都在追求智能化和個性化,智能化只能通過軟件來實現,個性化呢,需要工程師簡單地修改就可體現不同的特色,另外也需要保護自己的設計不被仿制,要做到這點,也需要可編程器件。每個工程師都希望自的產品永遠與眾不同。與眾不同就是要讓產品與競爭產品不一樣,讓購買者選擇你的產品而不選擇競爭對手的產品。但是,怎么樣才能在日益全球化的市場中保持與眾不同呢?不要再指望在硬件上能達到目的,因為現在幾乎每個人都能獲得同樣的芯片。當現有物理硬件中實現的任何功能受到市場的歡迎的同時,大量的仿制就出現了。

所以要將產品的區別建立在編程器件智能上,保護有價值的 IP,並且使競爭對手很難對其進行逆向工程。而且,即使硬件已經制造出來,產品仍可以通過“軟”設計進行創新並為產品增值,產品的成功就有了保障。而這些,都離不開可編程器件。可編程器件是實現“軟”設計的保障和載體。

設計電子設計工程師設計方法和設計內容在不斷變化
電子設計工程師的設計方法和內容其實也在一直變化,電子管時代,設計工程師要掌握電子管的性能和設計要點,晶體管時代,設計工程師要熟悉跟中電路的作用和搭建,集成電路誕生以后,設計工程師要熟悉IC 管腳的作用和功能,而設計工具從最早的草稿圖、軟件輔助設計也發展到電子設計自動化工具(EDA 軟件),以FPGA 為代表的可編程器件誕生后,設計工程師不但要設計硬件電路更要熟悉HDL、Verilog 等IC 設計語言,此外,還要熟悉接口、數字信號處理、算法、EDA 設計方法學等等,電子工程師要學習的知識日益增多。

未來的硬件工程師是什么樣的?
那么,未來的的硬件設計工程師是什么樣的?或者說未來的硬件設計工程是怎樣的?而已這樣說:以VHDL 或者Verilog 語言來表達設計意圖、以FPGA 做為硬件載體、以計算機為設計開發工具,以EDA 軟件為開發環境、以SoC、IP 等為綜合設計的方法,已經成為硬件設計工程的主要特征。可以預見,FPGA 將成為未來的硬件工程師必用的設計元素之一。

另外,FPGA 在應用中的其他顯著優勢是可以減少BOM 整合多個分立的數字器件( 例如一個很小很便宜的CPLD 可以替換好幾個74 系列芯片)、降低PCB 布線難度(MGT/GTP 等串行收發器將原本與需要三五十條線並行數據線替換為少量的串行線路)、可定制性( 可以自己寫代碼來支持非標准的接口),可擴展性( 可編程易修改方便升級)、加速面市時間( 只需關心功能實現,不需要再花時間制成專用IC) 等,這樣FPGA 帶給設計的公司的好處已經不是從成本體現了,它可以大幅度提升開發的效率!

最重要的是生態系統
我想大家可以注意到最近幾個有意思的事件:
1、賽靈思宣布和ARM戰略合作,未來FPGA中嵌入ARM硬內核並采用ARM的AMBA總線,雖然目前嵌入的是M1內核,但是未來會有更多內核嵌入,這就意味着FPGA把強大的處理功能和實時控制功能結合起來了,這樣催生的器件適用性會更廣了。
2、一些模擬巨頭如TI、ADI、LTC等開始提供針對FPGA的電源管理方案,可見它們看好FPGA的未來。
3、賽靈思CTO最近在采訪中透露FPGA的應用已經拓展到雲計算、綠色IT、智能電網、智能馬達、安全架構等等,未來的FPGA可能會成為應用最廣的半導體器件了。

綜上所述,我們就明白為什么工程師要掌握FPGA 開發知識了,希望本書有助於大家了解和掌握FPGA 開發。

第二章、FPGA基本知識與發展趨勢

FPGA 是英文Field Programmable Gate Array 的縮寫,即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC) 領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。它是當今數字系統設計的主要硬件平台,其主要特點就是完全由用戶通過軟件進行配置和編程,從而完成某種特定的功能,且可以反復擦寫。在修改和升級時,不需額外地改變PCB 電路板,只是在計算機上修改和更新程序,使硬件設計工作成為軟件開發工作,縮短了系統設計的周期,提高了實現的靈活性並降低了成本,因此獲得了廣大硬件工程師的青睞。

2.1 FPGA 結構和工作原理
2.1.1 夢想成就偉業

1984 年,在硅谷工作的Bernie Vonderschmitt、Ross Freeman 和 Jim Barnett 共同構建了一個設想,他們夢想創立一家不同於一般的公司。他們希望創建一家在整個新領域內開發和推出先進技術的公司。並且,他們還希望以這種方式領導它:在這里工作的人們熱愛他們的工作、享受工作的樂趣,並對他們所從事的工作着迷。

 

Ross Freeman(左)是FPGA的發明人,Bernie Vonderschmitt(右)是賽靈思公司的創始人
圖2-1 Ross Freeman(左)是FPGA的發明人,Bernie Vonderschmitt(右)是賽靈思公司的創始人
創造性地推出了“無晶圓半導體”公司的概念。
2009 年2 月18 日,Ross Freeman 因他的這項發明——現場可編程門陣列 (FPGA) 而榮登2009 美國發明家名人堂。

 

Freeman 先生的發明是一塊全部由“開放式門”組成的計算機芯片,其專利號為4,870,302。采用這種芯片,工程師可以根據需要進行編程,添加新的功能,滿足不斷發展的標准或規范要求,並可在設計的最后階段進行修改。

2.1.2 FPGA結構
對PROM、EPROM、E2PROM 熟悉的人都知道這些可編程器件的可編程原理是通過加高壓或紫外線導致三極管或MOS 管內部的載流子密度發生變化,實現所謂的可編程,但是這些器件或只能實現單次可編程或編程狀態難以穩定。FPGA 則不同,它采用了邏輯單元陣列LCA(Logic Cell Array) 這樣一個新概念,內部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block) 和內部連線(Interconnect)三個部分。

FPGA 的可編程實際上是改變了CLB 和IOB 的觸發器狀態,這樣,可以實現多次重復的編程由於FPGA 需要被反復燒寫,它實現組合邏輯的基本結構不可能像ASIC 那樣通過固定的與非門來完成,而只能采用一種易於反復配置的結構。查找表可以很好地滿足這一要求,目前主流FPGA 都采用了基於SRAM 工藝的查找表結構,也有一些軍品和宇航級FPGA 采用Flash 或者熔絲與反熔絲工藝的查找表結構。通過燒寫文件改變查找表內容的方法來實現對FPGA 的重復配置。

根據數字電路的基本知識可以知道,對於一個n 輸入的邏輯運算,不管是與或非運算還是異或運算等等,最多只可能存在2n 種結果。所以如果事先將相應的結果存放於一個存貯單元,就相當於實現了與非門電路的功能。FPGA 的原理也是如此,它通過燒寫文件去配置查找表的內容,從而在相同的電路情況下實現了不同的邏輯功能。

查找表(Look-Up-Table) 簡稱為LUT,LUT 本質上就是一個RAM。目前FPGA 中多使用4 輸入的LUT,所以每一個LUT 可以看成一個有4 位地址線的 的RAM。 當用戶通過原理圖或HDL 語言描述了一個邏輯電路以后,PLD/FPGA 開發軟件會自動計算邏輯電路的所有可能結果,並把真值表( 即結果) 事先寫入RAM,這樣,每輸入一個信號進行邏輯運算就等於輸入一個地址進行查表,找出地址對應的內容,然后輸出即可。

輸入與門的真值表
表2-1 輸入與門的真值表
從表中可以看到,LUT 具有和邏輯電路相同的功能。實際上,LUT 具有更快的執行速度和更大的規模。

 

由於基於LUT 的FPGA 具有很高的集成度,其器件密度從數萬門到數千萬門不等,可以完成極其復雜的時序與邏輯組合邏輯電路功能,所以適用於高速、高密度的高端數字邏輯電路設計領域。其組成部分主要有可編程輸入/ 輸出單元、基本可編程邏輯單元、內嵌SRAM、豐富的布線資源、底層嵌入功能單元、內嵌專用單元等,主要設計和生產廠家有賽靈思、Altera、Lattice、Actel、Atmel 和QuickLogic 等公司,其中最大的是美國賽靈思公司,占有可編程市場50% 以上的市場份額,比其他所有競爭對手市場份額的總和還多。

FPGA 是由存放在片內RAM 中的程序來設置其工作狀態的,因此,工作時需要對片內的RAM 進行編程。用戶可以根據不同的配置模式,采用不同的編程方式。

加電時,FPGA 芯片將EPROM 中數據讀入片內編程RAM 中,配置完成后,FPGA 進入工作狀態。掉電后,FPGA 恢復成白片,內部邏輯關系消失,因此,FPGA 能夠反復使用。FPGA 的編程無須專用的FPGA 編程器,只須用通用的EPROM、PROM 編程器即可。這樣,同一片FPGA,不同的編程數據,可以產生不同的電路功能。因此,FPGA 的使用非常靈活。

 

Xilinx Spartan-3系列FPGA
圖2-2 被廣泛應用的Xilinx Spartan-3系列FPGA
如前所述,FPGA 是由存放在片內的RAM 來設置其工作狀態的,因此工作時需要對片內RAM 進行編程。用戶可根據不同的配置模式,采用不同的編程方式。Xilinx FPGA 的常用配置模式有5 類:主串模式、從串模式、Select MAP 模式、Desktop 配置和直接SPI 配置。

 

目前,FPGA 市場占有率最高的兩大公司賽靈思公司和Altera 生產的FPGA 都是基於SRAM 工藝的,需要在使用時外接一個片外存儲器以保存程序。上電時,FPGA 將外部存儲器中的數據讀入片內RAM,完成配置后,進入工作狀態;掉電后FPGA 恢復為白片,內部邏輯消失。這樣FPGA 不僅能反復使用,還無需專門的FPGA編程器,只需通用的PROM、PROM 編程器即可。Actel、QuickLogic 等公司還提供反熔絲技術的FPGA,具有抗輻射、耐高低溫、低功耗和速度快等優點,在軍品和航空航天領域中應用較多,但這種FPGA 不能重復擦寫,開發初期比較麻煩,費用也比較昂貴。Lattice 是ISP 技術的發明者,在小規模PLD 應用上有一定的特色。早期的賽靈思公司產品一般不涉及軍品和宇航級市場,但目前已經有多款產品進入該類領域。

FPGA芯片內部結構
圖2-3 FPGA芯片內部結構
FPGA 芯片結構目前主流的FPGA 仍是基於查找表技術的,已經遠遠超出了先前版本的基本性能,並且整合了常用功能( 如RAM、時鍾管理和DSP) 的硬核(ASIC 型) 模塊。如圖2-3 所示( 注:圖2-3 只是一個示意圖,實際上每一個系列的FPGA 都有其相應的內部結構),FPGA 芯片主要由6 部分完成,分別為:可編程輸入輸出單元、基本可編程邏輯單元、完整的時鍾管理、嵌入塊式RAM、豐富的布線資源、內嵌的底層功能單元和內嵌專用硬件模塊。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM