FPGA 與 ARM 哪個發展方向更好?如果從職業發展考慮選擇?
從網上了解到FPGA偏於硬體,ARM偏於軟體,而對於個人來說,這兩個方向都可以接受,也沒有特別的喜好哪一個。請達人給予幫助,謝謝
看了題主的問題,猜測題主可能是對這方面感興趣的入門者,因為之前在學校里有七八年的帶微電子專業研究生入門的經驗,他們也多有這樣的問題,所以嘗試著給題主一些完整易懂的背景知識,當然最後題主怎麼選還是要看自己的。
首先,題主的問題是源於「FPGA偏於硬體,ARM偏於軟體」這樣一種見解,所以我認為題主是想選擇以後是學習基於FPGA相關器件的開發還是基於ARM相關器件的開發。這是一個很重要問題,同時也是兩種不同專業選擇的分水嶺。這也是大多數微電子專業學生,在入學之後,經過數字電路還是模擬電路的選擇之後,需要做的第二個選擇。
基於FPGA相關器件的開發,作為一種工作種類,是隸屬於數字集成電路設計這個門類的。因此在開發時,採用的輸入語言目前基本還是verilog/VHDL這中硬體描述語言。而基於ARM相關器件的開發,則是隸屬於嵌入式系統設計,採用的輸入語言則是C/C++等高級語言。簡單說下,這兩種語言種類的區別,在硬體描述語言中,所有的語句和語句塊是並行執行的,而在C語言中語句是順序執行的。用形象的方式來說,硬體描述語言寫出來的是由與或非門和寄存器組成的一塊電路,而C語言寫出的則是存在內存中將由CPU去一條一條執行的指令集合。這種區別造成的是在開發思維上的巨大不同,就像我們自己動手去做一個木桌,和指揮別人做一個木桌一樣。
FPGA開發在整個IC設計產業里確實是一個佔比很小的工種,目前最大量的應用場景仍舊是IC設計流程中做為硬體驗證平台使用。也就是在晶元生產出來之前,工程師將整個數字電路設計放入FPGA,測試在實際應用場景下,數字電路的各項功能是否有誤。同時,由於FPGA單片的價格遠遠超過ASIC晶元的價格,因此專門的基於FPGA的產品大多只用於特殊的用量較少的應用場合,這也是昂貴ASIC設計和流片成本所帶來的折中選擇。目前在國內FPGA開發我所接觸到的比較有前景的方向大概就只有高性能計算,之前有個研究所和我們洽談過要100多套的FPGA板卡,去組建一個高速網路數據挖掘的計算系統。而其他有些大型的網路公司和方案服務公司也提出過類似的要求。這還是因為為了一套高性能計算系統去做一個ASIC實在是得不償失,而用GPU或者高性能CPU有時候不能達到他們的性能要求,而且FPGA的靈活性也大大減少了他們修改演算法的成本。不過這還是一個細化分的小市場,比不了消費類電子那種出貨量。所以,如果有意願學習FPGA開發的話,倒不如投身IC設計這個大門類了,這樣可選擇的空間比指著FPGA大很多,只不過IC設計行業估計也是最苦逼的行業之一。。。。
再來說說基於ARM器件的開發,這個方面實際經驗我就沒有了,不過因為相關也有些了解。首先很不幸如同之前一個答案一樣,做嵌入式系統的底層開發,比如寫寫driver或是firmware之類的,也是非常的苦逼,不僅很多時候是重複性勞動,而且在一個IC公司中底層工程師也大多屬於那種不能缺但是也不是核心價值的位置。同樣的我也推薦有興趣的話,還是投入應用開發領域,在學習的過程也涵蓋了基於ARM器件開發的相關知識,同樣的可選擇的空間就又大了很多。
最後總結一句,在學習階段,多學些技能,會讓你對這個專業的理解更深,這樣會給你以後開始在一個方向專註努力的時候提供一個強大的知識結構基礎。僅從技術上考量,都是本領域內比較尖端的技術,但都只是工具,掌握工具的最終還是做碼農。
從技術的職業發展考慮,工具是要掌握的,但是更重要的是演算法和系統,這方面軟體有天然的優勢,因為它更上層,而且FPGA界也在往讓軟體工程師能方便操作硬體的方向努力。從微觀上說,做FPGA的有做軟體演算法硬體化的,有些介面時序的,有做系統集成的,分工明確的還有專門做模擬的,專門做驗證的,專門做時序收斂的;前衛一點的還有在FPGA上做嵌入式軟/硬核的,做HLS (High Level Synthesis) 的。前端的越了解演算法、協議和系統越值錢,後端的越了解工具和方法學越值錢。
同樣,做嵌入式軟體的(不是最熟),也分做BSP的,做專用硬體驅動開發的,做操作系統移植和性能優化的,做應用軟體開發的等等。越底層越需要了解硬體,越上層越需要了解演算法。
如果有心做嵌入式,最佳路徑是在了解硬體的基礎上做軟體,這樣對系統構架有充分的認識,將來挖掘系統性能潛力也越有底氣。如果必選其一,那還是做軟體吧,畢竟硬體有摩爾定律撐著,軟體的發展才決定著與人類共同存在著的機器們的智商,其實就是決定著我們的生存環境。它的發展,暫時看不到上限。
說到職業發展,我認為題主在問未來兩種工程師哪種更富有缺稀性。僅僅從器件的角度,ARM構建了一個龐大的生態鏈,就是為了讓更多的人使用ARM。現在從市場上找一個ARM工程師肯定要比找一個PowerPC工程師簡單很多。而FPGA呢,從器件使用的角度,門檻也在下降。隨著高層次綜合技術的發展,現在一個會寫C的程序員寫FPGA代碼估計問題也不會很大。更讓人嘆為觀止的是,FPGA綜合軟體變得更聰明了,比如Xilinx的Vivado軟體能夠更合理地利用器件資源,以前一個需要經驗豐富的熟手手動做精細約束的設計,軟體分分鐘就做好了。任何一種以"使用"為主的技術,逐步降低使用門檻就是大趨勢。工程師之所以還顯得缺稀,還是因為這項技術進化的不夠。所以樓主,你應該考慮的問題是未來在哪個行業,哪個位置會讓自己變得更富有缺稀性。總有一天,這個問題會變得"使用拼音還是五筆更有前途"一樣的。
Intel收購Altera之後會推很多數據中心/深度學習和IoT應用,這還需要一段時間明年第一顆集成FPGA的至強發布。普及到更大規模的市場應該還需要幾年,包括開發工具比如現有的編譯器體系也需要有很大變化。
可以參考這個回答 -
怎樣理解Altera被intel收購?? - 江城雨的回答當然這離現在的FPGA典型應用有點遠了。
感覺FPGA要把領域拓展到單片機和DSP領域去了,目前altera在研發把PF集成到SOPC上,節點也在向45,65NM做,SOPC也在添加更精確的DSP系統(altera 的stratix系列),現在感覺SOPC各種集成單片機核,DSP核,RF。但FPGA也只是研發的工具,實際投向市場的是靠AISC(現在路由器裡面的板子基本是ASIC做的)。 STM32什麼的也只是個驗證工具,隨著互聯網向物聯網轉變,嵌入式這個反向確實是很不錯的。我也是學生,有些東西還是少些疑問,先學了再說,兩者都不錯的。
果斷arm
推薦閱讀:
※天生擅长阴谋算计、利用各种条件的人适合什么行业?
※知乎上的00後長大後都想做什麼職業?
※國內軟體公司的配置管理員(SCM)前景如何?在該崗位從事幾年後當工作都變成不斷地重複後如何突破及自我發展?
※不懂人際在外企也難生存,在中國還有職業發展空間嗎,外企兢兢業業工作8年後何去何從?
※不同行業都有哪些特有的職業習慣?