1.什么是硬件?
百度百科介紹"硬件(英文名Hardware)是計算機硬件的簡稱(中國大陸及香港用語,臺灣作硬體),是指計算機系統中由電子,機械和光電元件等組成的各種物理裝置的總稱。這些物理裝置按系統結構的要求構成一個有機整體為計算機軟件運行提供物質基礎。"
也就是說硬件是物理層面的,至少是你能看得到摸得著的東西,它是一種物質載體,物質基礎。廣義來說人類都是生活在物質基礎之上,你可以把所有你能看到的東西都統稱為硬件。當然狹義來說,一般我們所說的軟件和硬件指的是電子領域的。
軟件代碼也是人編寫的,我們所熟知的語言比如C、C++等都是通過編譯器翻譯成匯編語言,然后匯編語言通過匯編器翻譯成二進制機器語言,機器語言操控門電路完成相應的動作。個人覺得,沒有硬件,軟件就沒有存在的意義,硬件是一切的基礎,這里可以看出硬件設計是多重要。
但軟件和硬件又有明顯的區分,至少工作內容區別很大。按照行業內描述硬件屬于底層(一般稱為底層硬件),軟件稱為上層(軟件又分為:底層驅動、上層業務以及應用層等)。如果非要舉個例子來說明軟件和硬件, 那最好的例子就是人,硬件指人的軀體,而軟件指人的思維。
其實對于非電子領域的人,很難想明白計算機是怎么工作的,硬件是怎樣工作的,軟件是怎樣工作的,即使你知道都是0和1,但你沒做過相關工作,你發現不了其中的神奇之處。其實你只要知道,軟件驅動硬件工作,驅動的激勵是什么?是電訊號!硬件接收到的這個電訊號分為0和1,硬件的響應速度非常快,多快呢?舉個例子,硬件中常用的串口波特率115200bit per second,一秒鐘115200個0或者1,英語字母是8個bit(可在ASCII表看到,這在大學都學過),那就是一秒鐘可打印14400個字母。你眨下眼睛一萬多個字母就出來了。當然實際上并沒有這么多,這只是個形象的例子。
但在電路設計上100kHz屬于比較慢的速率了。再比如顯示器一幅圖的刷新頻率在一秒鐘24個以上,我們人眼就看不出來。24幀的數據是非常大的,比如1080p30格式輸出,總的數據量是一秒鐘1920*1080*12*30= 746496000個0或者1,也就是7億個0或者1。
2.什么是硬件設計?
一般來說硬件設計指的是電路設計,這樣說是沒問題的,因為你所有的工作都是圍繞電路設計,最終的目標也是產出一個優秀的電路,能夠滿足各種要求,經歷各種考驗。但實際上我們要求的是產品,而不是單板。
網上有一篇文章講的挺好:"硬件設計就是根據產品經理的需求PRS(Product Requirement Specification),在COGS(Cost of Goods Sale)的要求下,利用目前業界成熟的芯片方案或者技術,在規定時間內完成符合:
PRS功能(Function)
電源設計(power Supply)
功耗(power Consumption)
散熱(Thermal/Cooling)
噪音(Noise)
信號完整性(Signal Integrity),
電磁輻射(EMC/EMI)
安規(Safet)
器件采購(Component Sourcing)
可靠性(Reliability)
可測試性(DFT: design for test)
可生產性(DFM:design for manufacture)
等上述要求的硬件產品(注意:是產品不是開發板)。可以看到,一個成功的硬件設計,主要功能的實現只是所有環節中的一小部分。剛開始工作的時候,覺得板子電路設計完就完成了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一樣你看不懂也能用起來,但一旦你懂,那就不一樣了。就像一談到硬件設計,大家都認為是電路設計,好簡單,沒什么難度,但實際上不是的,越到底層越難,責任越大,部門交流越多。懂得越多,學的越容易,就能夠走的越遠。
3.什么是硬件電路設計?
顧名思義,硬件電路設計就是設計電路的,能夠熟練使用cadence繪制電路與查看PCB。硬件設計中的電路設計是HWE最重要的職責。電路設計考驗的是HWE的設計基本功,即對一些硬件器件的理解以及靈活應用,比如:
CPU
二極管,三極管,
保護器件,接口器件,
邏輯芯片,邏輯功能,
小芯片
電源
因為本人是EMC專業畢業,所以對設計時考慮的東西深有感觸,我們上述討論的硬件設計的13條東西都應該在設計時候考慮,目前大公司的各種流程保證了設計時各部門的聯動,還是很好的。
每個公司都會有自己的硬件電路設計規范,這個需要自己好好去看一下,并用在實踐中。硬件電路設計主要針對電路設計,里面涉及的東西比較多,對電路模塊的設計后面會有單獨的章節討論。硬件電路設計需要足夠的經驗與理論知識。
4.硬件設計開發流程
硬件部門開發流程指定后,需要硬件部門人員嚴格按照開發流程完成開發工作。硬件部開發流程主要分為如下幾個步驟
1) 市場調研
對即將進行的項目,需要進行市場調研。市
2) 立項
市場調研完成后后,首先需要進行立項工作。
3) 硬件總體設計
項目立項后,需要進行硬件總體設計。
4) 核心器件的實驗及分模塊的詳細設計
總體設計完成后,需對核心器件進行實驗并且開始進行分模塊設計方案。
5) 電路、程序及外殼設計
核心器件的實驗及分模塊的詳細設計完成后,進行電路、程序及外殼設計。電路、程序及外殼設計按照項目設。
6) 系統聯調
每個分塊部分調試完成后,即可進行系統聯調。
7) 內部審核、項目驗收
系統聯調完成后,項目即可進行內部審核、項目驗收。
5.什么是硬件工程師?
硬件工程師負責整個產品的硬件設計。這里好久之前在知乎上看到一篇專門講解硬件工程師的文章,覺得講的很好,在這里貼出來:https://www.zhihu.com/question/28610994。
5.1.硬件工程師的職責
一個硬件產品的研發流程,如下圖所示:
公司內的所有崗位都同等重要的。雖然各團隊的重要性一致的,但研發團隊在產品開發中的位置應該更加核心。研發人員可以轉去做市場、測試、供應鏈或者質量管理等,但市場等崗位的人卻很難轉做研發。一來研發門檻高,二來研發工作接觸面廣。而在整個研發團隊中,硬件工程師做主導作用。
一般情況下我們所說的研發不僅僅局限于軟件硬件,而是整個項目組,這里包括基本上所有部門的產品負責人。
而硬件工程師在研發團隊中是重要的一員,硬件產品的研發團隊可以如下圖所示:
當然上圖中所展示的并不完全,比如熱設計也是非常重要的一員。但需要說明的是,在整個項目研發團隊中,有兩個人和所有人打交道,一個就是項目經理,另一個就是硬件工程師。硬件工程師需要和各種研發人員打交道 、協調工作,這也要求硬件工程師具有豐富的知識面和強大的協調能力。
硬件工程師的本職工作,如下圖所示:
硬件工程師可以大致分為如下四個階段:
初級硬件工程師
在別人的指導下完成階段三、四的部分,這個是應屆畢業生入職三個月基本可以達到。
普通的硬件工程師
獨立完成階段三、四的工作,一般工作1到2年即可。
資深的硬件工程師
主導完成階段三、四的工作,參與完成階段二總體設計的工作。
專家級硬件工程師
主導完成階段一、二的工作。
5.2.時間點把握
作為一個硬件工程師,負責整個產品的研發過程。所以必須對每個時間段進行精確把握。項目都會有項目周期,雖然項目經理在把控時間,但具體的操作還是硬件工程師來搞。因為本人只是處于階段三,對階段二、一沒什么時間概念,對于正常進度的項目來說:
原理圖和詳細設計方案:5周,包括參考設計以及原理圖評審。
PCB布板布線:4周,包括配合結構、PCB進行電路調整或者器件重新選型。
發板及等待回板:2周,這兩周是最閑的,發板同時必須完成BOM上傳,這個不能忘。多看自己的圖!
回板檢查:1周,將自己的板子跑起來,能燒錄uboot,網口能ping通。檢查有無焊接問題。聯系結構進行機器組裝,查看結構有沒有問題。
驅動調試:5周,配合完成所有底層功能的調試。
媒體版本:2周,這個是驅動調試之后第一個整機跑起來的版本,準備拿給測試進行測試。
信號測試:3周,配合信號測試人員完成信號測試。同時給做業務研發人員準備板子給他們研發。
功能測試:2周,配合功能測試人員完成環境測試,防護靜電浪涌測試,以及其他功能測試,EMC測試等。
解BUG等待:2周,解決上述出現的所有BUG!
改板與發板:2周。
。。。。。。。。。
具體時間會隨著產品的復雜程度而變化,上述只是本人了解的大致時間=,不能一概而論。
5.3.硬件工程師的本質工作
目標:產品零缺陷
過程:設計電路、解BUG、部門溝通交流。
能力:主要集中在解BUG能力。
結果:一個字-------忙!!!!
5.4. 硬件工程師基本素質與技術
這里給出華為硬件工程師手冊中的定位,看起來還是不錯的。
6.硬件工程師需具備什么樣的性格?
溝通能力 要有邏輯,想法要全面點,這樣才能與其他部門人員好好溝通,說不清會導致吵架!!
性格溫和 因為你會和所有部門交流,不要拉著臉,也不要命令式的,性格偏激會導致吵架!!
謙虛謹慎 別人的意見即使不采納也要傾聽,然后說出自己的見解與原因,一意孤行會導致吵架!!
認真仔細 設計電路要認真仔細,解BUG要認真仔細,因為一旦出問題這個責任只有自己背!!
要有耐心 不論是溝通還是解BUG還是檢查電路,一定要有耐心!
不會就問 不會的東西就問,因為產品開發時間比較短,不可能給你大把時間去研究!!
有責任心 對電路負責,對產品負責,對BUG負責!!
分清主次 出了問題要先想怎樣去解決問題,而不是先去追究誰的責任!!
樂善好學 善于幫助別人,善于學習,必須有扎實的經驗知識與理論知識!!!
其實總結出來,上述是作為一個硬件工程師必須的性格,可以說是缺一不可。性格偏激的人不適合做硬件研發,甚至可以說不適合做所有研發。所以一般情況下硬件工程師做產品經理的人很多,因為這個職位本身要求就很高,良好的性格與經驗理論知識會讓你一直進步的。
審核編輯 :李倩
-
電路設計
+關注
關注
6673文章
2451瀏覽量
204166 -
硬件
+關注
關注
11文章
3312瀏覽量
66200 -
匯編語言
+關注
關注
14文章
409瀏覽量
35793
原文標題:什么是硬件工程師
文章出處:【微信號:單片機與嵌入式,微信公眾號:單片機與嵌入式】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論