官术网_书友最值得收藏!

第一部分 基本知識

第1章 FPGA開發概述

本章導讀

本章從FPGA的一些基本概念入手,將ASIC、ASSP、ARM、DSP與FPGA比對,同時也論及FPGA開發語言及主要廠商;接著對FPGA技術在嵌入式應用中的優勢和局限性進行討論;FPGA是一項綜合性很強的技術門類,因此我們在本章也會關注它所涉及的一些基本技能;最后我們將論述FPGA的應用領域和開發流程。當然了,如果你自認為已經入門FPGA,對于本章可能會提及的一些基礎概念耳熟能詳,那么不妨跳過本章。

1.1 FPGA基礎入門

2015年伊始,Intel欲出資百億美金收購Altera的新聞在半導體業內引發一場不小的轟動。而時隔不到半年,這則新聞居然成為現實,并且最終的收購價格167億美金也比傳聞要高出許多(如圖1-1所示)。在早些年里,其實Intel與Altera已經或多或少有些合作了。Intel此舉的動機非常明顯,不僅是希望在PC領域繼續拓展服務器市場與數據中心的應用——Altera的可編程器件在這方面能夠提供強勁的性能競爭力;而且也是期望借助Altera來擴寬自身的多元化發展戰略——Altera是目前唯一一家毛利率好于Intel的半導體公司,并且其三分之二的收入來自于電信、無線、軍事和太空等領域。無論如何,Altera能夠以其單一的FPGA產品線“傍上”Intel,或多或少都證明了FPGA存在的價值。

圖1-1 Intel與Altera的聯姻

要說Intel,誰人不曉,基本上家家戶戶都或多或少有一些帶著Intel烙印的家當;而反觀Altera,別人可以不知道,但是你要是不知道就要遭受各種鄙視了。身處電子行業,沒有玩過FPGA不稀奇,但是沒有聽說過FPGA就有些難為情了。FPGA? Altera?什么情況?好吧,就當你真的什么都不知道吧,下面先開始我們的“掃盲行動”。入過門的別嫌煩,直接略過本節就好。

1. FPGA是什么

簡單來說,FPGA就是“可反復編程的邏輯器件”。如圖1-2所示,這是一個Altera公司最新的Cyclone V Soc FPGA器件,從外觀上看,似乎和一般的CPU芯片沒有太大差別。

圖1-2 Altera公司最新的Cyclone V Soc FPGA器件

FPGA取 自Field Programmable Gate Array這 四個英文單詞的首個字母,譯為“現場(Field)可編程(Programmable)邏輯陣列(Gate Array)”。至于FPGA到底是什么,能夠干什么,又有什么過人之處?下面我們就把它和它的“師兄師弟”擺在一起,一一呈現這些問題的答案。

2. FPGA、ASIC和ASSP

拋開FPGA不提,大家一定都很熟悉ASIC與ASSP。所謂ASIC,即專用集成電路(Application Specific Integrated Circuit)的簡稱;而ASSP,即專用標準產品(Application Specific Standard Parts)的簡稱。電子產品中,它們無所不在,還真是比FPGA普及得多得多。但是ASIC以及ASSP的功能相對固定,它是為了專一功能或專一應用領域而生,希望對它進行任何的功能和性能的改善往往是無濟于事的。打個淺顯的比喻,如圖1-3所示,如果說ASIC或ASSP是布滿鉛字的印刷品,那么FPGA就是可以自由發揮的白紙一張。

圖1-3 ASIC/ASSP和FPGA就如同印刷品和白紙

使用了FPGA器件的電子產品,在產品發布后仍然可以對產品設計做出修改,大大方便了產品的更新以及針對新的協議標準做出的相應改進,從而可以加速產品的上市時間,并降低產品的失敗風險和維護成本。相對于無法對售后產品設計進行修改的ASIC和ASSP來說,這是FPGA特有的一個優勢。由于FPGA可編程的靈活性以及近年來電子技術領域的快速發展,FPGA也正在向高集成、高性能、低功耗、低價格的方向發展,并且逐漸具備了與ASIC和ASSP相當的性能,使其被廣泛地應用在各行各業的電子及通信設備中。

3. FPGA、ARM和DSP

與ASIC相比,FPGA、ARM和DSP都具備與生俱來的可編程特性。或許身處開發第一線的底層工程師要說No了,很多ASIC不是也開放了一些可配置選項,實現“可編程”特性嗎?是的,但與FPGA、ARM、DSP能夠“為所欲為”的任意操控一整個系統而言,ASIC的那點“可編程”性的確擺不上臺面。當然,換個角度來看,FPGA、ARM和DSP都或多或少集成了一些ASIC功能,正是這些ASIC功能,加上“可編程”特性,使得它們相互區別開了,并且各自獨霸一方。

ARM(Advanced RISC Machines)是微處理器行業的一家知名企業,設計了大量高性能、廉價、耗能低的RISC處理器、相關技術及軟件。由ARM公司設計的處理器風靡全球,大有嵌入式系統無處不ARM的趨勢。因此,我們通常所說的ARM,更多的是指ARM公司的處理器,即ARM處理器,如圖1-4所示。ARM通常包含一顆強大的處理器內核,并且為這顆處理器量身配套了很多成熟的軟件工具以及高級編程語言,這也是它備受青睞的原因之一。當然了,ARM不只是一顆處理器而已,因為在ARM內核處理器周邊,各種各樣精于控制的外設比比皆是,例如GPIO、PWM、AD/DA、UART、SPI、IIC……ARM的長處是控制和管理,在很多工業自動化中大有用武之地。

圖1-4 ARM處理器

DSP(digital singnal processor),如圖1-5所示,即數字信號處理器,是一種獨特的微處理器,有自己的完整指令系統,能夠進行高速、高吞吐量的數字信號處理。它不像ARM那么“胡里花俏”,它更“專”。它只專注一件事,就是對各種語音、數據和視頻做運算處理;或者也可以這么說,DSP是為各種數學運算量身打造的。

圖1-5 DSP

相比之下,套用近些年一句業內很火的廣告詞“All Programmable”來形容FPGA再合適不過了。ARM雖然有很多外設,DSP雖然具備強大的信號運算能力,但在FPGA眼里,這些都不過是“小菜一碟”。或許說得有些過了,但是,毫不夸張地講,ARM能做的,DSP能做的,FPGA一定也都能做;而FPGA可以做的,ARM不一定行,DSP也不一定行。在很多原型產品設計過程中,時不時有人會提出基于FPGA的方案。在一些靈活性要求高、定制化程度高、性能要求也特別高的場合,FPGA(如圖1-6所示)再合適不過了,甚至有時會是設計者別無選擇的選擇;當然了,客觀來看,FPGA固然強大,它高高在上的成本、功耗和開發復雜性還是會讓很多潛在的目標產品望而卻步,而在這些方面,ARM和DSP正好彌補了FPGA所帶來的缺憾。

圖1-6 FPGA器件

總而言之,在嵌入式系統設計領域,FPGA、ARM和DSP互有優劣,各有所長。很多時候它們所實現的功能無法簡單的相互替代,否則我們就不會見到如TI的達芬奇系列ARM中有DSP、Xilinx的Zynq或Altera的Soc FPGA中有ARM的共生現象了。FPGA、ARM和DSP,它們將在未來很長的一段時間內呈現三足鼎立的局面。

4. Verilog與VHDL

說到FPGA,我們一定關心它的開發方式。FPGA開發本質上就是一些邏輯電路的實現而已,因此早期的FPGA開發通過繪制原理圖(和現在的硬件工程師繪制原理圖的方式大體相仿)完成。而隨著FPGA規模和復雜性的不斷攀升,這種落后的設計方式幾乎已經被大家遺忘了,取而代之的是能夠實現更好的編輯性和可移植性的代碼輸入方式。

說到FPGA的設計代碼方式,經過近三十年的發展,只有Verilog和VHDL二者最終脫穎而出,成為了公認的行業標準。對于這兩種不同的語法,它們的歷史淵源、孰優孰劣這里就不提了。美國和中國臺灣地區的邏輯設計公司大都以Verilog語言為主,國內目前學習和使用Verilog的人數也在逐漸超過VHDL。從學習的角度來講,Verilog相對VHDL有著快速上手、易于使用的特點,博得了更多工程師的青睞。即便是從來沒有接觸過Verilog的初學者,只要憑著一點C語言的底子加上一些硬件基礎,三兩個月很快就可以熟悉Verilog語法。當然了,僅僅是入門還是遠遠不夠的,真正掌握Verilog必須花費很多時間和精力,并通過一些項目的實踐,才會慢慢對可編程邏輯器件的設計有更深入的理解和認識。

5. Altera、Xilinx和Lattice

相比于互聯網的那些“暴發戶”,半導體行業則更講究歷史底蘊,“今天丑小鴨,明天白天鵝”的故事要少得多,因此兩家歷史最為久遠的FPGA供應商Altera和Xilinx憑著一直以來的專注,確保了它們在這個行業的統治地位。當然了,很大程度上也是由于FPGA技術相對于一般的半導體產品有著更高的門檻,從器件本身到一系列配套的工具鏈,再到終端客戶的技術支持——這一籮筐的麻煩事,想想就頭疼。

不過,提醒大家注意的是,開篇我們提到的Intel大手筆新聞,無論是不是空穴來風,最終Altera是否能夠嫁入豪門,這都在預示著一個新的趨勢——FPGA技術將迎來它的又一個繁茂復活的春天。

嘮叨一大氣,趕緊回到我們的主題上來。目前FPGA器件的主流廠商Altera公司和Xilinx公司,它們的可編程邏輯器件占到了全球市場的60%以上。從明面上的“競爭對手”到今天暗地里還客氣地互稱“友商”,不難看出兩家公司走過歷史長河,雖然有“明爭暗斗”,但確也不經意間的彼此促進,互相激勵。的確,翻看FPGA的發展史,往往充斥著這兩家公司不斷上演的“你方唱罷我登場”的情節,并且偶爾也會有第三者如Lattice小弟的“插足”戲份。不過這好在新千年過后,各方重新定位,Altera和Xilinx便牢牢把持住象征統治地位的中高端市場,而Lattice也只能在低端市場找找“山中無老虎,猴子稱大王”的感覺了。

不論是Altera、Xilinx還是Lattice,甚至一些后來者,如筆者接觸過的國內FPGA廠商京微雅格,它們的FPGA器件內部結構雖然略有差異,但在開發流程、開發工具乃至原廠提供的各種支持上,都是“換湯不換藥”的。所以,這對于用戶而言,絕對是一個福音,只要好好掌握一套方法論,任何廠商的器件都可以通吃。

1.2 FPGA的優勢與局限性

若要準確評估FPGA技術能否滿足開發產品的功能、性能以及其他各方面的需求,深入理解FPGA技術是至關重要的。在產品的整個生命周期中,如果產品功能可能會有較大的升級或變更,那么使用FPGA技術來實現就會有很大的優勢。

在考慮是否使用FPGA技術來實現目標產品時,我們需要重點從以下幾個方面進行評估。

? 可升級性——產生在設計過程中,甚至將來產品發布后,是否有較大的功能升級需求?是否應該選擇具有易于更換的同等級、不同規模的FPGA器件?

? 開發周期——產品開發周期是否非常緊迫?若使用FPGA開發,是否比其他方案具有更高的開發難度,能否面對必須在最短的時間內開發出產品的挑戰?

? 產品性能——產品的數據速率、吞吐量或處理能力是否有特殊要求?是否應該選擇性能更好或速度等級更快的FPGA器件?

? 實現成本——是否有基于其他ASIC、ARM或DSP的方案,能夠以更低的成本實現設計?FPGA開發所需的工具、技術支持、培訓等額外的成本有哪些?通過開發可復用的設計,是否可以將開發成本分攤到多個項目中?是否有已經實現的參考設計或者IP核可供使用?

? 可用性——器件的性能和尺寸的實現,是否可以趕上量產?是否有固定功能的器件可以代替?在產品及其衍生品的開發過程中,是否實現了固定功能?

? 其他限制因素——產品是否要求低功耗設計?電路板面積是否大大受限?工程實現中是否還有其他的特殊限制?

基于以上的這些考慮因素,我們可以從如下三大方面總結出在產品的開發或產品的生命周期中,使用FPGA技術實現所能夠帶來的潛在優勢。

? 靈活性

可重編程,可定制。

易于維護,方便移植、升級或擴展。

降低NRE成本,加速產品上市時間。

支持豐富的外設接口,可根據需求配置。

? 并行性

更快的速度、更高的帶寬。

滿足實時處理的要求。

? 集成性

更多的接口和協議支持。

可將各種端接匹配元件整合到器件內部,有效降低BOM成本。

單片解決方案,可以替代很多數字芯片。

減少板級走線,有效降低布局布線難度。

當然了,在很多情況下,FPGA不是萬能的。FPGA技術也存在著一些固有的局限性。從以下這些方面看,選擇FPGA技術來實現產品的開發設計有時并不是明智的決定。

? 在某些性能上,FPGA可能比不上專用芯片;或者至少在穩定性方面,FPGA可能要遜色一些。

? 如果設計不需要太多的靈活性,FPGA的靈活性反而是一種浪費,會潛在增加產品的成本。

? 相比特定功能、應用集中的ASIC,使用FPGA實現相同功能可能產生更高的功耗。

? 在FPGA中除了實現專用標準器件(ASSP)所具有的復雜功能,還要添加一些額外的功能,實屬一大挑戰。FPGA的設計復雜性和難度可能會給產品的開發帶來一場噩夢。

1.3 FPGA開發所需的技能

前面的文字已經做了很多鋪墊,相信讀者在初學FPGA時也一定早有耳聞。的確,FPGA是一門相對復雜的技術,先不說設計本身,單是器件的內部結構、煩瑣的開發流程、開發過程中需要接觸的各種EDA工具,有時都會把工程師們折騰得暈頭轉向。

相比于單一處理器的開發,今天的FPGA開發卻可能會涉及嵌入式系統設計的方方面面。如圖1-7所示,很多時候,FPGA工程師需要具備的技能可能要比其他任何設計團隊多得多,如系統設計、功能分配、嵌入式處理器的實現、DSP算法的實現、HDL設計輸入、仿真、設計優化和高速電路板的布局布線以及特定信號接口的實現等。

圖1-7 FPGA技術是多種設計技能的交叉

至今在業內可能還有爭論,到底FPGA是屬于純粹軟件的范疇還是純粹硬件的范疇。從FPGA設計的方式和手段上看,和軟件有些相似;但從FPGA設計的思想和實現方面看,更多的趨向于硬件層面。因此,用“軟硬兼施”這個詞來形容FPGA工程師的工作就再貼切不過了。我們說的“軟”,一方面的確是傳統意義上的軟件編程工作可能需要在FPGA中實現,另一方面的“軟”則指的是FPGA邏輯實現所需要的代碼輸入方式。

單純的軟和硬,還只是很低級的技能。無論是在FPGA中內嵌了處理器,還是FPGA外部需要接口的處理器,FPGA都不可避免地要和純軟件打交道,這種軟硬銜接部分的設計非常有講究,這也是FPGA工程師系統思維的一種要求。

雖然FPGA開發中需要涉及眾多的技能門類,對于一些規模不大的工程項目,可能FPGA工程師確實要承擔起“既當爹又當媽”的重任;但是對于中大規模的工程項目,一定會有一個分工明確的團隊協作完成。這樣的團隊,絕對是一個不折不扣的嵌入式系統精英大薈萃:板級硬件工程師進行FPGA的板級原理圖繪制、layout等工作;FPGA工程師做底層邏輯實現;嵌入式軟件工程師做軟件編程工作;也可能會有算法工程師的參與;當然還可能會有系統工程師統領全局(實際情況是,這個角色往往由項目經理兼任),對各個模塊(包括軟硬銜接部分)和接口進行劃分和界定。

1.4 FPGA應用領域

目前FPGA雖然還受制于較高的開發門檻以及器件本身昂貴的價格,并從應用的普及率上來看和ARM、DSP還是有一定的差距,但是在非常多的應用場合,工程師們還是要別無選擇地使用它。FPGA所固有的靈活性和并行性是其他芯片所不具備的,所以它的應用領域涵蓋得很廣。從技術角度來看,主要是有以下需求的應用場合(如圖1-8所示):

圖1-8 FPGA應用精彩紛呈

? 邏輯粘合,如一些嵌入式處理常常需要地址或外設擴展,CPLD器件尤其適合。已經少有項目會選擇一顆FPGA器件專門用于邏輯粘合的應用,但是在已經使用的FPGA器件中順便做些邏輯粘合的工作倒是非常普遍。

? 實時控制,如液晶屏或電機等設備的驅動控制,此類應用也以CPLD或低端FPGA為主。

? 高速信號采集和處理,如高速AD前端或圖像前端的采集和預處理,近年來持續升溫的機器視覺應用也幾乎無一例外地使用了FPGA器件。

? 協議實現,如更新較快的各種有線和無線通信標準、廣播視頻及其編解碼算法、各種加密算法等,使用FPGA比ASIC更有競爭力。

? 各種原型驗證系統,由于工藝的提升,流片成本也不斷攀升,而在流片前使用FPGA做前期的驗證已成為非常流行的做法。

? 片上系統,如Altera公司的Soc FPGA和Xilinx公司的Zynq,這類FPGA器件,既有成熟的ARM硬核處理器,又有豐富的FPGA資源,大有單芯片一統天下的架勢。

當然了,若從具體的應用領域來看,FPGA在電信、無線通信、有線通信、消費電子產品、視頻和圖像處理、車載、航空航天和國防、ASIC原型開發、測試測量、存儲、數據安全、醫療電子、高性能計算以及各種定制設計中都有涉獵。總而言之,FPGA所誕生并發展的時代是一個好時代,與生俱來的一些特性也注定了它將會在這個時代的大舞臺上大放光彩。

1.5 FPGA開發流程

如圖1-9所示。這個流程圖是一個相對比較高等級的FPGA開發流程,從項目提上議程開始,設計者需要進行FPGA功能的需求分析,然后進行模塊的劃分,比較復雜和龐大的設計則會通過模塊劃分把工作交給一個團隊的多人協作完成。各個模塊的具體任務和功能劃分完畢(通常各個模塊間的通信和接口方式也同時被確定),則可以著手進行詳細設計,包括代碼輸入、綜合優化、實現(映射和布局布線)。為了保證設計達到預期要求,各種設計的約束輸入以及仿真驗證也穿插其間。在EDA工具上驗證無誤后,則可以生成下載配置文件燒錄到實際器件中進行板級的調試工作。從圖1-9中的箭頭示意不難看出,設計的迭代性是FPGA開發過程中的一個重要特點,這就要求設計者從一開始就要非常認真細致,否則后續的很多工作量可能就是不斷返工。

圖1-9 FPGA開發流程

當然了,對于沒有實際工程經驗的初學者而言,這個流程圖可能不是那么容易理解。不過沒有關系,我們會簡化這個過程,從實際操作角度,以一個比較簡化的順序的方式來理解這個流程。如圖1-10所示,從大的方面來看,FPGA開發流程不過是三個階段,第一個階段是概念階段,或者也可以稱之為架構階段,這個階段的任務是項目前期的立項準備,如需求的定義和分析、各個設計模塊的劃分;第二個階段是設計實現階段,這個階段包括編寫RTL代碼、并對其進行初步的功能驗證、邏輯綜合和布局布線、時序驗證,這一階段是詳細設計階段;第三個階段是FPGA器件實現,除了器件燒錄和板級調試外,其實這個階段也應該包括第二個階段的布局布線和時序驗證,因為這兩個步驟都是和FPGA器件緊密相關的。我們這么粗略的三個階段劃分并沒有把FPGA整個設計流程完全的孤立開來,恰恰相反,從我們的階段劃分中,我們也看到FPGA設計的各個環節是緊密銜接、相互影響的。

圖1-10 簡化的FPGA開發流程

主站蜘蛛池模板: 山东省| 紫阳县| 兴业县| 西平县| 江城| 钟山县| 永登县| 武城县| 康乐县| 时尚| 怀柔区| 手游| 平南县| 宣城市| 华池县| 虞城县| 区。| 华池县| 融水| 通州市| 安塞县| 富锦市| 绩溪县| 新河县| 恭城| 清新县| 邻水| 巴林左旗| 砀山县| 临汾市| 龙江县| 呼和浩特市| 青海省| 平利县| 龙游县| 邢台县| 乌鲁木齐县| 平顺县| 育儿| 旺苍县| 三都|