• 正文
    • 一、什么是FPGA?
    • 二、FPGA的應用場景
    • 三、公司
    • 五、IP核
    • 六、語言和舉例
    • 七、為什么效率會如此之高?
    • 八、收入
  • 相關推薦
申請入駐 產業(yè)圖譜

什么是FPGA?嵌入式方向中的FPGA怎么樣?

02/03 15:17
1388
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

很多粉絲問我,嵌入式方向中的FPGA怎么樣?收入如何?

講述FPGA前,我們先講講當年中興被制裁的問題。

美國前總統(tǒng)特朗普曾經發(fā)布過一條禁令,由于中興違反了美國的某個條例,禁止美國已經國外任何一家公司向中興銷售FPGA芯片。

這個時候,一定會有抬杠青年說,我見過國內生產的FPGA芯片,還用過呢?!就ǔS龅竭@一類質疑聲,我一般都會說:你是對的!】

后來中興沒有辦法,只能妥協了,美國派了人入駐中興,還簽了一些協議。最后才恢復到原來的買賣關系中。

要知道CPU、GPU、FPGA三者能力相加就是芯片的未來!

FPGA門檻之高在芯片行業(yè)里無出其右。

FPGA是一個本領群集型的行業(yè),沒有堅實的本領功底,很難造成有角逐力的產物。

好了,我們來介紹下到底什么是FPGA吧!

一、什么是FPGA?

FPGA 是一種硬件可重構的體系結構。它的英文全稱是Field Programmable Gate Array,中文名是現場可編程門陣列。

FPGA就是一個可以通過編程來改變內部結構的芯片,FPGA常年來被用作專用芯片(ASIC)的小批量替代品,同時也在微軟、百度等公司的數據中心大規(guī)模部署,以同時提供強大的計算能力和足夠的靈活性。

在沒有FPGA之前,要想實現一個新計算機體架構的設計想法,必須要開發(fā)一個ASIC作為原型,在面板上安裝很多個體積龐大的IC。

但是,與這些需要投入巨大成本和精力的方式不同,一旦用戶創(chuàng)建了具有多個FPGA的原型板,就可以立即運行您設計的新架構。

而且,修正和更改規(guī)格也變得輕松簡單。

要知道、流片的價格可不低!

因此,許多新的架構應運而生因此,對可重構處理器的研究和對新FPGA架構的研究也開始蓬勃發(fā)展,在此之后,FPGA使用靈活,適用性強的特征在通信/圖像處理領域也大獲好評,并將其應用于路由器通信網絡的各種設備中。

與ASIC的概念截然相反,FPGA的概念是在短時間能以低成本讓用戶得到想要的邏輯。

賽靈思Xilinx公司

可編程FPGA技術于上個世紀80年代初由美國賽靈思Xilinx公司發(fā)明。

Xilinx于1985年首次推出商業(yè)化產品“XC2000”。

近40年來,先后有超過60家以上的公司從事過FPGA技術與產品的研發(fā),其中包括Intel、IBM、AMD、TI、GE、AT&T、摩托羅拉、朗訊、三星、東芝、飛利浦等實力雄厚的大公司,但絕大多數在耗費了上億美元后功虧一簣!

歐洲、日本、韓國、等經濟強國和中國臺灣等地區(qū)都尚未真正掌握其核心技術。

二、FPGA的應用場景

FPGA是集成電路大產業(yè)中的小領域,5GAI為行業(yè)增長提供確定性,國產替代疊加行業(yè)增長,國產FPGA市場騰飛在即。

借助5G、自動駕駛、AI,FPGA需求還在逐步增大,未來空間還非常巨大。

1,通信領域。

通信領域需要高速的通信協議處理方式,另一方面通信協議隨時都在修改,不適合做成專門的芯片,所以能夠靈活改變的功能的FPGA就成了首選

電信行業(yè)一直大量使用FPGA。電信標準不斷變化,建造電信設備非常困難,因此首先提供電信解決方案的公司往往會占領最大的市場份額。由于ASIC需要花費很長時間才能制造,因此FPGA提供了捷徑的機會。最初的電信設備版本開始采用FPGA,這引發(fā)了FPGA價格沖突。盡管FPGA的價格與ASIC仿真市場無關緊要,但電信芯片的價格卻很重要。許多年前,AT&T和朗訊制造了自己的FPGA,稱為ORCA(優(yōu)化的可重配置單元陣列),但就硅片的速度或尺寸而言,它們與Xilinx或Altera不具有競爭優(yōu)勢。

2,算法領域。

FPGA對于復雜信號的處理性很強,可以處理多維信號。

3,嵌入式領域。

利用FPGA構建一個嵌入式的底層環(huán)境,然后在此之上編寫一些嵌入式軟件,事務性的操作更加繁雜一些,對FPGA的操作較少。

4,在安防監(jiān)控領域

目前CPU很難做到多通道處理和只能檢測分析,但是加上FPGA之后就可以輕松解決了,尤其在圖形算法領域有得天獨厚的優(yōu)勢。

5,在工業(yè)自動化領域

FPGA可以做到多通道的馬達控制,目前馬達電力消耗占據全球能源消耗的大頭,在節(jié)能環(huán)保的趨勢下,未來各類精準控制馬達得以采用,一片FPGA就可以控制大量的馬達。

三、公司

FPGA多年來被四大巨頭Xilinx(賽靈思)、Altera(阿爾特拉)、Lattice(萊迪思)、Microsemi(美高森美)壟斷。

還有一些小公司勉強在夾縫中生存。

其中Xilinx(賽靈思)是全球領先的可編程邏輯完整解決方案的供應商。Xilinx研發(fā)、制造并銷售范圍廣泛的高級集成電路、軟件設計工具以及作為預定義系統(tǒng)級功能的IP(Intellectual Property)核。

國外三巨頭占據90%全球市場,國產廠商暫時落后。

FPGA市場呈現雙寡頭壟斷格局,Xilinx和Altera分別占據全球市場56%和31%,

在中國FPGA市場中,占比也高達52%和28%,

由于技術、資金、人才上的壁壘及FPGA量產帶來的規(guī)模經濟,行業(yè)領導者地位較為穩(wěn)定。

國產廠商目前在中國市場占比約4%,未來隨著國產廠商技術突破,

FPGA領域國產替代或將是百億級的機會,替代空間廣闊。

Altera目前已被Intel收購,AMD正在收購賽靈思,預計2021年底完成收購。

我國FPGA公司

    1、京微齊力:二次創(chuàng)業(yè),瞄準AI云邊端2、上海遨格芯:從編譯軟件切入生態(tài)鏈3、廣東高云:28nm中高密度FPGA4、深圳紫光同創(chuàng):高性能FPGA已量產商用5、西安智多晶:小米為第四大股東6、上海安路科技:28nm今年批量供應7、成都華微科技:出身國家“909”工程8、上海復旦微電子:超大規(guī)模億門級FPGA

五、IP核

FPGA有個最重要的概念就是IP核。

IP(Intelligent Property) 核是具有知識產權核的集成電路芯核總稱,是經過反復驗證過的、具有特定功能的宏模塊,與芯片制造工藝無關,可以移植到不同的半導體工藝中。

如果還不理解,你就當他是一個軟件模塊,或者是一個積木的部件。

比如賽靈思已經基于FPGA設計好了UDP 核、PCIE xDMA 核、UART 核,我們只需要把人家的核添加到我們工程中,那么就相當于與我們的板子已經支持了這個功能。

對于FPGA 開發(fā)軟件,其提供的IP核越豐富,用戶的設計就越方便,其市場占用率就越高。

一句話:IP核很值錢!

六、語言和舉例

talk is cheap,show you code!

下面我們舉一個例子來講解

下面我們用verilog實現超前進位加法器

例1:超前進位信號的產生原理

ab?=?1?-->?co?=?1
a?+?b?=?1,且ci?=?1?-->?co?=1
兩位多位數中第i位相加產生的進位輸出co(i)可以表示位

coi=aibi+(ai+bi)(cii)
從全加器的真值表寫出第i位和s(i)的邏輯式:
si=aibi′cii′+ai′bicii′+ai′bi′cii+(ai+bi)cii
上式變換位異或函數位:
si=ai⊕bi⊕cii

代碼:

module?carry_look_aheadadder(
?????????????????????????????output?????[3:0]???s,
?????????????????????????????output?????????????co,
?????????????????????????????input??????[3:0]???a,
?????????????????????????????input??????[3:0]???b,
?????????????????????????????input??????????????ci
?????????????????????????????);
wire??[3:0]????co_tmp;
wire??[3:0]????cin;

assign??cin[3:0]??=?{co_tmp[2:0],ci};

//計算中間進位
assign??co_tmp[0]?=?a[0]&b[0]?||?(a[0]?||?b[0])&(cin[0]);
assign??co_tmp[1]?=?a[1]&b[1]?||?(a[1]?||?b[1])&(cin[1]);
assign??co_tmp[2]?=?a[2]&b[2]?||?(a[2]?||?b[2])&(cin[2]);
assign??co_tmp[3]?=?a[3]&b[3]?||?(a[3]?||?b[3])&(cin[3]);

//計算和
assign?s[0]?=?a[0]?^?b[0]?^?cin[0];
assign?s[1]?=?a[1]?^?b[1]?^?cin[1];
assign?s[2]?=?a[2]?^?b[2]?^?cin[2];
assign?s[3]?=?a[3]?^?b[3]?^?cin[3];

assign?co?=?co_tmp[3];
endmodule
module?carry_look_aheadadder_tb;
wire??????[3:0]???????s;
wire??????????????????co;
reg???????[3:0]???????a;
reg???????[3:0]???????b;
reg???????????????????ci;

initial
begin
??????????a?=?4'b0000;?b?=?4'b0000;?ci?=?0;?
????#10???a?=?4'b1111;?b?=?4'b1111;?ci?=?0;?
????#10???a?=?4'b1100;?b?=?4'b1001;?ci?=?0;?
????#10???a?=?4'b0111;?b?=?4'b0110;?ci?=?0;?
????#10???a?=?4'b0101;?b?=?4'b0101;?ci?=?1;?
????#10???a?=?4'b1110;?b?=?4'b1001;?ci?=?1;?
????#10???a?=?4'b0010;?b?=?4'b0110;?ci?=?1;?
????#10???a?=?4'b0110;?b?=?4'b1100;?ci?=?1;?
????#10???$finish;
end

initial?begin
??$fsdbDumpfile("test.fsdb");
??$fsdbDumpvars();
end

carry_look_aheadadder?u_carry_look_aheadadder(
??????????????????????????????????????????????.s(s),
??????????????????????????????????????????????.co(co),
??????????????????????????????????????????????.a(a),
??????????????????????????????????????????????.b(b),
??????????????????????????????????????????????.ci(ci)
??????????????????????????????????????????????);

endmodule

結果:

可以看到,這個和一般的高級語言差別比較大。

學習FPGA必須有過硬的硬件電路基礎。

例2:

上述為lattice的一款FPGA架構,你可以把它想象成一塊放滿電子元件的硬件電路板,圖中“電路板”上的元件有IICSPI硬核接口“器件”,有NVCM程序存儲“器件”,有RAM數據存儲“器件”,還有最小單元的LUT(查找表)器件。

一般FPGA工程師會使用硬件描述語言Verilog或者VHDL對FPGA進行“編程”,之后,再經過廠家提供的FPGA開發(fā)工具(Diamond或Radiant、vivado)的綜合、布局、布線,會產生bit文件或bin文件。

如果工程師將最終產生的bit文件或bin文件下載到FPGA中,就相當于一位硬件工程師,在FPGA芯片這塊已經放置了“元件”的“電路板”上,進行了布線操作。(也就是把毫無關聯的與器件,用銅線連接起來)

下載程序后的FPGA,我們就不能簡單稱之為“電路板”了。

舉個例子,FPGA實現的功能是SPI轉并口,那么這塊FPGA就可以稱為“spi接口轉換板”。

當然,FPGA和“電路板”終究是不同的,FPGA可以進行重復編程,相當于一塊可以反復布線的電路板。

七、為什么效率會如此之高?

1. FPGA與GPU的區(qū)別本質上是體系結構的區(qū)別

CPU、GPU 都屬于馮·諾依曼結構,指令譯碼執(zhí)行、共享內存。

FPGA 本質上是無指令、無需共享內存的體系結構。

CPU與FPGA區(qū)別之(指令):CPU結構——有指令:馮氏結構中,由于執(zhí)行單元(如 CPU 核)可能執(zhí)行任意指令,就需要有指令存儲器、譯碼器、各種指令的運算器、分支跳轉處理邏輯。由于指令流的控制邏輯復雜,不可能有太多條獨立的指令流,
因此 GPU 使用 SIMD(單指令流多數據流)來讓多個執(zhí)行單元以同樣的步調處理不同的數據,CPU 也支持 SIMD 指令。FPGA結構——無需指令:而 FPGA 每個邏輯單元的功能在重編程(燒寫)時就已經確定,不需要指令。

CPU與FPGA區(qū)別之(內存)CPU結構——仲裁與共享內存:馮氏結構中使用內存有兩種作用。一是保存狀態(tài),二是在執(zhí)行單元間通信。由于內存是共享的,就需要做訪問仲裁;為了利用訪問局部性,每個執(zhí)行單元有一個私有的緩存,這就要維持執(zhí)行部件間緩存的一致性。

FPGA結構——無需仲裁與共享內存:對于保存狀態(tài)的需求,FPGA 中的寄存器和片上內存(BRAM)是屬于各自的控制邏輯的,無需不必要的仲裁和緩存。對于通信的需求,FPGA 每個邏輯單元與周圍邏輯單元的連接在重編程(燒寫)時就已經確定,并不需要通過共享內存來通信。

FPGA 同時擁有流水線并行和數據并行,而 GPU 幾乎只有數據并行(流水線深度受限)。

FPGA流水線與數據并行處理:例如:處理一個數據包有 10 個步驟,FPGA 可以搭建一個 10 級流水線,流水線的不同級在處理不同的數據包,每個數據包流經 10 級之后處理完成。每處理完成一個數據包,就能馬上輸出。

GPU數據并行處理:而 GPU 的數據并行方法是做 10 個計算單元,每個計算單元也在處理不同的數據包,

然而所有的計算單元必須按照統(tǒng)一的步調,做相同的事情(SIMD,Single Instruction Multiple Data)。

這就要求 10 個數據包必須一起輸入、一起輸出,輸入輸出的延遲增加了。

總結一句話,很多算法如果用純軟件實現,需要很多條指令才能完成,
如果用FPGA,只需要在有限個時鐘周期即可完成,速度快的不是一點半腥。

八、收入

FPGA軍品使用非常廣泛,基本上只要涉及無線通信的產品都會涉及到FPGA開發(fā)。

尤其在高校里,應用非常廣,
這個領域,特別容易發(fā)論文(博士論文)

還有一些其他領域都是些小公司,工控機器人,3d成像,裸眼3d公司,led拼接屏公司,

通信領域用的比較多,還有些大數據的,比如說騰訊和百度也有類似的崗位做數據挖掘

一口君隨手截取了某APP發(fā)布的南京、上海、深圳的FPGA崗位信息。

可見收入一般2萬到5萬,和互聯網寡頭動輒上百萬年薪,沒法比,和金融收入也沒法比,整體來說中規(guī)中矩吧!

對比軟件行業(yè)屬于薪水較低 但是經驗積累時間長了,工資會很高,越老越厲害,后面就比軟件工資高了。

一口君曾經和龍芯的技術人員交流過,他們的中流砥柱都是做FPGA出身的!

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

公眾號『一口Linux』號主彭老師,擁有15年嵌入式開發(fā)經驗和培訓經驗。曾任職ZTE,某研究所,華清遠見教學總監(jiān)。擁有多篇網絡協議相關專利和軟件著作。精通計算機網絡、Linux系統(tǒng)編程、ARM、Linux驅動、龍芯、物聯網。原創(chuàng)內容基本從實際項目出發(fā),保持原理+實踐風格,適合Linux驅動新手入門和技術進階。