如何學好FPGA

http://bbs.elecfans.com/jishu_278578_1_1.html
掌握FPGA能夠找到一份很好的工做,對於有經驗的工做人員,使用FPGA可讓設計變得很是有靈活性。掌握了FPGA設計,單板硬件設計就很是容易(不是系統設計),特別是上大學時如同天書的邏輯時序圖,看起來就很是親切。但FPGA入門卻有必定難度,由於它不像軟件設計,只要有一臺計算機,幾乎就能夠完成全部的設計。FPGA設計與硬件直接相關,須要實實在在的調試儀器,譬如示波器等。這些硬件設備通常比較昂貴,這就形成必定的入門門檻,新人在入門時遇到一點問題或者困難,因爲沒有調試設備,沒法定位問題,最後可能就會放棄。其實這時若是有人稍微指點一下,這個門檻很容易就過去。  我用FPGA作設計不少年了,遠達不到精通的境界,只是熟悉使用,在這裏把我對FPGA學習步驟理解寫出來,僅是做爲一個參考,不對的地方,歡迎你們討論和指正。
FPGA學習步驟一、工欲善其事,必先利其器。
計算機必不可少。目前FPGA應用較多的是Altera和xilinx這兩個公司,能夠選擇安裝quartusII或者ISE軟件。這是必備的軟件環境。
硬件環境還須要下載器、目標板。雖然有人說沒有下載器和目標板也可學習fpga,但那老是紙上談兵。這就像談女友,老是嘴上說說,通個電話,連個手都沒牽,能說人家是你朋友?雖然說搭建硬件環境須要花費,但想一想,硬件環境至多幾百元錢,你要真的掌握FPGA的設計,起薪比別人都不止高出這麼多。這點花費算什麼?
FPGA學習步驟二、熟悉verilog語言或者vhdl語言 ,熟練使用quartusII或者ISE軟件。
VHDL和verilog各有優勢,選擇一個,建議選擇verilog。熟練使用設計軟件,知道怎樣編譯、 仿真、下載等過程。
起步階段不但願報一些培訓班,除非你有錢,或者運氣好,碰到一個水平高、又想把本身的經驗和別人共享的培訓老師,否則的話,培訓完後總會感受本身是一個冤大頭。入門階段能夠在利用網絡資源完成。
FPGA學習步驟三、設計一個小代碼,下載到目標板看看結果
此時能夠設計一個最簡答的程序,譬如點燈。若是燈在閃爍了,表示基本入門了。若是此時可以下載到FPGA外掛的flash,FPGA程序可以從flash啓動,代表FPGA的最簡單設計你已經成功,能夠到下一步。
FPGA學習步驟四、設計稍微複雜的代碼,下載到目標板看看結果。
能夠設計一個UART程序,網上有參考,你要懂RS232協議和FPGA內置的邏輯分析儀。網上下載一個串口調試助手,調試一番,若是 通訊成功了, 恭喜,水平有提升。進入下一步。
FPGA學習步驟五、設計複雜的代碼,下載到目標板看看結果。
譬如sdram的程序,網上也有參考,這個設計難度有點大。可用串口來調試sdram,把串口的數據存儲到sdram,而後讀回,若是成功,那你就比較熟悉FPGA設計了
FPGA學習步驟六、設計高速接口,譬如ddr2或者高速串行接口
這要對FPGA的物理特性很是瞭解,並且要懂得是時序約束等設計方法,要看大量的原廠文檔,這部分紅功了,那就對FPGA的物理接口掌握很深,你就是設計高手了
FPGA學習步驟七、設計一個複雜的協議
譬如USB、PCIexpress、圖像編解碼等,鍛鍊對系統的總體把握和邏輯劃分。完成這些,你就是一個一流的高手、
FPGA學習步驟八、學習再學習
學習什麼,我也不知道,我只知道「學無止境,山外有山」。
如今不少FPGA工程師,沒找到合適,我以爲不少人從開始的時候就誤入歧途了,對新手學習FPGA設計我也說一點見解吧。我認爲要從基礎開始作,基礎牢,纔有成爲高手的可能。
我以爲FPGA學習有如下幾步必需要走:
第一步:學習瞭解FPGA結構,FPGA究竟是什麼東西, 芯片裏面有什麼,不要開始就拿個 開發板照着別人的東西去編程。不少開發板的程序寫的很爛,我也作過一段時間的開發板設計,我以爲很大程度上,開發板在誤人子弟。不過原廠提供的正品開發板,代碼很優秀的,能夠借鑑。只有瞭解了FPGA內部的結構才能明白爲何寫Verilog和寫C總體思路是不同的。
第二步:掌握FPGA設計的流程。瞭解每一步在作什麼,爲何要那麼作。不少人都是不就是那幾步嗎,有什麼奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的區別吧。
瞭解了FPGA的結構和設計流程纔有可能知道怎麼去優化設計,提升速度,減小資源,不要急躁,不要去在爲選擇什麼語言和選擇哪一個公司的芯片上下功夫。語言只是一個表達的方式,重要的是你的思惟,沒有一個好的指導思想,語言用得再好,不過是個懂語言的人。
第三步:開始學習代碼了。我建議要學代碼的人都去Altera或Xilinx的網站上下原廠工程師的代碼學習。不要一開始就走入誤區。
第四步:template很重要。能不能高效利用FPGA資源,一是瞭解fpga結構,二是瞭解欲實現的邏輯功能和基本機構,三是使用正確的模板。FPGA內部器件種類相對較單一,用好模板,你的邏輯才能被高效的綜合成FPGA擅長表達的結構:)
作FPGA主要是要有 電路的思想,做爲初學者,每每對器件可能不是熟悉,那麼應該對於數字電路的知識很熟悉吧,FPGA中是由觸發器和查找表以及互聯線等基本結構組成的,其實在咱們在代碼裏面可以看到的就是與非門以及觸發器,不要把verilog和c語言等同起來,根本就是不一樣的東西,沒有什麼可比性,在寫一句程序的時候應該想到出來的是一個什麼樣的電路,計數器選擇器 三態門等等,理解時序,邏輯是一拍一拍的東西,在設計初期想的不是很清楚的時候能夠畫畫時序圖,這樣思路會更加的清晰,還有就是仿真很重要,不要寫完程序就去往FPGA中去加載,首先要仿真,尤爲是對比較大型一點的程序,想像本身是在作asic,是沒有二次機會的,因此必定要把仿真作好,還有不少新手對於語言的學習不知道選vhdl好仍是verilog好,我的偏好verilog,固然不是說vhdl很差,反正寫出來的都是電路,那固然就不要在語言的語法上面花太多的功夫了,verilog 言簡意賅assign always case if else 掌握這些幾乎能夠寫出90%的電路了,上面是我對FPGA學習的一些愚見,但願對你們有所幫助。
 
 
 
 
 
 
 
 
 
 
 
 
http://blog.csdn.net/k331922164/article/details/44626989
PS:筆者強烈建議諸位註冊一個EETOP的帳號,天天簽到或者發貼、回貼就有積分了,裏面的資源很是豐富,各類軟件、資料都能找到。

1、入門首先要掌握HDL(HDL=verilog+VHDL)。php

       第一句話是:還沒學數電的先學數電。而後你能夠選擇verilog或者VHDL,有C語言基礎的,建議選擇VHDL。由於verilog太像C了,很容易混淆,最後你會發現,你花了大量時間去區分這兩種語言,而不是在學習如何使用它。固然,你思惟能轉得過來,也能夠選verilog,畢竟在國內verilog用得比較多。html

       接下來,首先找本實例抄代碼。抄代碼的意義在於熟悉語法規則和編譯器(這裏的編譯器是硅編譯器又叫綜合器,經常使用的編譯器有:QuartusISEVivadoDesign Compiler 、SynopsysVCS、iverilog、LatticeDiamond、Microsemi/Actel的Libero、Synplify pro),而後再模仿着寫,最後不看書也能寫出來。編譯完代碼,就打開RTL圖,看一下綜合出來是什麼樣的電路linux

       HDL是硬件描述語言,突出硬件這一特色,因此要用數電的思惟去思考HDL,而不是用C語言或者其它高級語言,若是不能理解這句話的,能夠看《什麼是硬件以及什麼是軟件》。在這一階段,推薦的教材是《Verilog HDL數字設計與綜合》或者是《用於邏輯綜合的VHDL》。不看書也能寫出個三段式狀態機就能夠進入下一階段了。ios

       此外,你手上必須準備Verilog或者VHDL的官方文檔,《verilog_IEEE官方標準手冊-2005_IEEE_P1364》、《IEEE Standard VHDL Language_2008》,以便遇到一些語法問題的時候能查一下。git

       爲何不推薦學習NIOS II和MicroBlaze等軟核?算法

      一、性價比不高,通常的軟核性能大概跟Cortex M3或M4差很少,用FPGA那麼貴的東西去作一個性能通常的CPU,在工程上是很是不划算的。不如另外加一塊M3。express

      二、加上軟核,可能會影響到其它的邏輯的功能。這是在資源並不十分充足的狀況下,再加上軟核,致使佈局佈線變得至關困難。編程

      三、軟核不開源,出現Bug的時候,不容易調試。api

2、獨立完成中小規模的數字電路設計。網絡

       如今,你能夠設計一些數字電路了,像交通燈、電子琴、DDS等等,推薦的教材是《Verilog HDL應用程序設計實例精講》。在這一階段,你要作到的是:給你一個指標要求或者時序圖,你能用HDL設計電路去實現它。這裏你須要一塊開發板,能夠選Altera的cyclone IV系列,或者Xilinx的Spantan 6。還沒掌握HDL以前千萬不要買開發板,由於你買回來也沒用。這裏你不必每次編譯經過就下載代碼,我們用modelsim仿真(此外還有QuestaSimNC verilog、Diamond的Active-HDL、VCS、Debussy/Verdi等仿真工具),若是仿真都不能經過那就不用下載了,確定不行的。在這裏先掌握簡單的testbench就能夠了。推薦的教材是《WRITING TESTBENCHES Functional Verification of HDL Models》。

3、掌握設計方法和設計原則。

       你可能發現你綜合出來的電路儘管沒錯,但有不少警告。這個時候,你得學會同步設計原則、優化電路,是速度優先仍是面積優先,時鐘樹應該怎樣設計,怎樣同步兩個異頻時鐘等等。推薦的教材是《FPGA權威指南》、《IP核芯志-數字邏輯設計思想》、《Altera FPGA/CPLD設計》第二版的基礎篇高級篇兩本。學會加快編譯速度(增量式編譯、LogicLock),靜態時序分析timequest),嵌入式邏輯分析儀(signaltap)就算是通關了。若是有不懂的地方能夠暫時跳過,由於這部分還須要足量的實踐,纔能有較深入的理解。

4、學會提升開發效率。

        由於Quartus和ISE的編輯器功能太弱,影響了開發效率。因此建議使用Sublime text編輯器中代碼片斷的功能,以減小重複性勞動。Modelsim也是經常使用的仿真工具,學會TCL/TK以編寫適合本身的DO文件,使得仿真變得自動化,推薦的教材是《TCL/TK入門經典》。你可能會手動備份代碼,可是專業人士都是用版本控制器的,因此,爲了提升工做效率,必須掌握GIT。文件比較器Beyond Compare也是個比較經常使用的工具。此外,你也能夠使用System Verilog來替代testbench,這樣效率會更高一些。若是你是作IC驗證的,就必須掌握System Verilog和驗證方法學(UVM)。推薦的教材是《Writing Testbenches using SystemVerilog》、《The UVM Primer》、《System Verilog1800-2012語法手冊》。

         掌握了TCL/TK以後,能夠學習虛擬Jtag(ISE也有相似的工具)製做屬於本身的調試工具,此外,有時間的話,最好再學個Python。腳本,意味着一勞永逸。

5、加強理論基礎。

        這個時候,你已經會使用FPGA了,可是還有不少事情作不了(好比,FIR濾波器、PID算法、OFDM等),由於理論沒學好。我大概地分幾個方向供你們參考,後面跟的是要掌握的理論課。

一、信號處理——信號與系統、數字信號處理、數字圖像處理、現代數字信號處理、盲信號處理、自適應濾波器原理、雷達信號處理

二、接口應用——如:UART、SPI、IIC、USB、CAN、PCIE、Rapid IO、DDR、TCP/IP、SPI4.2(10G以太網接口)、SATA、光纖、DisplayPort

三、無線通訊——信號與系統、數字信號處理、通訊原理、移動通訊基礎、隨機過程、信息論與編碼

四、CPU設計——計算機組成原理、單片機、計算機體系結構、編譯原理

五、儀器儀表——模擬電子技術、高頻電子線路、電子測量技術、智能儀器原理及應用

六、控制系統——自動控制原理、現代控制理論、過程控制工程、模糊控制器理論與應用

七、壓縮、編碼、加密——數論、抽象代數、現代編碼技術、信息論與編碼、數據壓縮導論、應用密碼學、音頻信息處理技術、數字視頻編碼技術原理

       如今你發現,原來FPGA會涉及到那麼多知識,你能夠選一個感興趣的方向,可是工做中頗有可能用到其中幾個方向的知識,因此理論仍是學得越多越好。若是你要更上一層,數學和英語是不可避免的。

6、學會使用MATLAB仿真。

        設計FPGA算法的時候,多多少少都會用到MATLAB,好比CRC的係數矩陣、數字濾波器係數、各類表格和文本處理等。此外,MATLAB還能用於調試HDL(用MATLAB的計算結果跟用HDL算出來的一步步對照,能夠知道哪裏出問題)。推薦的教材是《MATLAB寶典》和杜勇的《數字濾波器的MATLAB與FPGA實現》。

7、足量的實踐。

       這個時候你至少讀過幾遍芯片手冊(官網有),而後能夠針對本身的方向,作必定量的實踐了(期間要保持良好的代碼風格增長元件例化語句的可讀性,繪製流程圖/時序圖撰寫文檔的習慣)。好比:通訊類的能夠作調製解調算法,儀表類的能夠作總線分析儀等等。不過這些算法,在書上只是給了個公式、框圖而已,跟實際的差距很大,你甚至會以爲書上的東西都很膚淺。那麼,你能夠在知網百度文庫EETOP論壇opencoresChinaAET、Q羣共享、博客上面找些相關資料(校外的朋友能夠在淘寶買個知網帳號)。其實,當你到了這個階段,你已經達到了職業級水平,有空就多瞭解一些前沿技術,這將有助於你的職業規劃。

        在工做當中,或許你須要關注不少協議和行業標準,協議能夠在EETOP上面找到,而標準(如:國家標準GB和GB/T,國際標準ISO)就推薦《標準網》和《標準分享網》。

8、圖像處理。(這部分只寫給想學圖像處理的朋友,也是由淺入深的路線)

一、Photoshop。花1、兩週的時間學習PS,對圖像處理有個大概的瞭解,知道各類圖片格式、直方圖、色相、通道、濾鏡、拼接等基本概念,並能使用它。這部分是0基礎,目的讓你們對圖像處理有個感性的認識,而不是一上來就各類各樣的公式推導。推薦《Photoshop CS6徹底自學教程》。

二、基於MATLAB或OpenCV的圖像處理。有C/C++基礎的能夠學習OpenCV,不然的話,建議學MATLAB。這個階段下,只要學會簡單的調用函數便可,暫時不用深究實現的細節。推薦《數字圖像處理matlab版》、《學習OpenCV》。

三、圖像處理的基礎理論。這部分的理論是須要高數、復變、線性代數、信號與系統、數字信號處理等基礎,基礎很差的話,建議先補補基礎再來。看不懂的理論也能夠暫時先放下,或許學到後面就天然而然地開竅了。推薦《數字圖像處理》。

四、基於FPGA的圖像處理。把前面學到的理論運用到FPGA上面,若是這時你有前面第七個階段的水平,你將輕鬆地獨立完成圖像算法設計(圖像處理是離不開接口的,上面第五個階段有講)。推薦《基於FPGA的嵌入式圖像處理系統設計》、《基於FPGA的數字圖像處理原理及應用》。

五、進一步鑽研數學。要在算法上更上一層,必然須要更多的數學,因此這裏建議學習實分析泛涵分析小波分析等。

下面這兩個階段是給感興趣的朋友介紹的。

9、數電的盡頭是模電。

       如今FPGA內部的事情是難不到你的,可是信號出了FPGA,你就無法控制了。這個時候必須學好模電。好比:電路分析、模擬電子技術、高頻電子線路、PCB設計、EMC、SI、PI等等,能設計出一塊帶兩片DDR3的FPGA開發板,就算通關了。具體的學習路線能夠參考本博客的《如何學習硬件設計——理論篇》和《如何學習硬件設計——實踐篇》。

10、學無止境。

       能到這個境界,說明你已經很厲害了,可是還有不少東西要學的,由於FPGA經常要跟CPU交互,也就是說你得常常跟軟件工程師交流,因此也得懂點軟件方面的知識。好比ARM(Xilinx的ZYNQ和Altera的SOC會用到ARM的硬核,請參考本博客的《如何學習嵌入式軟件》)、DSP、linux、安卓、上位機(QT、C#、JAVA)均可以學一下,反正學無止境的。

 

 

 

 

 

 

FPGA資深FAE的經驗獨白 — 駿龍科技Andrew_Zhang

 
看似簡單的幾個問題,Andrew卻回答的層次分明,小編已經沒有辦法有什麼其餘詞語去形容了。本文Andrew不只僅對FPGA入門學習流程作了詳細的分享,更是對FPGA開發工做的要求分紅大公司和小公司兩個層面來分析。你能想象曾經從一個疏忽學業的人成爲一名資深FAE的嘛?
 
採訪:Cindy Sun chenfeng@elecfans.com
撰文、組稿:Cici Chen chenfeng@elecfans.com 
(原創內容,轉載請註明來自ElecFans)
 
1. 電子發燒友:您認爲想學FPGA的話,先學好什麼才最重要?
Andrew:

咱們玩FPGA的一般就是跟數字電路打交道,要想玩得轉,必須先學習並掌握最最基礎的數字電路和HDL硬件描述語言,固然這只是入門必備,實際上遠遠不夠。我的拙見,要入行除了至少掌握一種FPGA的仿真及開發調試流程以外;起碼還要了解一些模擬電路知識,掌握諸如電源紋波、時鐘抖動、信號質量等常常須要測量的硬件參數的測試方法;起碼還要掌握一種原理圖和Layout設計軟件,可以查看分析調試電路板上的電路模塊,如電源、時鐘、存儲器、配置、I/O和高速收發器等模塊;起碼還要掌握一種單片機的開發流程,項目中不免有一些須要配置控制的需求,使用外置單片機或者內置ARM硬核或者其餘軟CPU來實現,簡單又方便;因爲本人水平有限,其餘方面這裏就再也不贅述。 

那麼,針對FPGA入門學習的通常流程,簡單總結一下,供朋友們參考,有經驗的大牛能夠繞道:
  • 1.首先要有開發平臺,把該準備的都準備好,磨刀不誤砍柴工:
    好比ALTERA的Quartus II軟件、開發板和配置調試工具USB Blaster,以及仿真軟件Modelsim SE。軟件能夠從網上下載,入門功能的許可的和諧方法一大堆;開發板和USB Blaster能夠借,能夠買,動手能力強的朋友,本身畫一塊也行。對於初學者,建議找一塊有詳細配套教程的開發板。
  • 2. 對於新手來說,循序漸進地學習每每就是最快的學習方法:
    照貓畫虎儘管囫圇吞棗只知其一;不知其二,但起碼能把開發流程摸熟,能跑起來。剛拿到開發板,確定是丈二和尚摸不着頭腦。這個時候,建議先根據開發板的配套教程,把原理圖上的各項模塊功能釐清,把FPGA周圍的電源、時鐘、復位、配置、GPIO和鏈接器等的電路原理理一理分析分析。再按照配套教程中介紹的流程,把配套的測試工程跑通,在這個階段,把FPGA開發所涉及的RTL輸入,綜合、前仿真、佈局佈線、後仿真、配置調試的流程摸清楚。學習新東西的過程當中,不免會出現一些不熟悉的"疑難雜症",切莫灰心,堅持就是勝利。固然,每每這個時候,有些朋友開始嫌棄教程寫得冗長、寫得爛,或者碰到英文教程辭讓看不懂,就開始閉門造車,每天碰壁,逐漸喪失興趣和信心,當開發板上面落滿了灰,你還好意思在跳槽的時候吹牛有過如何豐富FPGA經驗嗎?
  • 3. 熟悉了開發流程:
    接下來就能夠分析或者改寫原教程中的代碼或者模塊,有針對性地去實現一些功能模塊,而且經過一些軟件自帶的調試組件來輔助驗證結果是否符合預期,如SignalTap II等。不管是原廠的單板,仍是FPGA愛好者作的單板,配套例程都會有一些經典的電路實現案例,好比基本的分頻器,簡單的I2C通訊、SRAM讀寫控制,以及稍微複雜的SDRAM讀寫控制等,認真分析別人如何寫代碼實現所觀測到的時序,與此同時,閱讀相應模塊手冊或者器件內部組件文檔中的時序描述章節來對比分析,查閱網上別人分享的調試心得博客、論文等,直到理解並掌握爲止,而且適當地作些筆記概括總結,所謂時常記記,以防忘記,給其餘人或者給之後的本身參考。
  • 4. 光靠本身研究,有時會被一些問題阻塞思緒,大腦會卡殼:
    那麼,加入一些學習小組、專業的討論圈子是有必要的,是利大於弊的,好比電子發燒友論壇、FPGA產業圈QQ羣,分享心得,諮詢問題,探討人生。這個過程,也有可能誤入歧途,有些朋友可能過度享受社交的愉悅,迷戀於灌水的浪潮中。建議在學習工做的時候,把精力主要放到學習研究中,切莫墮入無聊的灌水大軍中。除了線上交流,你們也能夠參加電子發燒友等社區組織的線下沙龍活動,面對面地交流學習,探討問題的同時還可能交往一些好朋友。跟別人討論問題,目的是爲了解決問題,處理過程須要一些技巧,建議儘可能把已經遇到的問題的器件型號軟件版本、觀測到的症狀、仿真調試的波形、已嘗試的方法和已分析的可能緣由先羅列出來,讓能幫你且有時間有心情幫你的朋友快速及時地分析出緣由並給出解決方法,這是一個簡單的討論問題的方法論。別人幫你是恩德,不是義務。若是沒有人幫到你,不要灰心,繼續想其餘辦法。
  • 5. 有一點基礎了,就能夠適時選擇一些項目練手:
    不只能夠鍛鍊FPGA開發能力,還能夠加強信心,沉澱經驗,獲取價值體現。總是拿着開發板玩,思惟容易囿於開發板所涉及的小小「圈套」,其實開發板只是個學習工具,開發板玩得再熟,也只是熟悉那上面的幾個小模塊而已。FPGA應用普遍,相關產品層出不窮,大把的就業及市場機會,若是光學不練,那真是白瞎了時光,浪費了生命。
2. 電子發燒友:從事FPGA開發工做有些什麼要求呢?
Andrew:
坦白地講,這個問題很難回答,不一樣的公司、不一樣的產品、不一樣的項目組、不一樣的研發人員需求千差萬別。不過,能夠討論討論。公司與研發之間是雙向選擇,公司要求產品具備必定的技術優點和穩定度,可以及時上市覆蓋必定的細分行業,研發須要公司按照合同提供合理的待遇和福利。 大公司人員分工相對比較清晰,FPGA工程師須要配合系統工程師、算法工程師、軟件工程師、硬件工程師和測試工程師完成產品單板的功能設計和穩定性測試,由於不是一我的在戰鬥,因此更須要注重團隊合做。並且大公司每每與芯片的供應商有戰略合做關係,獲取相應的支持資源在力度和速度的優先級上遠遠高於通常公司,這對FPGA技術層面的修煉是大有裨益的。 

在這樣的公司裏工做,竊覺得須要培養:
  • 1. 自我學習能力。公司若是有相關培訓,抓住機會好好學習;若是沒有,平時在工做之餘要增強專業知識充電,把本身打形成不可或缺的人才。另外要注意公司不是學校,公司要的是能幹實事的員工,不是誇誇其談紙上談兵的趙括,不能每天想着學習而不幹活。
  • 2. 溝通協調能力。遇到疑難問題要及時發起團體討論診斷,切莫矇頭本身死扛,一來本身壓力大,二來影響項目開發進度,必要時要及時把芯片供應商的支持團隊拉進來共同討論分析。要意識到本身的不足,尊重團隊中其餘成員的意見和建議,常常鍛鍊本身的溝通協調能力,爲之後本身帶團隊作準備。
  • 3. 抗壓能力。FPGA開發的難度高居主控芯片(CPU,DSP,FPGA,專用芯片等)的榜首,芯片廠家爲了配合市場需求,連年不斷升級器件軟件,這對於研發來說就是災難,可是爲了提高最終產品的競爭力,提高咱們自身的價值,咱們不得不去學習掌握。另外公司項目每每嚴格按照預期進度開展,若是遇到難題,加班加點是必須的。因此咱們平時必定要多鍛鍊身體,多看書,培養必定的興趣愛好,以排解項目開發中的苦悶。像某爲那樣,只注重工做效率,把研發看成加班的機器,時不時就有報道研發跳樓的新聞,簡直就是業界的恥辱。
  • 4. 職業生涯規劃能力。大公司職業任務單一,對專業深度要求高。要逐步規劃調整本身將來的路,往專業深度走,作技術專家;往專業廣度上走,作系統工程師;往技術以外的崗位走,轉行。工做要積極主動,選好的路就好好走下去,切忌朝秦暮楚,濫竽充數,人浮於事,碰到好光景,還能夠混日子;碰到諸如當前這種外企裁員潮,諾基亞、思科、微軟等公司紛紛大裁人,老大不小的南郭處士再就業難度就比較大。凡事都逃不過因果關係,給公司努力工做,就是爲本身的將來努力工做。只要有能力,未來仍是有機會出去自創企業,創造更多社會價值。
小公司自由度高,單獨的FPGA工程師的職位設置不太常見,每每圍繞着項目的需求,工程師既要當爹又要當媽,硬件軟件邏輯機械模型一塊兒搞。從表面上看,要作的事情比較雜,新人每每感受在打醬油,跑龍套。有一些朋友耐心比較差,容易陷入常常跳槽的怪圈。其實呢,小公司有小公司的好,產品的複雜度相對來說不高,研發出項目的速度比較快,數目也比較多,容易積累自身的成就感,這感覺和大公司裏面有時的無力感有天壤之別。再者小公司因爲企業規模小的緣由,直接作平臺與大公司競爭的可能性不大,每每都是作一些圍繞大公司平臺的配套產品,或者作一些大公司不肯意作或者還沒有注意到的新的細分產品。做爲研發,可以直接或間接接觸終端行業應用,對產品的功能理解直觀透徹,對行業也有必定的調研,未來很容易出去創業,作出更加細分的行業產品。 

在小公司工做,竊覺得須要鍛鍊:
  • 1. 產品設計的全局觀。主動去研究產品的應用需求,整合現有的方案,揣摩可能改進的部分,將其開發設計爲產品的亮點,贏得細分行業的市場。產品自己技術含量不高,因此咱們也沒有必要糾結一些技術細節,只要能實現能出產品,就是研發的價值體現。
  • 2. 技術的廣度。多瞭解一些經常使用的芯片平臺,熱門的實現方案。產品在設計過程當中,儘可能選擇成熟的芯片平臺和結構,下降產品研發的風險和投資。
  • 3. 溝通能力。小公司的老闆通常不太注重研發,對研發的投入力度有限,研發團隊裏每每只有光桿司令幾人。長期欠缺溝通,有些朋友可能表現得比較木訥,比較悶騷,其實對從此的職業生涯是有害處的。必定要找機會與公司其餘部門的人溝通交流,不要給本身畫圈。平時要積極參加一些線下沙龍,活動,鍛鍊自身的溝通能力。
  • 4. 耐心。人生漫漫,來日方長,剩者爲王。所謂幹一行愛一行,機會永遠留給有準備的朋友。
3. 電子發燒友:初級工程師應具有哪些專業技能?
Andrew:
至於FPGA工程師的所需的專業技能,仁者見仁,智者見智,我在第一個問題的回答中也提到若干。

這裏專門羅列一下我我的淺見,僅供參考:
  • 1. 時序的設計和仿真能力。時序是設計出來的,一些常見的電路模塊必需要掌握,如流水線操做,狀態機,localbus接口,存儲器讀寫等電路的時序設計。FPGA相關的著做多如牛毛,這裏推薦兩本:《FPGA Prototyping by Verilog Examples》,美籍華人Pong P. Chu針對Xilinx Spatran3E 開發套件編著的Verilog基礎教材,能夠在網上下載英文版的pdf,能夠自行打印成冊參考;另一本有中譯本出版,能夠在Amazon購買,做者克里茲,孟憲元翻譯的《高級FPGA設計 結構、實現和優化》,書很好很薄,翻譯得有待改進。這兩本能夠做爲學習FPGA方法論的"紅寶書"。
  • 2. 電路調試能力。穩定的產品是創建在不斷調試改進的基礎上的。熟練使用經常使用的測試工具,如萬用表、示波器、邏輯分析儀等。熟悉FPGA廠家提供的調試工具,對於FPGA設計事半功倍,如前面提到的SignalTap II。一些輔助的調試工具最好也可以掌握,如串口、網絡報文分析工具等等。電子設計相關的小工具備不少,根據本身的工做須要適當選擇。
  • 3. 文檔閱讀和編寫能力。做爲一名FPGA工程師,免不了與器件軟件的英文文檔打交道,閱讀文檔要先是搞清楚幾條:讀哪些文檔哪一個章節,在哪裏找這些文檔。我想這些一時半會也講不完,我曾經在某論壇發了一個關於ALTEAR FPGA資料列表的帖子,很受歡迎,至今仍然在熱帖之中。建議常常主動與相關芯片廠家的FAE溝通,獲取有效的直接的技術支持;固然文檔是須要本身讀的,別人不能永遠幫你讀。再一個,公司內部技術積累,編寫文檔也是必要的,有一些工具須要掌握,如畫波形的TimeGen或者Timing Designer,字處理軟件Word或者WPS等。關於文檔建設,有些公司不過重視,其實文檔很重要很必要,對團隊內部審閱討論,對將來的本身參考都是有用的。
  • 4. 演講溝通的能力。俗話說,光說不練假把式,光練不說傻把式,又說又練真把式。團隊內部討論產品需求,方案規劃,問題診斷,都須要演講溝通。甚至請求老闆加薪,羅列本身的成果也須要必定的演講溝通能力。能夠適當地借用工具來輔助,好比ppt。
4. 電子發燒友:自從業以來,遇到最大的困難與挑戰是什麼?可否給咱們分享些您的經驗以及心路歷程?
Andrew: 
對我我的而言,在學習FPGA的道路上所遇到的最大的困難和挑戰是在大學期間發生的。因爲高中階段過度着迷於網頁設計,疏忽了學業,結果只考上一所不太有名的工科大學。大一結束的暑假,沒有回家,被老鄉介紹到當時由某老師組織的DSP小組中打雜。小組裏有兩撥人,一撥人研究基於TI DSP的指紋識別,另一撥人研究ALTERA FPGA,基於友晶的DE1開發板。當時剛剛唸完《電路》,比較好奇附錄章節的MATLAB實驗,因此玩過一陣子MATLAB,用來解電路的習題。那個時候對DSP和數字電路都不懂,恰好小組裏研究DSP的人比較多,FPGA小組還有名額,我就被分到FPGA小組。短短兩個月暑假,老師給咱們分配了MIT的《基於MATLAB的數字信號處理實驗》中的一些習題任務,同時咱們也自學了《數字電路》中的部分章節,學會了 Quartus II的基本操做流程。大二上學期,我基本把DE1開發板所配套的僅有的幾個實驗例程都跑通了,算是入門了。那時也不曉得FPGA能幹啥,反正就是比較着迷。老師平時給咱們介紹一些學習方法,佈置一些實驗任務,剩下的就是自我學習完成。好景不長,不曉得什麼緣由,咱們那個老師失蹤了,至今我都沒有他的音信。加上學校懂FPGA的人屈指可數,我請教過不少老師,但都是玩單片機和DSP的居多。也郵件聯繫過駿龍科技和艾睿電子,最終都是石沉大海,沒有回信。因此從大二開始,我對FPGA純粹就是獨自在學習。這對我來說,是FPGA學習道路上最大的困難和挑戰。

還好我在網上發現了蕭鴻森 oomusou的博客,他之前搞軟件的,當時他30多歲在臺大讀研究生同時負責本科FPGA實驗的助教,他寫了上百篇基於友晶DE系列開發板的實驗步驟及心得的博文。我幾乎把蕭老師的大部分博文都深刻研究實驗過,蕭老師寫的博文主要是爲了帶臺大本科的FPGA實驗課,行文徹底按照寫論文的格式,論述深刻淺出,對實現原理和代碼的解說很是詳盡,所引用的內容也一一標出。這段自學經歷對我有深遠的影響。再後來我認真研究過SOPC系統和Nios II軟核處理器,加入了著名的「SOPC技術聯盟」QQ羣,羣主騰龍大哥,張景秀,是《SOPC系統設計與實踐》的做者。在此羣中我認識了不少FPGA愛好者,一直相處到現在。因此我認爲網絡的力量是無窮的,不論身在何方,只要感興趣,能夠自學任何技術,我我的的經歷就是生動的案例。

最後我拿楊振寧老先生解說過的「真情妙悟著文章」來總結一下FPGA的研習心得。
首先要存真情,要有興趣去學習,去摸索,興趣是第一老師;而後若是可以在學習研究的同時獨立或者與別人合做完成一些小成果,好比參加電子競賽實現一些力所能及而且能體現本身想法的功能模塊,這就是妙語,有本身的積累和閃光點;最後著文章,就是經年累月,在項目實踐中學習總結,逐步沉澱爲必定的專業修養,將本身的思想凝結在產品的開發設計中。
5. 電子發燒友:您認爲從「Junior」工程師成長爲「Senior」工程師的過程有哪幾個階段呢?
Andrew: 
這個話題有難度有深度,恐怕我我的能力不夠,很差駕馭。竊覺得從產品設計的層面上講,初級工程師也許只能覆蓋一些基本的指定的功能模塊開發設計,可能還比較吃力,過程當中可能還須要向先進請教,工做的獨立性也須要逐步增強,所開發的產品可能考慮得不全面。可是他們有優點,年輕好學,積極主動,沒有明顯的過期的思惟慣式和不良的工做習慣,欠缺的只是工做經驗,若是公司內部有好的人才培養機制,那麼成爲高級工程師是遲早的事。相比較於初級工程師,高級工程師更加擅長於系統架構層面的工做,可能具體的執行層面不必定比初級工程師熟練,可是他們身經百戰,對行業應用瞭如指掌,可以敏感地挖掘出行業潛在的需求,並及時轉化到產品項目的研發架構及計劃中。他們是戰略性人才,是研發型公司不可或缺的頂樑柱。 

通常來說,在初級工程師階段,所能作的就是打打下手,作一些別人指派的工做,研究實現某些具體的簡單的可能有參考的項目模塊,同時逐步積累一些已經驗證過的項目模塊的開發經驗。而後下一步就是本身可以獨立承接並完成一些有規劃的有指標要求的項目,有一些獨特的看法和專業的沉澱,這個過程可能對於不一樣公司不一樣產品在時間跨度上各有差異。那麼最終就是量變致使質變,項目開發的多了,對行業應用的認知就愈來愈清晰,天然而然就昇華蛻變爲高級工程師。
6. 電子發燒友:在您生命中曾經有哪些人對你形成過影響? 給你的啓示又是什麼呢?
Andrew:
不少人,主要是我不一樣時期的老師們和朋友們。給個人啓示就是學習別人的長處,正視本身的短處,展現本身的特別之處。
7. 電子發燒友:身爲一名資深FAE不知道您對這個崗位又有怎樣的見解呢?
Andrew: 

有一個小故事,你們可能耳熟能詳。從前有我的去看醫生,他說本身很沮喪,生活無情而殘酷,在這充滿威脅世上以爲很是孤獨。醫生說:「沒關係,城裏的馬戲團有位著名的小丑,會說全部笑話。看了他的表演,你就不會再煩惱了。」那我的哭着說:「但是醫生,我就是那個小丑。」這個故事可能有些誇張,但我認爲也在必定層面上反映了諮詢支持從業人員的現狀,FAE可能也概莫能外吧。

FAE是研發人員最真誠的朋友
他們給研發人員推介最早進最合適的技術方案,幫助解決一個又一個已經遇到的技術難題,而且及時指出可能出現問題的規避方法;在加快研發產品速度的同時,也間接地直接的被傳導了一些研發壓力,那麼當不一樣方向的壓力傳導到單個FAE的身上,FAE的壓力也在倍增。他們可能有時沒有及時回覆你的郵件,沒有接你的電話,那是由於太忙了,請不要罵娘,請耐心等待。

FAE是一份極具挑戰的工做,
尤爲是主動器件的FAE。須要時刻保持積極主動的學習精神,第一時間把芯片廠商的最新技術學習消化並及時傳播給研發朋友們;須要良好的腦力和體力,纔可以在短期內響應及回覆來自於不一樣公司、不一樣項目、不一樣研發人員的不一樣層面的技術問題。

FAE是一份幸運的工做,
他們可以接觸各類各樣的行業應用,可以向各類各樣的研發人員學習,領略他們寶貴的絢爛的開發設計思想。

http://bbs.elecfans.com/forum.php?mod=viewthread&tid=446964

相關文章
相關標籤/搜索