|
FPGA(FieldProgrammableGateArray)譯作中文為:現(xiàn)場可編程門陣列,也就是設(shè)計者可以在現(xiàn)場對可定制的數(shù)字邏輯進(jìn)行編程的集成電路。- h' L" k3 h4 \. |
G& _( K$ ]5 P" w 1
- n9 [5 l0 {6 O, o5 B0 j5 a: q0 z+ w c. G
什么是FPGA?
. P. L' w `% R. `7 h" e
* V7 i* Z _8 j. |+ N" N v 首先,如果你從未接觸過FPGA(現(xiàn)場可編程門陣列),或者有過一點基礎(chǔ)想要繼續(xù)深入了解這個行業(yè),在這個小節(jié),我會向你介紹FPGA,并且向你解釋FPGA都能解決什么問題,如何解決這些問題,并討論如何將設(shè)計進(jìn)行優(yōu)化等等。
9 S( [9 A/ |$ p4 U. B4 n1 ~ @$ L* ?6 d( X4 Y; h
在FPGA四個英文字母中,F(xiàn)代表著Field,即現(xiàn)場,那什么是現(xiàn)場呢?FPGA中的現(xiàn)場,是一種廣義上的現(xiàn)場,既有指代產(chǎn)品所處之地,又體現(xiàn)的是FPGA的一種“即時性”;而P是Programmable,代表著可編程;G為Gate,門,也就是數(shù)字電路之中的邏輯門;A為Array,指由邏輯門組成的陣列。將四個英文單詞組合,就是我們常說的現(xiàn)場可編程邏輯門陣列——FPGA。% _( U& |: v: b7 _0 T' Q" r
5 T& M4 X# [) M& k* b
與其他搭建硬件平臺的方式相比,F(xiàn)PGA做了兩件事,首先,它使你能夠自由地搭建你需要的硬件平臺,取代了從前使用ASIC(專用集成電路)時所不得不承擔(dān)的長開發(fā)時間、高額開發(fā)經(jīng)費以及設(shè)計風(fēng)險,另外一點,相比于其它的硬件構(gòu)成,它允許你構(gòu)建你所需要的硬件而不需要ASIC,而且比采用微處理器內(nèi)核更簡單、快速、省電。) P/ `2 D2 c7 Q! s( N( H+ j/ K
J, F. |% H' R2 S* E 2
% `! U7 l0 }. E9 K, y. \
, U6 \$ S- M0 ], _4 _ @! X I K; K 我們?yōu)槭裁葱枰狥PGA?
" o2 f/ b+ T: |% C) E# y
, Q& T8 ?7 |$ O1 x P8 b4 Q' v ①編程自由度高
% b% t1 e! R: J2 i4 t d8 z" ^% P0 Y/ {* h
FPGA貌似在數(shù)字世界里無所不能,它就像樂高的積木一樣可以搭建各種不同的功能模塊,實現(xiàn)你所希望的各種功能,當(dāng)然,首先你必須掌握最基本的數(shù)字邏輯知識,學(xué)會一種用來構(gòu)建各種功能的工具語言(在這里我們推薦廣受歡迎的Verilog),再次你要動腦(考驗的是你的邏輯思維是否清晰),一個優(yōu)秀的建筑師的作品是在腦子里勾畫出來的,而不是拿積木碰運氣拼湊出來的。
: A# J/ e8 i% k5 }& j3 ~3 J1 A6 K9 U/ v
②開發(fā)周期短:“現(xiàn)場可編程”: H+ x6 S' b4 H1 {+ k* j4 n3 e \1 b
+ c. K$ \' I# P ?: _ FPGA可以使你去對產(chǎn)品進(jìn)行“現(xiàn)場”編程,這使得調(diào)試周期縮短,產(chǎn)品也就能夠迅速適應(yīng)新的工藝標(biāo)準(zhǔn)。并且產(chǎn)品在已經(jīng)在現(xiàn)場安裝上了之后依然可以對其硬件進(jìn)行直接配置,也就是我們所說的“現(xiàn)場可編程”。如果你能夠?qū)唵蔚倪壿嬮T進(jìn)行合理配置或者將你想要的硬件系統(tǒng)描述出來,你就能利用這些簡單的邏輯做些更有意義的事情。而在你的技術(shù)還沒有成熟時,F(xiàn)PGA允許你進(jìn)行多變化的設(shè)計,并且在設(shè)計流程中不用承擔(dān)高額的經(jīng)費以及和一些不得不面對的設(shè)計風(fēng)險。
; l4 ?: K) x) C
: N' \) r, d! _+ Y7 z3 G ③高速* t- v" w( {1 \
) w+ s* ]6 y! h5 A' B
FPGA的高速體現(xiàn)在兩個方面:并行性,PLL鎖相環(huán)
' v' Z0 L; K+ M8 S6 O2 M3 x8 j! L+ C! B8 B6 ]1 S8 U
第一點是FPGA的并行性,相比于傳統(tǒng)的MCU,程序規(guī)模越大,越能體現(xiàn)出FPGA的優(yōu)勢。也許簡單的“流水燈”程序看不出差別,但是如果是大型系統(tǒng),存在大量的數(shù)據(jù)流,F(xiàn)PGA就可以調(diào)用內(nèi)部的FIFO核進(jìn)行高速處理,最終能夠與MCU系統(tǒng)能夠相差出數(shù)十毫秒到數(shù)百毫秒——這對于通訊行業(yè)以及航天、軍工行業(yè)是極為致命的。2 b# Q, U( \* z: _$ F) r7 h4 U
2 M y" u5 G n, _9 D, @) C3 ? 第二點就是PLL鎖相環(huán),MCU上同樣含有PLL鎖相環(huán),但它受到的限制非常大,通常只能進(jìn)行幾個檔位的倍頻,而FPGA上的PLL倍頻自由度較高,以Altera公司生產(chǎn)的MAX10為例,50MHz的時鐘通常在芯片允許的情況下外部時鐘可倍頻到470MHz左右,而內(nèi)部時鐘可倍頻到1.3GHz。
+ L ]7 e1 w* O' b' g' D; R; a9 K O$ U* {' R8 g
舉個汽車的倒車攝像頭的例子,如果攝像頭完成從視頻捕捉到視頻顯示共花費了250ms的延時時間,而國家要求的延時時間不得超過100ms,你就可以用FPGA去取代傳統(tǒng)MCU去處理圖像信息,來滿足政府的延時要求。
3 `3 Y8 I' x3 g. ?/ u8 m, O8 {
- d( O1 ^9 j7 }4 Q5 t7 C" G ④高集成度+ o9 v, z: b8 J9 T- T
$ s: q$ e4 U2 L; U2 k w: J! T 當(dāng)半導(dǎo)體行業(yè)產(chǎn)品集成度越來越高的同時,編程者門也意識到可以在FPGA中建立整個子系統(tǒng),而不是只局限于使用ASIC(專用集成電路),他們可以將更多的設(shè)備放在相同大小的封裝里——并且允許實現(xiàn)更多樣的功能和更復(fù)雜的算法,計算速度上升的同時,功耗也會更小。9 f: P% W/ ?9 x' c; Q
Y; p; c+ _9 j+ J1 f8 X% s
⑤可嵌入IP硬核
8 C4 D" ]& O* j1 @$ Q) h& F( M/ Z2 }" J% x% N
FPGA可以內(nèi)置IP核,提供豐富強(qiáng)大的功能,使開發(fā)者無需浪費時間去重復(fù)的構(gòu)建同一種功能模塊。同時,也會減少資源的消耗并且節(jié)約很多資金,目前FPGA的存儲塊可以嵌入很多個IP核,例如,計算電路,收發(fā)器,協(xié)議控制器,甚至嵌入一個MCU,然而,重要的是要記住,IP核不是像FPGA的其他邏輯單元一樣可以重復(fù)編程,但是它是一個為了實現(xiàn)某一功能而定制出現(xiàn)的模塊,也就是說對于IP核,我們不用每次都去重構(gòu)它,這是在做無用功,我們直接調(diào)用即可。
, w% Z5 _( y g- @3 D9 R$ n
9 i( g& \; H- m4 P 因為IP核的這一特性,F(xiàn)PGA制造商可以將編寫完成的IP硬核以商品的形式進(jìn)行銷售,也是因為這一原因,大多數(shù)的電子系統(tǒng)趨向了標(biāo)準(zhǔn)化。6 }. y7 \( L" {, g
* {" S( j! \0 }3 f9 A' G
|
|