Field Programmable Gate Array,即現(xiàn)場(chǎng)可編程邏輯門陣列,用比較概念的語言來描述FPGA:在PAL(Programmable Arry Logic可編程邏輯陣列)、GAL(Generic Array Logic 通用陣列器件)等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為ASIC(專用集成電路)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門級(jí)有限的缺點(diǎn)。
以上的“官方語言”聽起來可能會(huì)讓你犯迷糊,下面我們就舉例說明,幫你捋一捋:早期要實(shí)現(xiàn)一個(gè)收音機(jī)的功能,需要電容、電阻、三極管等等一系列分立的元器件來搭建一個(gè)復(fù)雜的電路,這種集成電路,不僅占用面積大,分立的元器件使用量也比較多。
如果把這些分立的元器件集成到一個(gè)芯片中,在這個(gè)芯片的外圍只需要少量的電阻、電容等配合就能實(shí)現(xiàn)完整的收音機(jī)功能,這就是ASIC芯片。ASIC芯片將數(shù)量龐大的分立元器件集成到芯片內(nèi)部,電路板面積更小,集成度更高,電路的可靠性也變強(qiáng),這些都是ASIC芯片帶來的好處。
然而,ASIC在研發(fā)的過程中可能會(huì)存在這樣的問題,比如研發(fā)一種數(shù)字信號(hào)發(fā)生器,研發(fā)出一版芯片之后,如果其中某些功能設(shè)計(jì)得不是很合理,或者性能達(dá)不到要求,此時(shí)就需要更改設(shè)計(jì),更改完之后,要把設(shè)計(jì)重新提交給芯片制造廠家,芯片制造廠家要重新制造樣片。在這個(gè)過程中,要是讓芯片制造廠家重新做一款專用芯片的價(jià)格是非常昂貴的。它可不像設(shè)計(jì)一個(gè)電路板,如果產(chǎn)生飛線了,不能當(dāng)作成品去賣,那就把這個(gè)錯(cuò)誤更改之后,讓電路板廠家重新做一套電路板,現(xiàn)在做這種電路板都不是很貴,比如做一個(gè)兩層板,性能要求不高,面積不大的話,可能幾十塊錢都能搞定。但是做ASIC這種專用的集成電路芯片,自己設(shè)計(jì)找芯片制造廠家去做,一顆芯片不是幾千上萬就能做的。
這時(shí)候FPGA就發(fā)揮了它的作用,因?yàn)镕PGA可以通過編寫軟件,用硬件描述語言Verilog HDL或者VHDL來編寫程序?qū)崿F(xiàn)信號(hào)發(fā)生器的功能,然后把這個(gè)程序燒寫到FPGA芯片內(nèi)部,對(duì)這個(gè)程序的功能進(jìn)行測(cè)試,如果對(duì)這個(gè)功能或者性能不滿意的話,可以去修改程序,改完程序經(jīng)重新綜合之后,生成燒寫的代碼放到FPGA芯片內(nèi)部,這樣就可以反復(fù)的實(shí)現(xiàn)編程,對(duì)設(shè)計(jì)的產(chǎn)品進(jìn)行迭代,把迭代的問題通過軟件的方式實(shí)現(xiàn)。
通過以上描述我們可以發(fā)現(xiàn),ASIC芯片出廠的時(shí)候已經(jīng)設(shè)計(jì)好了一系列功能,我們只需要去查Datasheet,照著功能連線就可以了。而FPGA不同,拿到它的時(shí)候是一塊空白的或者半成品的芯片,這顆芯片怎么工作,或者說內(nèi)部電路怎么連線都是通過編程來自主實(shí)現(xiàn)的,你可以擁有一定的自主權(quán),有一部分可控,而不是單純的去使用。這時(shí)候你就相當(dāng)于是一塊芯片的設(shè)計(jì)者,聽起來是不是很神奇,這就是FPGA的精妙之處。所以使用FPGA就需要比使用其他的專有芯片更多的硬件知識(shí),還要有一定的邏輯思維能力。
FPGA有什么用
━━━━━━
技術(shù)飛速的發(fā)展,對(duì)FPGA的依賴越來越高。為了讓大家在學(xué)習(xí)FPGA的過程中,了解到未來在哪一個(gè)領(lǐng)域有屬于自己的一片天空,下面細(xì)說一下FPGA的應(yīng)用領(lǐng)域?
一、通信領(lǐng)域
FPGA最廣泛的應(yīng)用是在通信領(lǐng)域,用FPGA去處理一些通信協(xié)議,并完成高速數(shù)據(jù)的收發(fā)和交換。一方面通信領(lǐng)域需要高速的通信協(xié)議處理方式,另一方面通信協(xié)議在隨時(shí)的修改,非常不適合做成專有芯片,因此可以靈活改變功能的FPGA就成了首選,F(xiàn)PGA通常應(yīng)用于通信設(shè)備高速接口的電路設(shè)計(jì)。
二、算法領(lǐng)域
通常說的信號(hào)處理、視頻、圖像、圖形處理等,這個(gè)方向門檻相對(duì)于第一個(gè)領(lǐng)域要高一些。算法還有一個(gè)FPGA的協(xié)同優(yōu)化問題,很大程度上這個(gè)方向已經(jīng)超過了信號(hào)處理的范疇,而且圖像在往高維度一步一步的發(fā)展。傳統(tǒng)信號(hào)是一維度的,比如聲音。但是對(duì)于視頻或者圖像信號(hào),圖像信號(hào)是一個(gè)二維信號(hào),視頻再加上時(shí)間就是三維信號(hào),所以這個(gè)信號(hào)的維度在逐次的增加,所以對(duì)于這些復(fù)雜的信號(hào)的處理,需要FPGA強(qiáng)大的處理功能,去完成各種各樣的在現(xiàn)實(shí)生活中遇到的工程問題,那么,這就需要FPGA的開發(fā)者有非常強(qiáng)大的數(shù)學(xué)功底,能夠理解較為復(fù)雜的數(shù)學(xué)算法,此外還要了解FPGA內(nèi)部的各種資源,使之能夠成為實(shí)際的一些運(yùn)算電路。
三、嵌入式領(lǐng)域
也就是SoC系統(tǒng)級(jí)芯片,嚴(yán)格來說這不是在FPGA設(shè)計(jì)范疇之內(nèi),只不過說是FPGA這個(gè)平臺(tái)來構(gòu)建一個(gè)嵌入式系統(tǒng)的底層硬件環(huán)境,然后我們的設(shè)計(jì)者在上層去編寫嵌入式的應(yīng)用。這個(gè)不單單是使用FPGA,而是在FPGA這個(gè)平臺(tái)上去構(gòu)建一個(gè)操作系統(tǒng),比如我們熟知的Windows系統(tǒng),打開Windows的任務(wù)調(diào)度、協(xié)同工作;包括數(shù)據(jù)的存儲(chǔ)、數(shù)據(jù)的處理,本身來說事務(wù)性的工作更加繁多。
FPGA前景如何
━━━━━━
物聯(lián)網(wǎng)的巨大商機(jī):監(jiān)控、安防領(lǐng)域CPU很難做到多通道的數(shù)據(jù)處理以及智能檢測(cè)分析,F(xiàn)PGA可以很輕松的去解決這些問題。工業(yè)自動(dòng)化FPGA可以做到多通道的馬達(dá)控制,目前馬達(dá)電力消耗占據(jù)全球能源消耗的大頭,在節(jié)能環(huán)保的趨勢(shì)下,未來各類的精準(zhǔn)控制馬達(dá)將獲得采用。這是FPGA大顯身手的領(lǐng)域,一片F(xiàn)PGA可以控制大量馬達(dá),F(xiàn)PGA可以應(yīng)用于智能工廠方案,在云端和網(wǎng)關(guān)端也有強(qiáng)大優(yōu)勢(shì),如果跟終端控制臺(tái)結(jié)合,則優(yōu)勢(shì)會(huì)增加。
人工智能的發(fā)展,必然是多傳感器的融合。主人一回到家,音樂自動(dòng)播放,電燈自動(dòng)打開,安防系統(tǒng)就自動(dòng)關(guān)閉...這些場(chǎng)景需要大量的融合算法,這是FPGA擅長(zhǎng)的領(lǐng)域。未來機(jī)器人在控制上也需要做大量的并行控制,比如機(jī)器人的智能化需要視覺的大數(shù)據(jù)基數(shù),對(duì)于大數(shù)據(jù)量的處理,這也是FPGA擅長(zhǎng)的一個(gè)方面。FPGA本身是非常適合并行計(jì)算的,因?yàn)樗旧硎且粋€(gè)硬件可編程的器件,而CPU一旦固定之后大部分是靠軟件的執(zhí)行操作,而軟件跟硬件相比下,執(zhí)行效率是比不過硬件的。