硬件的体系


  简单来讲硬件的体系像软件一样也分层。

  最底层是包含电学现象在内的微观物理现象,几乎是纯粹的抽象理论集合,能看得见摸得着的实物不多。比如半导体掺杂特定杂质后,其原子核俘获自由电子的能力增强或减弱。由此带来的PN结的应用。再比如带电粒子在磁场中的受力情况(洛仑兹力),由此延伸出阴极射线管、霍尔效应等应用。还有通电导线以及螺线管产生的磁场形状,这个应用就多了去了。再比如波动的发射源与接收点之间距离变化造成接收到的频率变化(多普勒效应),由此延伸出测速雷达之类的应用……基本上从初中物理到大学物理,所有与电相关的知识都涵盖在里面。物理与数学作为基础学科与这些基本物理现象一脉相承,是整个硬件行业乃至软件行业的基石。现在很多硬件工程师并不熟悉这些基础学科,这在解决问题时会给他们带来很大的局限,一是无法迅速找到最合适的方案,二是无法分析手中的方案来龙去脉是什么,怎样优化现有方案。

  向上一层是分立电子元件。电阻、电容、电感、二极管这些称为无源器件,三极管、场效应管这些是有源器件,这些器件的特性反应在输出信号随着输入信号变化的特性上,而要这些特性体现出来,必须在输入信号之外另行提供电源,因此叫做有源器件。分立电子元件是板级硬件工程师选材的基本单位。

  这一层分为理论和实践两个方面,实践不难,找几个典型的电子元件摸一摸,拿万用表测一下。以后看见了能认识就行。理论这方面,合格的模电工程师必须熟练掌握这些元件的自身特性和典型应用。数字硬件工程师往往不太注重这些基本知识,有人不会画N-MOSFET和P-MOSFET的电路符号,有人不懂计算晶体三极管的静态工作点。还有人RC电路的零状态响应理解不够透彻,不懂怎样计算数字集成电路的复位阻容网络时间常数。这些多少都会构成硬伤。学习这一层理论最好参考通用的大学《电工学》教材,高等教育出版社上下册。如果对上面讲过的最底层的物理学有足够深入的了解,会大大增进你对分立电子元件的认识。比如对电阻率、电磁感应的认识能够帮助你理解为何简简单单的一根导线都要衍伸出杂散电容电感这么多乱七八糟的问题,到底什么时候要当作等势体去看待,什么时候要考虑它的位置和形状。高速电路工程师和射频工程师经常要面对这些问题。你的目标是哪个群体?

  再上一层是集成电子元件。也就是包含集成电路(IC)和各式集成传感器在内的电子元件。上述一层的分立元件用导线和电路板连接起来会带来体积庞大、特性离散、温度分布不均、导线距离过长造成信号反射等诸多问题。所以杰克·基尔比和和罗伯特·诺伊思才想到把它们微缩到很小的半导体基材上。几乎所有集成电路都是有源器件。集成电子元件有两个方向,上游的是芯片级的微电子产业,也就是设计、生产电子元器件的。他们侧重前面讲过的基础学科。板级硬件工程师选修的课程,对他们而言是必修。比如光绘之类与流片工艺相关的所有知识。细分也有很多不同的职业,这里不赘述。下游的就是板级硬件工程师,他们是拿着上游产业生产出来的成品去应用的。

  我读初中的时候翻书看了几个逻辑门元件说明,就瞎寻思有没有一本书上面囊括了世界上所有型号的集成电路,那时候我以为一个合格的工程师必须在脑子里记住所有集成电路的使用说明才能干活。而实际上每天都有新的集成电路被研制出来,型号多得那些专门卖元件的网站都很难更新过来。所以总有你不认识的陌生型号,但这不代表你不能做一名合格的工程师。如果你熟练掌握了基本分立元器件的原理和常见电路结构,那么新的集成电路拿在手里看,最基本的结构也无非是这些东西,只是重新组合了一遍而已。

  集成电子元件这一层同样分为理论与实践两个方面,这一层的实践,初期就是拿几个常见的芯片认识一下封装。常见的封装类别会认就OK了。接下来就要去看理论,最后回过头来实践就是针对你所选具体IC的实战应用了。

  理论方面,上面说的《电工学》那套教材里也涉及了运算放大器、数字逻辑方面的知识。像逻辑运算式的化简这些知识无论在使用4000系列逻辑集成电路的时候还是在做CPLD/FPGA设计的时候都会体现出它的重要性,写程序的时候也少不了逻辑运算。掌握这一层知识,重点除了底层的基础之外就是英语。你和集成电路打交道的时候多数是在看说明文档。你需要的东西到底要满足什么条件,你选到的东西到底具备什么条件,怎么使用,都靠这些。英语对于软件工程师而言应该不是大问题,毕竟搞软件的时候多数人都见过RTFM这个词了,老外对没头没脑的提问者常说的一句话:Read the fucking manual!

  特别指出,集成电路这一层包含了可编程元器件,包括微控制器、CPLD/FPGA、DSP、独立的处理器(CPU、GPU等)、存储器以及定制的可编程混合信号电路等等。对于这些可编程器件,就有了更高的一层,也就是硬件抽象层(HAL)。这一层属于软件,模拟工程师就不用碰了。但是数字工程师,尤其是嵌入式操作系统工程师操作底层硬件的时候必须和它打交道。写驱动的工程师有时候不得不翻阅硬件手册去了解自己所用的硬件模块具备什么物理特性,接下来才能继续编写自己的代码。这一层往上就是软件工程师的地盘了,那个领域枝繁叶茂,我也没法接着讲了。

  多数希望学习硬件的人都是带着具体需求来的。可能手中有个项目需要做一个平台,或者是对某个特定的器件非常感兴趣。这样的话最好的切入点就是你手里这个具体的东西。看一看它属于上述的哪一层,然后向外辐射开来,了解它的来龙去脉。从相关的实物开始建立对整个行业的感性认识。对实物熟悉了再去学习背后的理论。不同的理论最终在大脑里相互交汇起来组成一套有条理的理论体系。

  很多硬件工程师从小学起就开始学习了,一路动手学过来的。学好硬件,最原始的动力来自于对自然科学的好奇心,还要享受动手的乐趣。这些都不是一夜之间就能掌握的,学个差不多少说要两三年,而且硬件领域也有不同分支,相互之间有时候甚至可以说隔行如隔山。精力有限,你能掌握多少取决于你有毅力走多远。

你可能感兴趣的:(积累)