|
FPGA(FieldProgrammableGateArray)譯作中文為:現(xiàn)場(chǎng)可編程門陣列,也就是設(shè)計(jì)者可以在現(xiàn)場(chǎng)對(duì)可定制的數(shù)字邏輯進(jìn)行編程的集成電路。
. p/ ~% b- Y/ Q4 v7 g; \6 O4 e
- @! C, L" Q9 P4 O" O. G( H' A* x# { 1
, G+ E9 }4 v5 x& `2 J7 [; i7 _+ ?" c( G9 M. U! o3 B
什么是FPGA?
; ^! n! S: c% `& V0 k3 |$ ~
& d& w9 f: k* E& _) n* \+ q3 c 首先,如果你從未接觸過(guò)FPGA(現(xiàn)場(chǎng)可編程門陣列),或者有過(guò)一點(diǎn)基礎(chǔ)想要繼續(xù)深入了解這個(gè)行業(yè),在這個(gè)小節(jié),我會(huì)向你介紹FPGA,并且向你解釋FPGA都能解決什么問(wèn)題,如何解決這些問(wèn)題,并討論如何將設(shè)計(jì)進(jìn)行優(yōu)化等等。4 n) H! ~4 V) u9 l& Y
9 a3 k/ w2 `: d' A. w/ _9 `. r 在FPGA四個(gè)英文字母中,F(xiàn)代表著Field,即現(xiàn)場(chǎng),那什么是現(xiàn)場(chǎng)呢?FPGA中的現(xiàn)場(chǎng),是一種廣義上的現(xiàn)場(chǎng),既有指代產(chǎn)品所處之地,又體現(xiàn)的是FPGA的一種“即時(shí)性”;而P是Programmable,代表著可編程;G為Gate,門,也就是數(shù)字電路之中的邏輯門;A為Array,指由邏輯門組成的陣列。將四個(gè)英文單詞組合,就是我們常說(shuō)的現(xiàn)場(chǎng)可編程邏輯門陣列——FPGA。
' C5 D6 t) d* }, v# \3 `/ ?6 c+ M3 k- P8 `; \- Y
與其他搭建硬件平臺(tái)的方式相比,F(xiàn)PGA做了兩件事,首先,它使你能夠自由地搭建你需要的硬件平臺(tái),取代了從前使用ASIC(專用集成電路)時(shí)所不得不承擔(dān)的長(zhǎng)開發(fā)時(shí)間、高額開發(fā)經(jīng)費(fèi)以及設(shè)計(jì)風(fēng)險(xiǎn),另外一點(diǎn),相比于其它的硬件構(gòu)成,它允許你構(gòu)建你所需要的硬件而不需要ASIC,而且比采用微處理器內(nèi)核更簡(jiǎn)單、快速、省電。
7 }6 \2 g! Z* M8 U/ H, z) L6 a7 s X& E% e8 }4 }6 o
2
% f3 S" J; N0 V6 U! @7 J; v) g- [
4 R$ m" } U$ ]: p. c( \. ^7 V 我們?yōu)槭裁葱枰狥PGA?" e: w5 U2 d8 ]! f6 K
* r" A4 x* J8 U) Y8 B. p4 D* G ①編程自由度高
. w2 `% D$ o o( H/ y% T, c1 l3 r2 @ c S
FPGA貌似在數(shù)字世界里無(wú)所不能,它就像樂(lè)高的積木一樣可以搭建各種不同的功能模塊,實(shí)現(xiàn)你所希望的各種功能,當(dāng)然,首先你必須掌握最基本的數(shù)字邏輯知識(shí),學(xué)會(huì)一種用來(lái)構(gòu)建各種功能的工具語(yǔ)言(在這里我們推薦廣受歡迎的Verilog),再次你要?jiǎng)幽X(考驗(yàn)的是你的邏輯思維是否清晰),一個(gè)優(yōu)秀的建筑師的作品是在腦子里勾畫出來(lái)的,而不是拿積木碰運(yùn)氣拼湊出來(lái)的。
" Z2 _# |/ Q, @5 a" n' K! `3 ?2 x% @
②開發(fā)周期短:“現(xiàn)場(chǎng)可編程”( U6 {) _! h4 l
# r% K6 `% S0 L7 g
FPGA可以使你去對(duì)產(chǎn)品進(jìn)行“現(xiàn)場(chǎng)”編程,這使得調(diào)試周期縮短,產(chǎn)品也就能夠迅速適應(yīng)新的工藝標(biāo)準(zhǔn)。并且產(chǎn)品在已經(jīng)在現(xiàn)場(chǎng)安裝上了之后依然可以對(duì)其硬件進(jìn)行直接配置,也就是我們所說(shuō)的“現(xiàn)場(chǎng)可編程”。如果你能夠?qū)?jiǎn)單的邏輯門進(jìn)行合理配置或者將你想要的硬件系統(tǒng)描述出來(lái),你就能利用這些簡(jiǎn)單的邏輯做些更有意義的事情。而在你的技術(shù)還沒(méi)有成熟時(shí),F(xiàn)PGA允許你進(jìn)行多變化的設(shè)計(jì),并且在設(shè)計(jì)流程中不用承擔(dān)高額的經(jīng)費(fèi)以及和一些不得不面對(duì)的設(shè)計(jì)風(fēng)險(xiǎn)。" ^6 U* h( c! p- i. |& Y
; D8 |- R$ m6 W4 c; g
③高速1 \, Q, K. Y% z7 U2 J
9 t' {8 i* f d+ W FPGA的高速體現(xiàn)在兩個(gè)方面:并行性,PLL鎖相環(huán)# k+ D' V, t+ P! ~! w: ^
# Q: n7 @# [) A/ l' Y
第一點(diǎn)是FPGA的并行性,相比于傳統(tǒng)的MCU,程序規(guī)模越大,越能體現(xiàn)出FPGA的優(yōu)勢(shì)。也許簡(jiǎn)單的“流水燈”程序看不出差別,但是如果是大型系統(tǒng),存在大量的數(shù)據(jù)流,F(xiàn)PGA就可以調(diào)用內(nèi)部的FIFO核進(jìn)行高速處理,最終能夠與MCU系統(tǒng)能夠相差出數(shù)十毫秒到數(shù)百毫秒——這對(duì)于通訊行業(yè)以及航天、軍工行業(yè)是極為致命的。. P7 I6 d" k8 M: C
7 {: c$ e& d" p5 N4 G
第二點(diǎn)就是PLL鎖相環(huán),MCU上同樣含有PLL鎖相環(huán),但它受到的限制非常大,通常只能進(jìn)行幾個(gè)檔位的倍頻,而FPGA上的PLL倍頻自由度較高,以Altera公司生產(chǎn)的MAX10為例,50MHz的時(shí)鐘通常在芯片允許的情況下外部時(shí)鐘可倍頻到470MHz左右,而內(nèi)部時(shí)鐘可倍頻到1.3GHz。
) n6 O5 @% k3 \. x2 Y/ K. t+ G
$ j- Z, c7 O- M7 Z* A# o 舉個(gè)汽車的倒車攝像頭的例子,如果攝像頭完成從視頻捕捉到視頻顯示共花費(fèi)了250ms的延時(shí)時(shí)間,而國(guó)家要求的延時(shí)時(shí)間不得超過(guò)100ms,你就可以用FPGA去取代傳統(tǒng)MCU去處理圖像信息,來(lái)滿足政府的延時(shí)要求。7 T9 F; Q8 A [ S7 l1 S* n
8 g9 ^0 G1 K5 g* G ④高集成度% _7 g! s+ B7 ]1 ]: `
% H& T/ c; w8 \" f) w
當(dāng)半導(dǎo)體行業(yè)產(chǎn)品集成度越來(lái)越高的同時(shí),編程者門也意識(shí)到可以在FPGA中建立整個(gè)子系統(tǒng),而不是只局限于使用ASIC(專用集成電路),他們可以將更多的設(shè)備放在相同大小的封裝里——并且允許實(shí)現(xiàn)更多樣的功能和更復(fù)雜的算法,計(jì)算速度上升的同時(shí),功耗也會(huì)更小。
! t% c9 o% B# m! a' ^+ a+ X; u$ h, K/ L$ ]" D% S3 y/ r7 q O
⑤可嵌入IP硬核7 G/ B' o+ G9 A8 C! O
# L* J4 q, W# m FPGA可以內(nèi)置IP核,提供豐富強(qiáng)大的功能,使開發(fā)者無(wú)需浪費(fèi)時(shí)間去重復(fù)的構(gòu)建同一種功能模塊。同時(shí),也會(huì)減少資源的消耗并且節(jié)約很多資金,目前FPGA的存儲(chǔ)塊可以嵌入很多個(gè)IP核,例如,計(jì)算電路,收發(fā)器,協(xié)議控制器,甚至嵌入一個(gè)MCU,然而,重要的是要記住,IP核不是像FPGA的其他邏輯單元一樣可以重復(fù)編程,但是它是一個(gè)為了實(shí)現(xiàn)某一功能而定制出現(xiàn)的模塊,也就是說(shuō)對(duì)于IP核,我們不用每次都去重構(gòu)它,這是在做無(wú)用功,我們直接調(diào)用即可。
( n% x' M3 l1 Q- S$ @9 G
' p) u2 T' C( v3 h) Q 因?yàn)镮P核的這一特性,F(xiàn)PGA制造商可以將編寫完成的IP硬核以商品的形式進(jìn)行銷售,也是因?yàn)檫@一原因,大多數(shù)的電子系統(tǒng)趨向了標(biāo)準(zhǔn)化。! U* f; K& {/ I' H6 i' |3 d; ] }; w
; {0 \2 N1 G, J ] |
|