什麼是硬體
狹義來說,一般我們所說的軟體和硬體指的是電子領域的。
軟體代碼也是人編寫的,我們所熟知的語言比如C、C++等都是通過編譯器翻譯成彙編語言,然後彙編語言通過彙編器翻譯成二進位機器語言,機器語言操控門電路完成相應的動作。個人覺得,沒有硬體,軟體就沒有存在的意義,硬體是一切的基礎,這裡可以看出硬體設計是多重要。
但軟體和硬體又有明顯的區分,至少工作內容區別很大。按照行業內描述硬體屬於底層(一般稱為底層硬體),軟體稱為上層(軟體又分為:底層驅動、上層業務以及應用層等)。如果非要舉個例子來說明軟體和硬體, 那最好的例子就是人,硬體指人的軀體,而軟體指人的思維。
其實對於非電子領域的人,很難想明白計算機是怎麼工作的,硬體是怎樣工作的,軟體是怎樣工作的,即使你知道都是0和1,但你沒做過相關工作,你發現不了其中的神奇之處。其實你只要知道,軟體驅動硬體工作,驅動的激勵是什麼?是電訊號!硬體接收到的這個電訊號分為0和1,硬體的響應速度非常快,多快呢?舉個例子,硬體中常用的串口波特率115200bit per second,一秒鐘115200個0或者1,英語字母是8個bit(可在ASCII表看到,這在大學都學過),那就是一秒鐘可列印14400個字母。你眨下眼睛一萬多個字母就出來了。當然實際上並沒有這麼多,這只是個形象的例子。
什麼是硬體設計
一般來說硬體設計指的是電路設計,這樣說是沒問題的,因為你所有的工作都是圍繞電路設計,最終的目標也是產出一個優秀的電路,能夠滿足各種要求,經歷各種考驗。但實際上我們要求的是產品,而不是單板。
網上有一篇文章講的挺好:"硬體設計就是根據產品經理的需求PRS(Product Requirement Specification),在COGS(Cost of Goods Sale)的要求下,利用目前業界成熟的晶片方案或者技術,在規定時間內完成硬體產品,而且要符合以下要求:
可以看到,一個成功的硬體設計,主要功能的實現只是所有環節中的一小部分。剛開始工作的時候,覺得板子電路設計完就完成了50%工作,PCB回板主要功能都能實現了,那就完成了80%的工作。實際上不是的,PCB回板主要功能都實現了,連30%工作都沒有。所以不管是時間上,還是階段上,產品的硬體設計時一個漫長過程。
而且你在一個公司做產品硬體設計,一般情況下都是參考成熟的方案,主晶片CPU主要功能的實現最終還是依靠晶片廠商提供的套片方案,一般來說為了降低風險,主要是參考套片方案的參考設計完成,晶片廠商也會提供包括器件封裝,參考設計,仿真模型,PCB參考等等全部資料,在晶片功能越來越複雜的今天,一個片子動不動就幾百上千個PIN,對於一個新項目來說,是沒有時間一頁頁去吃透每個PIN,每個輸入輸出的具體功能,電氣參數的,尤其是對於高速設計,比如DDR3接口,XAUI接口等等。一般來說晶片廠商提供的參考設計就是他們經過開發,驗證,測試的最佳方案了,很多情況就是你必須按照參考設計來做,否則硬體可能就有問題,一般來說就是信號完整性問題或者EMC問題。"
那有的人就說了,硬體電路設計談不上設計,都是copy成熟電路。晶片廠商提供越來越周到的服務,再加上公司沉澱的技術積累,硬體設計工程師可以完全不動腦子進行電路設計。看起來硬體工程師HWE(Hardware Engineer)的價值越來越低了,畢竟一個產品的核心功能或者技術一般都在IC或者FPGA裡面了,HWE一般沒有能力進行核心邏輯設計IC design。那如果按照這個邏輯軟體設計也談不上設計,都是copy成熟代碼。試問有幾個軟體開發人員不移植別人的代碼?再深入點,有幾個軟體工程師能隨意更改uboot、kernel,不百度C語言語法,不移植業務程序,不去問晶片廠商的技術支持?即使都是成熟的東西,實際上工作過程中我並沒有發現哪個項目做得很快,同樣一套電路和代碼,成熟產品沒問題,新產品為什麼就有問題??最後還是是硬體設計去解決。
對於這上述問題,我也曾經困惑過,總是感覺硬體設計沒有什麼好搞的了,不就是抄抄參考設計,就跟組裝一臺電腦一樣組裝一個單板嘛。當然隨著項目經驗的增多,尤其從事現在硬體系統級設計的角色,感覺原來自己考慮更多是從一名原理圖設計工程師的角度考慮問題,看問題總是很片面。就像開始說的,一個成功的硬體設計,功能Function只是一小部分,至於其他的因素和能力,一個HWE的能力取決於能考慮因素越多,越深入,就越是一個優秀的HWE工程師。
所以HWE是吃經驗的,對公司來說培養一個HWE成本很高,硬體不會像軟體一樣代碼錯了修改一下幾分鐘就可以搞定,硬體設計錯了,那有可能全部都要重來,整個項目周期可能就要延遲3周甚至一個月以上。比如最近遇到的SENSOR出圖像,效果不好,亮壞點比較多,硬體電路這邊沒法跳線,這和布局布線有關,只有改板。
有個觀點需要說明一下,啥都不懂也可以做出事情,但對個人來說會有發展天花板。硬體方面就像參考電路一樣,你不知道電路怎麼工作的也能把他用起來,軟體方面就像uboot和kernel一樣你看不懂也能用起來,但一旦你懂,那就不一樣了。就像一談到硬體設計,大家都認為是電路設計,好簡單,沒什麼難度,但實際上不是的,越到底層越難,責任越大,部門交流越多。懂得越多,學的越容易,就能夠走的越遠。
什麼是硬體電路設計
硬體電路設計就是設計電路的,能夠熟練使用cadence等EDA軟體繪製電路與查看PCB。硬體設計中的電路設計是HWE最重要的職責。電路設計考驗的是HWE的設計基本功,即對一些硬體器件的理解以及靈活應用,比如:
CPU
電阻,電容,電感,
二極體,三極體,
保護器件,接口器件,
邏輯晶片,邏輯功能,
小晶片
電源
上述討論的硬體設計的相關事項,都應該在設計時候考慮,目前大公司的各種流程保證了設計時各部門的聯動,還是很好的。
每個公司都會有自己的硬體電路設計規範,這個需要自己好好去看一下,並用在實踐中。硬體電路設計主要針對電路設計,裡面涉及的東西比較多,對電路模塊的設計後面會有單獨的章節討論。硬體電路設計需要足夠的經驗與理論知識。
硬體設計開發流程
硬體部門開發流程指定後,需要硬體部門人員嚴格按照開發流程完成開發工作。硬體部開發流程主要分為如下幾個步驟。
對即將進行的項目,需要進行市場調研。
市場調研完成後後,首先需要進行立項工作。
項目立項後,需要進行硬體總體設計。
總體設計完成後,需對核心器件進行實驗並且開始進行分模塊設計方案。
核心器件的實驗及分模塊的詳細設計完成後,進行電路、程序及外殼設計。電路、程序及外殼設計按照項目設。
每個分塊部分調試完成後,即可進行系統聯調。
系統聯調完成後,項目即可進行內部審核、項目驗收。
什麼是硬體工程師
工作職責
硬體工程師負責整個產品的硬體設計。
一個硬體產品的研發流程,如下圖所示:
公司內的所有崗位都同等重要的。雖然各團隊的重要性一致的,但研發團隊在產品開發中的位置應該更加核心。研發人員可以轉去做市場、測試、供應鏈或者質量管理等,但市場等崗位的人卻很難轉做研發。一來研發門檻高,二來研發工作接觸面廣。而在整個研發團隊中,硬體工程師做主導作用。
一般情況下我們所說的研發不僅僅局限於軟體硬體,而是整個項目組,這裡包括基本上所有部門的產品負責人。
而硬體工程師在研發團隊中是重要的一員,硬體產品的研發團隊可以如下圖所示:
當然上圖中所展示的並不完全,比如熱設計也是非常重要的一員。但需要說明的是,在整個項目研發團隊中,有兩個人和所有人打交道,一個就是項目經理,另一個就是硬體工程師。硬體工程師需要和各種研發人員打交道 、協調工作,這也要求硬體工程師具有豐富的知識面和強大的協調能力。
硬體工程師的本職工作,如下圖所示:
硬體工程師可以大致分為如下四個階段:
在別人的指導下完成階段三、四的部分,這個是應屆畢業生入職三個月基本可以達到。
獨立完成階段三、四的工作,一般工作1到2年即可。
主導完成階段三、四的工作,參與完成階段二總體設計的工作。
主導完成階段一、二的工作。
作為一個硬體工程師,負責整個產品的研發過程。所以必須對每個時間段進行精確把握。項目都會有項目周期,雖然項目經理在把控時間,但具體的操作還是硬體工程師來搞。
工作能力
硬體工程師的目標是產品零缺陷。
在這個過程中,需要設計電路、解BUG、部門溝通交流,各方面能力都需要提高。
關於硬體工程師基本素質與技術,在這裡給出華為硬體工程師手冊中的定位,如下圖所示。
自我修養
最後說下硬體工程師等自我修養。
溝通能力 要有邏輯,想法要全面點,這樣才能與其他部門人員好好溝通,說不清會導致吵架!!
性格溫和 因為你會和所有部門交流,不要拉著臉,也不要命令式的,性格偏激會導致吵架!!
謙虛謹慎 別人的意見即使不採納也要傾聽,然後說出自己的見解與原因,一意孤行會導致吵架!!
認真仔細 設計電路要認真仔細,解BUG要認真仔細,因為一旦出問題這個責任只有自己背!!
要有耐心 不論是溝通還是解BUG還是檢查電路,一定要有耐心!
不會就問 不會的東西就問,因為產品開發時間比較短,不可能給你大把時間去研究!!
有責任心 對電路負責,對產品負責,對BUG負責!!
分清主次 出了問題要先想怎樣去解決問題,而不是先去追究誰的責任!!
樂善好學 善於幫助別人,善於學習,必須有紮實的經驗知識與理論知識!!!
其實總結出來,上述是作為一個硬體工程師必須的性格,可以說是缺一不可。性格偏激的人不適合做硬體研發,甚至可以說不適合做所有研發。所以一般情況下硬體工程師做產品經理的人很多,因為這個職位本身要求就很高,良好的性格與經驗理論知識會讓你一直進步的。