怎樣成為一名硬體工程師?

小弟是電子科學與技術的大一新生一枚,想畢業以後當硬體工程師,不知道要該怎樣去學習,該看哪方面的書?怎麼辦


謝邀。分享一篇比較好的回答

對於很多硬體工程師而言,每天都在忙活著手頭上的工作,但是有時候並不知道自己的水平去到哪裡,也不知道怎樣提高,這在這個瞬息萬變的社會裡面,其實有點危險!畢竟我們這些憑手藝吃飯的人不像某些尸位素餐的某猿,是跟不上潮流就會被淘汰的。所以就算我們不能成為最TOP的那個,也力爭成為排在前面的那一批人。

但我們工程師怎樣成為最TOP呢?該怎麼學習呢?

根據我們從小受到的教育中我們知道,這首先要求我們對於知識要理解透徹,越深入越好,對於任何一個知識點,通過基本公式,用數學工具推導到最後來驗證高級定律和公式。我想對於這一點,高考物理是達到了極點,高中物理知識其實不難,但是我們為了選拔的目的,把物理各種定律糅合在一起,結合一些腦筋急轉彎,複雜的運算,造成高考物理是最難的科目了。

但如果我們拿著解高考物理難題的精神來解決硬體問題,當然精神可嘉,工作之餘還是值得鼓勵這種學習和探索精神的;可是這樣對於項目開發卻是沒有多少好處,畢竟硬體工程師的工作是工程開發,在規定的時間和預算之內完成硬體項目,而不是你在這個時間呢自己推導出來了什麼公式和計算結果,那是科學家的工作,那是Research的工作。

工程開發一個重要特點就是「踩在前人的足跡」,就是通過過去幾十上百年的工程實踐,對於各種情況有了很多經驗數據和經驗方法,比如對於PCB layout來說,基本上每個公司都有自己的design guidelines/check list,這就是公司在過去很多項目中總結出來的,每一條可以說都付出了「血」的代價,這是對於板級設計來說了;對於核心晶元和器件,就更是如此了,晶元或器件公司幾十數百人歷時數年搞出來的一款晶元和器件,又豈是你通過幾百頁datasheet可以徹底理解的。

大多數情況下,知道主要介面,參數,功能和性能就足夠了,尤其是晶元/器件公司提供的design guidelines或者application notes,裡面一般都是晶元/器件工程師的肺腑之言,經驗之談,一般來說沒有個十年二十年工作經驗的工程師是寫不了這些東西的。

看起來雖然很簡單,看起來像是廢話,但是細細分析,結合電路定理和電磁定律,略微分析,就會發現簡直字字珠璣。剛畢業的好學生(一般來說學習好,喜歡啃難題,學習能力強,求知慾強)初干硬體設計,就會發現涉及的知識點和技術要點太多了,如果這個知識點想要理解透徹,那個知識點也要理解透徹,會發現一天24小時根本不夠用,但是對不起,公司請你過來不是讓你學習的,是要干硬體設計的,過一個月就要見原理圖了,你還在這捧著OrCAD手冊一個命令一個命令學習OrCAD使用技巧,研究為啥要有串列電阻呢,研究這個電容是取0.1uF還是0.01uF.。

有求知慾是好事,但是那是在工作之餘,項目之餘,虛心向前輩學習,盡量利用各種design guidelines,儘快完成設計工作,記錄自己的知識缺點,在業餘時間努力學習,理解透徹,通過設計驗證/測試,加深對於知識點的了解,這才是正確的工作方法。

我在剛畢業的時候欣喜的發現傳輸線理論太重要了,遂花了一個月把傳輸線理論努力了一把,並推導了大量公式進行驗證,其實總結起來就是幾句話,阻抗匹配,如果接收端阻抗大於發送端,信號會怎麼樣;如果小於,信號會怎麼樣;如果開路,會怎麼樣;如果短路,會怎麼樣,這幾條基本每本信號完整性的書上都會介紹,也不會有很複雜的數學公式推導,知道就行了,然後就是如何平衡發射端的阻抗,串列電阻,PCB阻抗,匹配阻抗等等,都是簡單的數學公式。

所以說,對於求知慾特彆強的人(比如我),有時候一定要學會「淺嘗輒止」,充分利用前輩經驗,避免陷入技術的誤區,比如放著公式不用,非得自己用二重積分推導一遍。硬體開發最主要的特點就是「廣博」,什麼東西都要知道,一個好的硬體工程師就要什麼都要懂一點,當然對於某些方面能夠深入一些到原理層次就更好了。

關於硬體設計的各種技術/標準/晶元/器件都要知道,需要的時候,能夠信手拈來,功能性能,參數特性,優點缺點。

那一個好的硬體工程師應該具備哪些基本知識和能力呢?

1. 快速學習的能力:

作為一個通信汪,我就以通信設備方面來說吧!

一方面,通信技術,標準,晶元更新的太快了,快到你根本來不及系統的了解它,只能通過特定的項目,需求進行了解;另一方面對於公司來說,需要做的硬體產品也是變化很快,客戶需要T1, E1, PDH, SDH,Ethernet, VoIP, Switch, Router, 沒有人是什麼都懂的,都需要能夠結合客戶的需求,選擇的晶元方案進行詳細了解,尤其對於介面協議和電氣特性。

假設你是做電源的,同理,你也需要對電源相關的知識和客戶的需求進行深入的理解和學習吧?

2. 對協議和標準的理解:

繼續用通信設備做代表。

通信設備,顧名思義,就是用來實現多種通信協議(比如T1, E1, V.35,PDH, SDH/SONET, ATM, USB, VoIP, WiFi, Ethernet, TCP/IP,RS232等等常用協議)實現通信的設備,各種電路,PCB板,電源都是為了通信協議服務的。

通信協議一般都是由晶元實現,要麼是成熟的 ASIC,要麼是自己開發的FPGA/CPLD,晶元工程師或者FPGA工程師比硬體工程師跟靠近通信協議,他們需要對於通信協議理解很透徹,實現各種邏輯上的狀態機以及滿足協議規定的電氣參數標準。按照OSI的七層模型,硬體工程師尤其需要專註於一層物理層和二層數據鏈路層的協議標準,以 Ethernet距離,物理層是由PHY/transceiver晶元完成,數據鏈路層是由MAC/switch 晶元完成,對於從事Ethernet相關開發的硬體工程師來說,需要對於PHY和Switch晶元理解透徹,從編碼方式,電氣參數,眼圖標準,模板,信號頻率到幀格式,轉發處理邏輯,VLAN等等。

對於傳統PDH/SDH/SONET設備就更是如此,PDH/SDH/SONET是更硬體的設備,就是說主要協議都是通過ASIC實現的,軟體的功能主要是管理,配置,監視,告警,性能,對於硬體工程師來說,必須要熟悉使用的相關協議和介面標準,尤其對於電氣規範,眼圖模板,這樣在設計驗證的時候才能胸有成竹。

如果你做智能家居的,你對藍牙、WIFI、Zigbee的新標準應該要深入了解吧,各自的優劣勢也應該了如指掌吧,最新的標準有啥提升和缺點也可以信手拈來,說不定這樣你就能做出符合消費者需求的全新產品呢!也指不定在跳槽的時候,因為你掌握了一個別人還沒有了解的技術,而獲得成功呢!

3. 寫文檔的能力:

誠如軟體設計一樣,好的軟體設計需要好的設計文檔,明確需求,實現什麼功能,達到什麼驗收標準,隨著晶元集成度的增加,介面速率的提高,單板複雜度的提高,硬體設計也越來越複雜以及對應熱穩定性,可靠性,電磁兼容,環境保護的要求,已經不是通過小米加步木。倉的游擊戰可以解決了,每一個硬體項目都是一場戰爭,都需要好好的規劃,好好的分析,這就需要好好做文檔。

對於硬體工程師來說,最重要的文檔有兩個:一個是硬體設計規範(HDS : hardware design specification)和硬體測試報告(一般叫EVT:Engineering Validation Test report或者DVT: Design Validation Test report),對於HDS的要求是內容詳實,明確,主晶元的選擇/硬體初始化,CPU的選擇和初始化,介面晶元的選擇/初始化/管理,各晶元之間連接關係框圖(Block Diagram),DRAM類型/大小/速度,FLASH類型/大小/速度,片選,中斷,GPIO的定義,複位邏輯和拓撲圖,時鐘/晶振選擇/拓撲,RTC的使用,內存映射(Memory map)關係, I2C器件選擇/拓撲,介面器件/線序定義,LED的大小/顏色/驅動,散熱片,風扇,JTAG,電源拓撲/時序/電路等等。

對於DVT來說,要求很簡單也很複雜:板卡上有什麼介面,晶元,主要器件,電路,就要測試什麼,尤其在板卡正常工作的情況下的電源/電壓/紋波/時序,業務介面的眼圖/模板,內部數據匯流排的信號完整性和時序(如MII, RGMII, XAUI, PCIe,PCM bus, Telecom Bus, SERDES, UART等等),CPU子系統(如時鐘,複位,SDRAM/DDR,FLASH介面)。

好的硬體工程師無論是做的文檔還是報道都是令人一目了然,這個硬體系統需要用什麼方案和電路,最後驗證測試的結果如何。內容詳實,不遺漏各種介面/電路;簡單名了,不說廢話;圖文並茂,需要的時候一個時序圖,一個示波器抓圖就很能說明問題了。

4. 儀錶/軟體的使用能力:

儀錶包括電烙鐵,萬用表,示波器,邏輯分析儀,誤碼儀,傳輸分析儀,乙太網測試儀Smartbits/IXIA,熱量計,衰減器,光功率計,射頻信號強度計等等;軟體包括Office(Outlook,Word, Excel, PowerPoint, Project, Visio),PDF,常用原理圖軟體Pads或者OrCAD,常用PCB軟體Pads或者Allegro,Allegro Viewer,電路模擬軟體PSPICE,信號模擬軟體HyperLynx等等。

無論儀錶還是軟體,在政治經濟學裡說都是生產工具,都是促進生產力提高的,作為硬體工程師來說,這些儀錶和軟體就是手中的木。倉炮,硬體工程師很大一部分能力的體現都在與儀錶和軟體的使用上,尤其對於原理圖軟體和示波器的使用,更是十分重要,原理圖軟體的使用是硬體設計的具體實現,通過一個個器件的擺放,一個個NET的連接,構成了是十分複雜的硬體邏輯軟體,是整個硬體設計的核心工作,任何一個原理圖上的失誤和錯誤造成的損失都是巨大的,真是「如履薄冰,戰戰兢兢」。

另外,原理圖軟體的使用還體現在原理圖的美觀上,好的設計,簡單明了,注釋明確,無論是誰,順著思路就能很快搞清楚設計意圖,需要特別注意之處,不好的設計,東一個器件,西一個器件,沒有邏輯,命名怪異,難以理解,日後維護起來相當麻煩;示波器在所有測試儀錶之中,對於硬體工程師是最重要的,無論原理圖還是PCB都是設計工作,但是任何設計都需要仔細的驗證測試,尤其在信號方面,都需要大量的示波器工作,不會正確的使用示波器根本談不上正確的驗證,接地有沒有接好,測試點的選擇,觸發的選擇,延時的選擇,幅度、時間的選擇,都決定著測試的結果。如果錯誤的使用示波器必然帶來錯誤的測試結果,這種情況下,有可能本來是錯誤的設計被誤認為是正確的,帶來巨大的隱患;本來是正確的設計被誤認為是錯誤的,帶來大量的時間精力浪費。

5. 電路設計的能力:

隨著晶元集成度的提高,硬體設計似乎變簡單了。首先是邏輯連接,其次考慮信號完整性需要的串列電阻選擇和並行電容選擇,電源濾波,退耦。不過對於好的硬體工程師來說,簡單的邏輯連接(這個晶元的同樣匯流排的輸出接另一個晶元的輸入,等等),只是硬體設計的最基本技能,電路是晶元功能,通信協議和各種軟體的載體,沒有對電路的深入理解,根本談不上對硬體設計的深入理解,尤其對於晶元後面列的電氣性能參數或者離散器件各種參數的理解,胡亂亂接,可能在3.3V的匯流排上可以工作,但是現在工作電壓已經降到1V了,什麼概念,信號線上的雜訊都已經大到可以使採樣出現誤判了,隨著信號速率的提高和工作電壓的降低,數字信號已經越來越模擬化了,這就需要對於PCB的阻抗,容抗,感抗,離散器件(電阻,電容,電感,二極體,三極體,MOSFET,變壓器等),ASIC的介面電氣參數深入了解,這都需要對電路原理,模擬電路甚至電磁場理論深入學習,電路可以說是電磁場理論的子集,沒有電磁場理論的理解,根本談不上對於電容,電感,串擾,電磁輻射的理解。

尤其對於電源電路設計上,現在晶元電壓多樣化,電壓越來越低,電流越來越大,運營商對於通信設備功耗的嚴格要求,散熱要求,對於電源設計的挑戰越來越大。可以說,對於一個硬體設計來說,40%的工作都是在於電源電路的原理圖/PCB設計和後期測試驗證,電源電路設計是硬體工程師電路能力的集中體現,各種被動器件、半導體器件、保護器件、DC/DC轉換典型拓撲,都有很多參數,公式需要考慮到,計算到。

6. 溝通和全局控制的能力:

硬體工程師在一個硬體項目中,一般處於Team leader的作用,要對這個硬體項目全權負責,需要協調好PCB工程師,結構工程師,信號完整性工程師,電磁兼容工程師等各種資源,並與產品經理,項目經理,軟體工程師,生產工程師,採購工程師緊密配合,確保各個環節按部就班,需要對整個項目計划了然於胸,各個子任務的發布時間,對於可能出現的技術難題和風險的估計,控制。

對於外部來說,硬體工程師還要與晶元的分銷商,FAE處理好關係,爭取獲得更大的技術支持和幫助;與EMC實驗室,外部實驗室打好交道,獲得更靈活的測試時間和更多的整改意見。


做多了硬體很爽的。

其實就是累加case。

比如低功耗如何搞,成本,代價,邊緣風險。這都是一堆堆的事情。

有思路,能解決問題。 that is all。

做多了,什麼都知道了。


別理那些讓你轉CS的,幾乎每個類似題目下都會出現這種人,轉什麼轉,要轉你轉,還不許別人有自己喜歡的東西了?

ok現在正式答題,首先,從事硬體方面要求確實比軟體要高,要求你具有紮實的數字電路、模擬電路、通信原理等專業理論基礎知識 ,熟悉基本的開發/測試儀器,如數字示波器、網路測試儀等,熟悉基本的PCB,對ARM體系產品或單片機系統有所了解,能使用EDA工具進行硬體設計。

要學好基礎課程,尤其是數模電路設計相關,掌握基本儀器使用,培養實踐能力,學習幾種EDA工具,例如protel,altium,cadence等等,fpga也要適當學習,最好能參與與之相關的科創項目,了解項目開發的設計流程,積累實際開發經驗。

加油!


本人是EE大二學生,年級太低不敢說什麼經驗。來回答是想反駁一下那些讓別人轉CS的,從大方向來說軟體需求量大但是可被替代性更大,極少數的程序員所做的事是別人做不了的,但是硬體的積累性決定了一個專註的人一定可以有所成就。從個人來說一個人的興趣比什麼都重要,請那些為了畢業拿錢多的人自己拿著offer偷著樂去吧。


多積累…


個人體會吧,多動手,多嘗試,高能推公式,低能焊飛線。干工程,經驗很重要,有時候書上洋洋洒洒好幾頁,其實就是實際中一個近乎常識的東西,就像104電容一樣。


我是一名電子信息專業的大學生我想了解我們IT這行業國家5至10年的發展趨勢和未來發展需要哪些素質要求


推薦閱讀:

如何理解計算機科學相關里出現的「謂詞」?
我知道c語言,那a語言和b語言呢?
日本大學院畢業後去美國工作是否現實?
軟體工程師的價值來源於產品是否成功還是技術是否過硬?
量子計算實驗需要什麼理論背景?

TAG:硬體 | 計算機科學 | 開源硬體 | IT行業 | 硬體工程師 |