- 例說(shuō)FPGA:可直接用于工程項(xiàng)目的第一手經(jīng)驗(yàn)
- 吳厚航
- 726字
- 2019-01-03 10:38:22
第一部分 基本知識(shí)
第1章 FPGA開發(fā)概述
本章導(dǎo)讀
本章從FPGA的一些基本概念入手,將ASIC、ASSP、ARM、DSP與FPGA比對(duì),同時(shí)也論及FPGA開發(fā)語(yǔ)言及主要廠商;接著對(duì)FPGA技術(shù)在嵌入式應(yīng)用中的優(yōu)勢(shì)和局限性進(jìn)行討論;FPGA是一項(xiàng)綜合性很強(qiáng)的技術(shù)門類,因此我們?cè)诒菊乱矔?huì)關(guān)注它所涉及的一些基本技能;最后我們將論述FPGA的應(yīng)用領(lǐng)域和開發(fā)流程。當(dāng)然了,如果你自認(rèn)為已經(jīng)入門FPGA,對(duì)于本章可能會(huì)提及的一些基礎(chǔ)概念耳熟能詳,那么不妨跳過(guò)本章。
1.1 FPGA基礎(chǔ)入門
2015年伊始,Intel欲出資百億美金收購(gòu)Altera的新聞在半導(dǎo)體業(yè)內(nèi)引發(fā)一場(chǎng)不小的轟動(dòng)。而時(shí)隔不到半年,這則新聞居然成為現(xiàn)實(shí),并且最終的收購(gòu)價(jià)格167億美金也比傳聞要高出許多(如圖1-1所示)。在早些年里,其實(shí)Intel與Altera已經(jīng)或多或少有些合作了。Intel此舉的動(dòng)機(jī)非常明顯,不僅是希望在PC領(lǐng)域繼續(xù)拓展服務(wù)器市場(chǎng)與數(shù)據(jù)中心的應(yīng)用——Altera的可編程器件在這方面能夠提供強(qiáng)勁的性能競(jìng)爭(zhēng)力;而且也是期望借助Altera來(lái)擴(kuò)寬自身的多元化發(fā)展戰(zhàn)略——Altera是目前唯一一家毛利率好于Intel的半導(dǎo)體公司,并且其三分之二的收入來(lái)自于電信、無(wú)線、軍事和太空等領(lǐng)域。無(wú)論如何,Altera能夠以其單一的FPGA產(chǎn)品線“傍上”Intel,或多或少都證明了FPGA存在的價(jià)值。

圖1-1 Intel與Altera的聯(lián)姻
要說(shuō)Intel,誰(shuí)人不曉,基本上家家戶戶都或多或少有一些帶著Intel烙印的家當(dāng);而反觀Altera,別人可以不知道,但是你要是不知道就要遭受各種鄙視了。身處電子行業(yè),沒(méi)有玩過(guò)FPGA不稀奇,但是沒(méi)有聽說(shuō)過(guò)FPGA就有些難為情了。FPGA? Altera?什么情況?好吧,就當(dāng)你真的什么都不知道吧,下面先開始我們的“掃盲行動(dòng)”。入過(guò)門的別嫌煩,直接略過(guò)本節(jié)就好。
1. FPGA是什么
簡(jiǎn)單來(lái)說(shuō),F(xiàn)PGA就是“可反復(fù)編程的邏輯器件”。如圖1-2所示,這是一個(gè)Altera公司最新的Cyclone V Soc FPGA器件,從外觀上看,似乎和一般的CPU芯片沒(méi)有太大差別。

圖1-2 Altera公司最新的Cyclone V Soc FPGA器件
FPGA取 自Field Programmable Gate Array這 四個(gè)英文單詞的首個(gè)字母,譯為“現(xiàn)場(chǎng)(Field)可編程(Programmable)邏輯陣列(Gate Array)”。至于FPGA到底是什么,能夠干什么,又有什么過(guò)人之處?下面我們就把它和它的“師兄師弟”擺在一起,一一呈現(xiàn)這些問(wèn)題的答案。
2. FPGA、ASIC和ASSP
拋開FPGA不提,大家一定都很熟悉ASIC與ASSP。所謂ASIC,即專用集成電路(Application Specific Integrated Circuit)的簡(jiǎn)稱;而ASSP,即專用標(biāo)準(zhǔn)產(chǎn)品(Application Specific Standard Parts)的簡(jiǎn)稱。電子產(chǎn)品中,它們無(wú)所不在,還真是比FPGA普及得多得多。但是ASIC以及ASSP的功能相對(duì)固定,它是為了專一功能或?qū)R粦?yīng)用領(lǐng)域而生,希望對(duì)它進(jìn)行任何的功能和性能的改善往往是無(wú)濟(jì)于事的。打個(gè)淺顯的比喻,如圖1-3所示,如果說(shuō)ASIC或ASSP是布滿鉛字的印刷品,那么FPGA就是可以自由發(fā)揮的白紙一張。

圖1-3 ASIC/ASSP和FPGA就如同印刷品和白紙
使用了FPGA器件的電子產(chǎn)品,在產(chǎn)品發(fā)布后仍然可以對(duì)產(chǎn)品設(shè)計(jì)做出修改,大大方便了產(chǎn)品的更新以及針對(duì)新的協(xié)議標(biāo)準(zhǔn)做出的相應(yīng)改進(jìn),從而可以加速產(chǎn)品的上市時(shí)間,并降低產(chǎn)品的失敗風(fēng)險(xiǎn)和維護(hù)成本。相對(duì)于無(wú)法對(duì)售后產(chǎn)品設(shè)計(jì)進(jìn)行修改的ASIC和ASSP來(lái)說(shuō),這是FPGA特有的一個(gè)優(yōu)勢(shì)。由于FPGA可編程的靈活性以及近年來(lái)電子技術(shù)領(lǐng)域的快速發(fā)展,F(xiàn)PGA也正在向高集成、高性能、低功耗、低價(jià)格的方向發(fā)展,并且逐漸具備了與ASIC和ASSP相當(dāng)?shù)男阅埽蛊浔粡V泛地應(yīng)用在各行各業(yè)的電子及通信設(shè)備中。
3. FPGA、ARM和DSP
與ASIC相比,F(xiàn)PGA、ARM和DSP都具備與生俱來(lái)的可編程特性。或許身處開發(fā)第一線的底層工程師要說(shuō)No了,很多ASIC不是也開放了一些可配置選項(xiàng),實(shí)現(xiàn)“可編程”特性嗎?是的,但與FPGA、ARM、DSP能夠“為所欲為”的任意操控一整個(gè)系統(tǒng)而言,ASIC的那點(diǎn)“可編程”性的確擺不上臺(tái)面。當(dāng)然,換個(gè)角度來(lái)看,F(xiàn)PGA、ARM和DSP都或多或少集成了一些ASIC功能,正是這些ASIC功能,加上“可編程”特性,使得它們相互區(qū)別開了,并且各自獨(dú)霸一方。
ARM(Advanced RISC Machines)是微處理器行業(yè)的一家知名企業(yè),設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的RISC處理器、相關(guān)技術(shù)及軟件。由ARM公司設(shè)計(jì)的處理器風(fēng)靡全球,大有嵌入式系統(tǒng)無(wú)處不ARM的趨勢(shì)。因此,我們通常所說(shuō)的ARM,更多的是指ARM公司的處理器,即ARM處理器,如圖1-4所示。ARM通常包含一顆強(qiáng)大的處理器內(nèi)核,并且為這顆處理器量身配套了很多成熟的軟件工具以及高級(jí)編程語(yǔ)言,這也是它備受青睞的原因之一。當(dāng)然了,ARM不只是一顆處理器而已,因?yàn)樵贏RM內(nèi)核處理器周邊,各種各樣精于控制的外設(shè)比比皆是,例如GPIO、PWM、AD/DA、UART、SPI、IIC……ARM的長(zhǎng)處是控制和管理,在很多工業(yè)自動(dòng)化中大有用武之地。

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

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

圖1-6 FPGA器件
總而言之,在嵌入式系統(tǒng)設(shè)計(jì)領(lǐng)域,F(xiàn)PGA、ARM和DSP互有優(yōu)劣,各有所長(zhǎng)。很多時(shí)候它們所實(shí)現(xiàn)的功能無(wú)法簡(jiǎn)單的相互替代,否則我們就不會(huì)見到如TI的達(dá)芬奇系列ARM中有DSP、Xilinx的Zynq或Altera的Soc FPGA中有ARM的共生現(xiàn)象了。FPGA、ARM和DSP,它們將在未來(lái)很長(zhǎng)的一段時(shí)間內(nèi)呈現(xiàn)三足鼎立的局面。
4. Verilog與VHDL
說(shuō)到FPGA,我們一定關(guān)心它的開發(fā)方式。FPGA開發(fā)本質(zhì)上就是一些邏輯電路的實(shí)現(xiàn)而已,因此早期的FPGA開發(fā)通過(guò)繪制原理圖(和現(xiàn)在的硬件工程師繪制原理圖的方式大體相仿)完成。而隨著FPGA規(guī)模和復(fù)雜性的不斷攀升,這種落后的設(shè)計(jì)方式幾乎已經(jīng)被大家遺忘了,取而代之的是能夠?qū)崿F(xiàn)更好的編輯性和可移植性的代碼輸入方式。
說(shuō)到FPGA的設(shè)計(jì)代碼方式,經(jīng)過(guò)近三十年的發(fā)展,只有Verilog和VHDL二者最終脫穎而出,成為了公認(rèn)的行業(yè)標(biāo)準(zhǔn)。對(duì)于這兩種不同的語(yǔ)法,它們的歷史淵源、孰優(yōu)孰劣這里就不提了。美國(guó)和中國(guó)臺(tái)灣地區(qū)的邏輯設(shè)計(jì)公司大都以Verilog語(yǔ)言為主,國(guó)內(nèi)目前學(xué)習(xí)和使用Verilog的人數(shù)也在逐漸超過(guò)VHDL。從學(xué)習(xí)的角度來(lái)講,Verilog相對(duì)VHDL有著快速上手、易于使用的特點(diǎn),博得了更多工程師的青睞。即便是從來(lái)沒(méi)有接觸過(guò)Verilog的初學(xué)者,只要憑著一點(diǎn)C語(yǔ)言的底子加上一些硬件基礎(chǔ),三兩個(gè)月很快就可以熟悉Verilog語(yǔ)法。當(dāng)然了,僅僅是入門還是遠(yuǎn)遠(yuǎn)不夠的,真正掌握Verilog必須花費(fèi)很多時(shí)間和精力,并通過(guò)一些項(xiàng)目的實(shí)踐,才會(huì)慢慢對(duì)可編程邏輯器件的設(shè)計(jì)有更深入的理解和認(rèn)識(shí)。
5. Altera、Xilinx和Lattice
相比于互聯(lián)網(wǎng)的那些“暴發(fā)戶”,半導(dǎo)體行業(yè)則更講究歷史底蘊(yùn),“今天丑小鴨,明天白天鵝”的故事要少得多,因此兩家歷史最為久遠(yuǎn)的FPGA供應(yīng)商Altera和Xilinx憑著一直以來(lái)的專注,確保了它們?cè)谶@個(gè)行業(yè)的統(tǒng)治地位。當(dāng)然了,很大程度上也是由于FPGA技術(shù)相對(duì)于一般的半導(dǎo)體產(chǎn)品有著更高的門檻,從器件本身到一系列配套的工具鏈,再到終端客戶的技術(shù)支持——這一籮筐的麻煩事,想想就頭疼。
不過(guò),提醒大家注意的是,開篇我們提到的Intel大手筆新聞,無(wú)論是不是空穴來(lái)風(fēng),最終Altera是否能夠嫁入豪門,這都在預(yù)示著一個(gè)新的趨勢(shì)——FPGA技術(shù)將迎來(lái)它的又一個(gè)繁茂復(fù)活的春天。
嘮叨一大氣,趕緊回到我們的主題上來(lái)。目前FPGA器件的主流廠商Altera公司和Xilinx公司,它們的可編程邏輯器件占到了全球市場(chǎng)的60%以上。從明面上的“競(jìng)爭(zhēng)對(duì)手”到今天暗地里還客氣地互稱“友商”,不難看出兩家公司走過(guò)歷史長(zhǎng)河,雖然有“明爭(zhēng)暗斗”,但確也不經(jīng)意間的彼此促進(jìn),互相激勵(lì)。的確,翻看FPGA的發(fā)展史,往往充斥著這兩家公司不斷上演的“你方唱罷我登場(chǎng)”的情節(jié),并且偶爾也會(huì)有第三者如Lattice小弟的“插足”戲份。不過(guò)這好在新千年過(guò)后,各方重新定位,Altera和Xilinx便牢牢把持住象征統(tǒng)治地位的中高端市場(chǎng),而Lattice也只能在低端市場(chǎng)找找“山中無(wú)老虎,猴子稱大王”的感覺(jué)了。
不論是Altera、Xilinx還是Lattice,甚至一些后來(lái)者,如筆者接觸過(guò)的國(guó)內(nèi)FPGA廠商京微雅格,它們的FPGA器件內(nèi)部結(jié)構(gòu)雖然略有差異,但在開發(fā)流程、開發(fā)工具乃至原廠提供的各種支持上,都是“換湯不換藥”的。所以,這對(duì)于用戶而言,絕對(duì)是一個(gè)福音,只要好好掌握一套方法論,任何廠商的器件都可以通吃。
1.2 FPGA的優(yōu)勢(shì)與局限性
若要準(zhǔn)確評(píng)估FPGA技術(shù)能否滿足開發(fā)產(chǎn)品的功能、性能以及其他各方面的需求,深入理解FPGA技術(shù)是至關(guān)重要的。在產(chǎn)品的整個(gè)生命周期中,如果產(chǎn)品功能可能會(huì)有較大的升級(jí)或變更,那么使用FPGA技術(shù)來(lái)實(shí)現(xiàn)就會(huì)有很大的優(yōu)勢(shì)。
在考慮是否使用FPGA技術(shù)來(lái)實(shí)現(xiàn)目標(biāo)產(chǎn)品時(shí),我們需要重點(diǎn)從以下幾個(gè)方面進(jìn)行評(píng)估。
? 可升級(jí)性——產(chǎn)生在設(shè)計(jì)過(guò)程中,甚至將來(lái)產(chǎn)品發(fā)布后,是否有較大的功能升級(jí)需求?是否應(yīng)該選擇具有易于更換的同等級(jí)、不同規(guī)模的FPGA器件?
? 開發(fā)周期——產(chǎn)品開發(fā)周期是否非常緊迫?若使用FPGA開發(fā),是否比其他方案具有更高的開發(fā)難度,能否面對(duì)必須在最短的時(shí)間內(nèi)開發(fā)出產(chǎn)品的挑戰(zhàn)?
? 產(chǎn)品性能——產(chǎn)品的數(shù)據(jù)速率、吞吐量或處理能力是否有特殊要求?是否應(yīng)該選擇性能更好或速度等級(jí)更快的FPGA器件?
? 實(shí)現(xiàn)成本——是否有基于其他ASIC、ARM或DSP的方案,能夠以更低的成本實(shí)現(xiàn)設(shè)計(jì)?FPGA開發(fā)所需的工具、技術(shù)支持、培訓(xùn)等額外的成本有哪些?通過(guò)開發(fā)可復(fù)用的設(shè)計(jì),是否可以將開發(fā)成本分?jǐn)偟蕉鄠€(gè)項(xiàng)目中?是否有已經(jīng)實(shí)現(xiàn)的參考設(shè)計(jì)或者IP核可供使用?
? 可用性——器件的性能和尺寸的實(shí)現(xiàn),是否可以趕上量產(chǎn)?是否有固定功能的器件可以代替?在產(chǎn)品及其衍生品的開發(fā)過(guò)程中,是否實(shí)現(xiàn)了固定功能?
? 其他限制因素——產(chǎn)品是否要求低功耗設(shè)計(jì)?電路板面積是否大大受限?工程實(shí)現(xiàn)中是否還有其他的特殊限制?
基于以上的這些考慮因素,我們可以從如下三大方面總結(jié)出在產(chǎn)品的開發(fā)或產(chǎn)品的生命周期中,使用FPGA技術(shù)實(shí)現(xiàn)所能夠帶來(lái)的潛在優(yōu)勢(shì)。
? 靈活性
可重編程,可定制。
易于維護(hù),方便移植、升級(jí)或擴(kuò)展。
降低NRE成本,加速產(chǎn)品上市時(shí)間。
支持豐富的外設(shè)接口,可根據(jù)需求配置。
? 并行性
更快的速度、更高的帶寬。
滿足實(shí)時(shí)處理的要求。
? 集成性
更多的接口和協(xié)議支持。
可將各種端接匹配元件整合到器件內(nèi)部,有效降低BOM成本。
單片解決方案,可以替代很多數(shù)字芯片。
減少板級(jí)走線,有效降低布局布線難度。
當(dāng)然了,在很多情況下,F(xiàn)PGA不是萬(wàn)能的。FPGA技術(shù)也存在著一些固有的局限性。從以下這些方面看,選擇FPGA技術(shù)來(lái)實(shí)現(xiàn)產(chǎn)品的開發(fā)設(shè)計(jì)有時(shí)并不是明智的決定。
? 在某些性能上,F(xiàn)PGA可能比不上專用芯片;或者至少在穩(wěn)定性方面,F(xiàn)PGA可能要遜色一些。
? 如果設(shè)計(jì)不需要太多的靈活性,F(xiàn)PGA的靈活性反而是一種浪費(fèi),會(huì)潛在增加產(chǎn)品的成本。
? 相比特定功能、應(yīng)用集中的ASIC,使用FPGA實(shí)現(xiàn)相同功能可能產(chǎn)生更高的功耗。
? 在FPGA中除了實(shí)現(xiàn)專用標(biāo)準(zhǔn)器件(ASSP)所具有的復(fù)雜功能,還要添加一些額外的功能,實(shí)屬一大挑戰(zhàn)。FPGA的設(shè)計(jì)復(fù)雜性和難度可能會(huì)給產(chǎn)品的開發(fā)帶來(lái)一場(chǎng)噩夢(mèng)。
1.3 FPGA開發(fā)所需的技能
前面的文字已經(jīng)做了很多鋪墊,相信讀者在初學(xué)FPGA時(shí)也一定早有耳聞。的確,F(xiàn)PGA是一門相對(duì)復(fù)雜的技術(shù),先不說(shuō)設(shè)計(jì)本身,單是器件的內(nèi)部結(jié)構(gòu)、煩瑣的開發(fā)流程、開發(fā)過(guò)程中需要接觸的各種EDA工具,有時(shí)都會(huì)把工程師們折騰得暈頭轉(zhuǎn)向。
相比于單一處理器的開發(fā),今天的FPGA開發(fā)卻可能會(huì)涉及嵌入式系統(tǒng)設(shè)計(jì)的方方面面。如圖1-7所示,很多時(shí)候,F(xiàn)PGA工程師需要具備的技能可能要比其他任何設(shè)計(jì)團(tuán)隊(duì)多得多,如系統(tǒng)設(shè)計(jì)、功能分配、嵌入式處理器的實(shí)現(xiàn)、DSP算法的實(shí)現(xiàn)、HDL設(shè)計(jì)輸入、仿真、設(shè)計(jì)優(yōu)化和高速電路板的布局布線以及特定信號(hào)接口的實(shí)現(xiàn)等。

圖1-7 FPGA技術(shù)是多種設(shè)計(jì)技能的交叉
至今在業(yè)內(nèi)可能還有爭(zhēng)論,到底FPGA是屬于純粹軟件的范疇還是純粹硬件的范疇。從FPGA設(shè)計(jì)的方式和手段上看,和軟件有些相似;但從FPGA設(shè)計(jì)的思想和實(shí)現(xiàn)方面看,更多的趨向于硬件層面。因此,用“軟硬兼施”這個(gè)詞來(lái)形容FPGA工程師的工作就再貼切不過(guò)了。我們說(shuō)的“軟”,一方面的確是傳統(tǒng)意義上的軟件編程工作可能需要在FPGA中實(shí)現(xiàn),另一方面的“軟”則指的是FPGA邏輯實(shí)現(xiàn)所需要的代碼輸入方式。
單純的軟和硬,還只是很低級(jí)的技能。無(wú)論是在FPGA中內(nèi)嵌了處理器,還是FPGA外部需要接口的處理器,F(xiàn)PGA都不可避免地要和純軟件打交道,這種軟硬銜接部分的設(shè)計(jì)非常有講究,這也是FPGA工程師系統(tǒng)思維的一種要求。
雖然FPGA開發(fā)中需要涉及眾多的技能門類,對(duì)于一些規(guī)模不大的工程項(xiàng)目,可能FPGA工程師確實(shí)要承擔(dān)起“既當(dāng)?shù)之?dāng)媽”的重任;但是對(duì)于中大規(guī)模的工程項(xiàng)目,一定會(huì)有一個(gè)分工明確的團(tuán)隊(duì)協(xié)作完成。這樣的團(tuán)隊(duì),絕對(duì)是一個(gè)不折不扣的嵌入式系統(tǒng)精英大薈萃:板級(jí)硬件工程師進(jìn)行FPGA的板級(jí)原理圖繪制、layout等工作;FPGA工程師做底層邏輯實(shí)現(xiàn);嵌入式軟件工程師做軟件編程工作;也可能會(huì)有算法工程師的參與;當(dāng)然還可能會(huì)有系統(tǒng)工程師統(tǒng)領(lǐng)全局(實(shí)際情況是,這個(gè)角色往往由項(xiàng)目經(jīng)理兼任),對(duì)各個(gè)模塊(包括軟硬銜接部分)和接口進(jìn)行劃分和界定。
1.4 FPGA應(yīng)用領(lǐng)域
目前FPGA雖然還受制于較高的開發(fā)門檻以及器件本身昂貴的價(jià)格,并從應(yīng)用的普及率上來(lái)看和ARM、DSP還是有一定的差距,但是在非常多的應(yīng)用場(chǎng)合,工程師們還是要?jiǎng)e無(wú)選擇地使用它。FPGA所固有的靈活性和并行性是其他芯片所不具備的,所以它的應(yīng)用領(lǐng)域涵蓋得很廣。從技術(shù)角度來(lái)看,主要是有以下需求的應(yīng)用場(chǎng)合(如圖1-8所示):

圖1-8 FPGA應(yīng)用精彩紛呈
? 邏輯粘合,如一些嵌入式處理常常需要地址或外設(shè)擴(kuò)展,CPLD器件尤其適合。已經(jīng)少有項(xiàng)目會(huì)選擇一顆FPGA器件專門用于邏輯粘合的應(yīng)用,但是在已經(jīng)使用的FPGA器件中順便做些邏輯粘合的工作倒是非常普遍。
? 實(shí)時(shí)控制,如液晶屏或電機(jī)等設(shè)備的驅(qū)動(dòng)控制,此類應(yīng)用也以CPLD或低端FPGA為主。
? 高速信號(hào)采集和處理,如高速AD前端或圖像前端的采集和預(yù)處理,近年來(lái)持續(xù)升溫的機(jī)器視覺(jué)應(yīng)用也幾乎無(wú)一例外地使用了FPGA器件。
? 協(xié)議實(shí)現(xiàn),如更新較快的各種有線和無(wú)線通信標(biāo)準(zhǔn)、廣播視頻及其編解碼算法、各種加密算法等,使用FPGA比ASIC更有競(jìng)爭(zhēng)力。
? 各種原型驗(yàn)證系統(tǒng),由于工藝的提升,流片成本也不斷攀升,而在流片前使用FPGA做前期的驗(yàn)證已成為非常流行的做法。
? 片上系統(tǒng),如Altera公司的Soc FPGA和Xilinx公司的Zynq,這類FPGA器件,既有成熟的ARM硬核處理器,又有豐富的FPGA資源,大有單芯片一統(tǒng)天下的架勢(shì)。
當(dāng)然了,若從具體的應(yīng)用領(lǐng)域來(lái)看,F(xiàn)PGA在電信、無(wú)線通信、有線通信、消費(fèi)電子產(chǎn)品、視頻和圖像處理、車載、航空航天和國(guó)防、ASIC原型開發(fā)、測(cè)試測(cè)量、存儲(chǔ)、數(shù)據(jù)安全、醫(yī)療電子、高性能計(jì)算以及各種定制設(shè)計(jì)中都有涉獵。總而言之,F(xiàn)PGA所誕生并發(fā)展的時(shí)代是一個(gè)好時(shí)代,與生俱來(lái)的一些特性也注定了它將會(huì)在這個(gè)時(shí)代的大舞臺(tái)上大放光彩。
1.5 FPGA開發(fā)流程
如圖1-9所示。這個(gè)流程圖是一個(gè)相對(duì)比較高等級(jí)的FPGA開發(fā)流程,從項(xiàng)目提上議程開始,設(shè)計(jì)者需要進(jìn)行FPGA功能的需求分析,然后進(jìn)行模塊的劃分,比較復(fù)雜和龐大的設(shè)計(jì)則會(huì)通過(guò)模塊劃分把工作交給一個(gè)團(tuán)隊(duì)的多人協(xié)作完成。各個(gè)模塊的具體任務(wù)和功能劃分完畢(通常各個(gè)模塊間的通信和接口方式也同時(shí)被確定),則可以著手進(jìn)行詳細(xì)設(shè)計(jì),包括代碼輸入、綜合優(yōu)化、實(shí)現(xiàn)(映射和布局布線)。為了保證設(shè)計(jì)達(dá)到預(yù)期要求,各種設(shè)計(jì)的約束輸入以及仿真驗(yàn)證也穿插其間。在EDA工具上驗(yàn)證無(wú)誤后,則可以生成下載配置文件燒錄到實(shí)際器件中進(jìn)行板級(jí)的調(diào)試工作。從圖1-9中的箭頭示意不難看出,設(shè)計(jì)的迭代性是FPGA開發(fā)過(guò)程中的一個(gè)重要特點(diǎn),這就要求設(shè)計(jì)者從一開始就要非常認(rèn)真細(xì)致,否則后續(xù)的很多工作量可能就是不斷返工。

圖1-9 FPGA開發(fā)流程
當(dāng)然了,對(duì)于沒(méi)有實(shí)際工程經(jīng)驗(yàn)的初學(xué)者而言,這個(gè)流程圖可能不是那么容易理解。不過(guò)沒(méi)有關(guān)系,我們會(huì)簡(jiǎn)化這個(gè)過(guò)程,從實(shí)際操作角度,以一個(gè)比較簡(jiǎn)化的順序的方式來(lái)理解這個(gè)流程。如圖1-10所示,從大的方面來(lái)看,F(xiàn)PGA開發(fā)流程不過(guò)是三個(gè)階段,第一個(gè)階段是概念階段,或者也可以稱之為架構(gòu)階段,這個(gè)階段的任務(wù)是項(xiàng)目前期的立項(xiàng)準(zhǔn)備,如需求的定義和分析、各個(gè)設(shè)計(jì)模塊的劃分;第二個(gè)階段是設(shè)計(jì)實(shí)現(xiàn)階段,這個(gè)階段包括編寫RTL代碼、并對(duì)其進(jìn)行初步的功能驗(yàn)證、邏輯綜合和布局布線、時(shí)序驗(yàn)證,這一階段是詳細(xì)設(shè)計(jì)階段;第三個(gè)階段是FPGA器件實(shí)現(xiàn),除了器件燒錄和板級(jí)調(diào)試外,其實(shí)這個(gè)階段也應(yīng)該包括第二個(gè)階段的布局布線和時(shí)序驗(yàn)證,因?yàn)檫@兩個(gè)步驟都是和FPGA器件緊密相關(guān)的。我們這么粗略的三個(gè)階段劃分并沒(méi)有把FPGA整個(gè)設(shè)計(jì)流程完全的孤立開來(lái),恰恰相反,從我們的階段劃分中,我們也看到FPGA設(shè)計(jì)的各個(gè)環(huán)節(jié)是緊密銜接、相互影響的。

圖1-10 簡(jiǎn)化的FPGA開發(fā)流程
- 小程序?qū)崙?zhàn)視頻課:微信小程序開發(fā)全案精講
- Python從入門到精通(精粹版)
- 數(shù)據(jù)結(jié)構(gòu)(Java語(yǔ)言描述)
- PhpStorm Cookbook
- 零基礎(chǔ)學(xué)Python數(shù)據(jù)分析(升級(jí)版)
- Creating Mobile Apps with jQuery Mobile(Second Edition)
- 搞定J2EE:Struts+Spring+Hibernate整合詳解與典型案例
- Visual FoxPro 6.0程序設(shè)計(jì)
- OpenCV with Python Blueprints
- Unity 2017 Game AI Programming(Third Edition)
- Oracle SOA Suite 12c Administrator's Guide
- KnockoutJS Blueprints
- PHP高性能開發(fā):基礎(chǔ)、框架與項(xiàng)目實(shí)戰(zhàn)
- 中小企業(yè)網(wǎng)站建設(shè)與管理(靜態(tài)篇)
- 計(jì)算機(jī)信息技術(shù)實(shí)踐教程