FPGA資深FAE的經驗獨白——駿龍科技Andrew
2014年08月21日 10:11 來源:電子發燒友網論壇原創 作者:Cindy,Cici 我要評論(0)
看似簡單的幾個問題,Andrew卻回答的井井有條,小編已經沒有辦法有什么其他詞語去形容了。本文Andrew不僅僅對FPGA入門學習流程做了詳細的分享,更是對FPGA開發工作的要求分成大公司和小公司兩個層面來分析。你能想象曾經從一個疏忽學業的人成為一名資深FAE的嘛?
采訪:Cindy Sun sunbo@elecfans.com
撰文、組稿:Cici Chen chenchen@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 頁:FPGA資深FAE的經驗獨白——駿龍科技Andrew
- 第 2 頁:在小公司的工作之道
用戶評論
查看全部 條評論
查看全部 條評論>>