初學者|電子硬體知識體系
04-25
最近有不少軟體領域的牛人進軍硬體行業,但不知從何處入手。相信每個人面對一個龐大的知識體系時都一樣迷茫。最佳的應對策略就是找一個最貼近自己需求的切入點,然後向四面八方鋪開去逐漸認識整個知識網路。這篇文章就是為了讓你在這個知識網裡面找到自己現在的位置,然後有目的有方向地選擇下一步。簡單來講硬體的體系像軟體一樣也分層:最底層是包含電學現象在內的微觀物理現象,幾乎是純粹的抽象理論集合,能看得見摸得著的實物不多。比如半導體摻雜特定雜質後,其原子核俘獲自由電子的能力增強或減弱。由此帶來的PN結的應用。再比如帶電粒子在磁場中的受力情況(洛侖茲力),由此延伸出陰極射線管、霍爾效應等應用。還有通電導線以及螺線管產生的磁場形狀,這個應用就多了去了。再比如波動的發射源與接收點之間距離變化造成接收到的頻率變化(多普勒效應),由此延伸出測速雷達之類的應用……基本上從初中物理到大學物理,所有與電相關的知識都涵蓋在裡面。物理與數學作為基礎學科與這些基本物理現象一脈相承,是整個硬體行業乃至軟體行業的基石。現在很多硬體工程師並不熟悉這些基礎學科,這在解決問題時會給他們帶來很大的局限,一是無法迅速找到最合適的方案,二是無法分析手中的方案來龍去脈是什麼,怎樣優化現有方案。
向上一層是分立電子元件。電阻、電容、電感、二極體這些稱為無源器件,三極體、場效應管這些是有源器件,這些器件的特性反應在輸出信號隨著輸入信號變化的特性上,而要這些特性體現出來,必須在輸入信號之外另行提供電源,因此叫做有源器件。分立電子元件是板級硬體工程師選材的基本單位。
這一層分為理論和實踐兩個方面,實踐不難,找幾個典型的電子元件摸一摸,拿萬用表測一下。以後看見了能認識就行。理論這方面,合格的模電工程師必須熟練掌握這些元件的自身特性和典型應用。數字硬體工程師往往不太注重這些基本知識,有人不會畫N-MOSFET和P-MOSFET的電路符號,有人不懂計算晶體三極體的靜態工作點。還有人RC電路的零狀態響應理解不夠透徹,不懂怎樣計算數字集成電路的複位阻容網路時間常數。這些多少都會構成硬傷。學習這一層理論最好參考通用的大學《電工學》教材,高等教育出版社上下冊。如果對上面講過的最底層的物理學有足夠深入的了解,會大大增進你對分立電子元件的認識。比如對電阻率、電磁感應的認識能夠幫助你理解為何簡簡單單的一根導線都要衍伸出雜散電容電感這麼多亂七八糟的問題,到底什麼時候要當作等勢體去看待,什麼時候要考慮它的位置和形狀。高速電路工程師和射頻工程師經常要面對這些問題。你的目標是哪個群體?再上一層是集成電子元件。也就是包含集成電路(IC)和各式集成感測器在內的電子元件。上述一層的分立元件用導線和電路板連接起來會帶來體積龐大、特性離散、溫度分布不均、導線距離過長造成信號反射等諸多問題。所以傑克·基爾比和和羅伯特·諾伊思才想到把它們微縮到很小的半導體基材上。幾乎所有集成電路都是有源器件。集成電子元件有兩個方向,上游的是晶元級的微電子產業,也就是設計、生產電子元器件的。他們側重前面講過的基礎學科。板級硬體工程師選修的課程,對他們而言是必修。比如光繪之類與流片工藝相關的所有知識。細分也有很多不同的職業,這裡不贅述。下游的就是板級硬體工程師,他們是拿著上游產業生產出來的成品去應用的。我讀初中的時候翻書看了幾個邏輯門元件說明,就瞎尋思有沒有一本書上面囊括了世界上所有型號的集成電路,那時候我以為一個合格的工程師必須在腦子裡記住所有集成電路的使用說明才能幹活。而實際上每天都有新的集成電路被研製出來,型號多得那些專門賣元件的網站都很難更新過來。所以總有你不認識的陌生型號,但這不代表你不能做一名合格的工程師。如果你熟練掌握了基本分立元器件的原理和常見電路結構,那麼新的集成電路拿在手裡看,最基本的結構也無非是這些東西,只是重新組合了一遍而已。集成電子元件這一層同樣分為理論與實踐兩個方面,這一層的實踐,初期就是拿幾個常見的晶元認識一下封裝。常見的封裝類別會認就OK了。接下來就要去看理論,最後回過頭來實踐就是針對你所選具體IC的實戰應用了。
理論方面,上面說的《電工學》那套教材里也涉及了運算放大器、數字邏輯方面的知識。像邏輯運算式的化簡這些知識無論在使用4000系列邏輯集成電路的時候還是在做CPLD/FPGA設計的時候都會體現出它的重要性,寫程序的時候也少不了邏輯運算。掌握這一層知識,重點除了底層的基礎之外就是英語。你和集成電路打交道的時候多數是在看說明文檔。你需要的東西到底要滿足什麼條件,你選到的東西到底具備什麼條件,怎麼使用,都靠這些。英語對於軟體工程師而言應該不是大問題,畢竟搞軟體的時候多數人都見過RTFM這個詞了,老外對沒頭沒腦的提問者常說的一句話:Read the fucking manual!特別指出,集成電路這一層包含了可編程元器件,包括微控制器、CPLD/FPGA、DSP、獨立的處理器(CPU、GPU等)、存儲器以及定製的可編程混合信號電路等等。對於這些可編程器件,就有了更高的一層,也就是硬體抽象層(HAL)。這一層屬於軟體,模擬工程師就不用碰了。但是數字工程師,尤其是嵌入式操作系統工程師操作底層硬體的時候必須和它打交道。寫驅動的工程師有時候不得不翻閱硬體手冊去了解自己所用的硬體模塊具備什麼物理特性,接下來才能繼續編寫自己的代碼。這一層往上就是軟體工程師的地盤了,那個領域枝繁葉茂,我也沒法接著講了。多數希望學習硬體的人都是帶著具體需求來的。可能手中有個項目需要做一個平台,或者是對某個特定的器件非常感興趣。這樣的話最好的切入點就是你手裡這個具體的東西。看一看它屬於上述的哪一層,然後向外輻射開來,了解它的來龍去脈。從相關的實物開始建立對整個行業的感性認識。對實物熟悉了再去學習背後的理論。不同的理論最終在大腦里相互交匯起來組成一套有條理的理論體系。很多硬體工程師從小學起就開始學習了,一路動手學過來的。學好硬體,最原始的動力來自於對自然科學的好奇心,還要享受動手的樂趣。這些都不是一夜之間就能掌握的,學個差不多少說要兩三年,而且硬體領域也有不同分支,相互之間有時候甚至可以說隔行如隔山。精力有限,你能掌握多少取決於你有毅力走多遠。
推薦閱讀: