硬件工程师 职业规划
在项目上硬件工程师担当着一个中流砥柱的角色,下面我浅谈一下自己这几年来的一些个人经验及认识:
1.软件上需要配合嵌入式应用工程师以及驱动工程师
2.无线电硬件上配合射频工程师
3.PCB需要配合结构工程师
4.生产上需要协调供应商的物料、周期、备货和供应链
5.测试上配合EMI等检测
如下图(图片侵删)
一、硬件工程师基本分四个时期:
入门硬件工程师 在别人的指导下完成简单任务
普通硬件工程师 能完成基本任务
资深硬件工程师 主导项目并完成较难项目
专家硬件工程师 主导项目并且在相关行业有所突破
二、硬件工程师需要的知识 :
模拟电子技术、数字电子、C语言、嵌入式、电磁场、单片机、微机原理、电子线路设计、数据结构、高数等。
大家在大学的时候不管学没学好,其实毕业都应该捡起来慢慢的充实学习,举例来说:
1.当你做DC-DC 开关电源、小信号放大 ADC采集 的时候你会用到:
模拟电子技术 电子线路设计
2.当你做时序信号采集、判断逻辑电路以及开发FPGA、CPLD 的时候你会用到:
数字电子
3.当你做单片机、寄存器配置、linux驱动 的时候你会用到:
C语言 单片机 微机原理
4.当你做ARM、linux 的时候你会用到:
嵌入式 微机原理
5.当你做蓝牙、WIFI 5G 的时候你会用到:
电磁场
6.当你做 音频、视频算法 的时候你会用到:
高数 数据结构 等等
有很多知识,在大学的时候你缺乏实践所以不理解。如模拟电路的暂态到底在什么时候会用到?又如当你学高速信号时候会发现电磁波、高频电子电路开始有了它的意义;做音频、视频的时候,发现傅里叶变换是多么的重要。
三、硬件工程师的性格喜好
首先最重要的是,兴趣! 然后不能急于求成,要脚踏实地一点点去测试、去思考。硬件不同于软件,它实实在在的摆在那里,你不去思考永远不知道它的功能原理。硬件更多的是需要推理、思考、验证,不能想当然。
总之,愿意动手、愿意思考,有一定逻辑思维的人更适合做这份工作。
四、硬件工程师所需要的基本技能
大部分从学校出来的应届毕业生基本都是从51、STM32入手,麻雀虽小五脏俱全, 你想学的东西其实大部分在51、STM32中都可以学到。下面介绍硬件工程师必须掌握的工具。
1.原理图工具 :AD Candence
Altium designer对于新手入门是非常友好的,但是当你工作几年之后会发现Candence才是你的挚爱。它不易犯错,甚至有些死板,但不会发生让你后悔的事情。此外,Pads在南方尤其是东莞、深圳使用的更多一些。
所以,建议ad、cadence都会,且ad可以转cadence,没事可以多看看老吴博客,你们懂的。
2.PCB工具:AD Allegro
同样的还是一样的感觉。
3.仿真工具:
关于原理的仿真你可以使用 multisim 等;板级仿真可以使用hyper、cadence家的sigrity。这些都是很不错的仿真软件,当然hyper更容易上手。
此外,hfss ads这种射频仿真软件你也可以接触,包括驱动、寄存器配置、结构UG proe creo 等。
就个人而言,我对硬件的一切都非常感兴趣,当然不仅如此,硬件甚至已经走进了我的生活,就比如有时在做音频的时候我还会首试着作一歌( 当然我是学音乐的在之前)。
五、硬件工程师遇到的困惑
在刚刚开始的时候我是做单片机的,对于整体化设计很感兴趣。所以,大部分的项目中软件、硬件,甚至结构都是我自己操刀。
其实核心不是实际的细节,硬件电路板的细节你可以找各种专业的专门的人去完成,而你更应该专注的是整体。
最开始你会因为电平匹配的问题、信号频率问题大伤脑筋,但是当你做过五个、十个项目以后,只要你善于总结你就会发现最重要的其实是整体设计。
硬件需要不断地充实自己,不断学习、完善,因为硬件工程师需要的只是纷繁复杂。
六、实例讲解
1.技术上学习
以做蓝牙为例: 你需要知道天线的设计,你需要知道馈线的设计,最后到阻抗匹配、矢量分析仪的使用。所有的每一个分支、天线设计、射频电子线路、仪器仪表的使用都是一个可以学习很久的领域,甚至一辈子都学不完。
蓝牙又分为硬件部分,软件部分。而软件部分又分为协议栈、os部分以及驱动等,这些都是我们需要不断地扩展充实的。作为一个硬件工程师,你需要不断的扩展自己的视野,了解整个完整的体系,沟通各个方面的工程师以让自己更清楚产品的整体。
2.市场上了解
cost down永远是公司一直希望的!我们需要降低成本,每一个器件的选型、种类、成本、周期、渠道,我们都要熟悉。了解市场的动态,如别人家用的是什么,为什么。如何突破自己的产品,提高性价比,甚至像当年的苹果一样出众。
3.项目管理、质量管理
硬件工程师永远面临的是:产线的问题要找你,物料供应的事情要找你,产品返修要找你,现场维护要找你,这些都是提升的机会。那么问题来了,要用科学的方法做事情,多学习质量管理,可靠性设计的知识。
在生产的时候需要注意许多焊接问题,如炉温导致的虚焊,x-ray如何查看bga的焊接状况等,这些都是我们需要知道的。
4.知识的积累
技术部分也分行业,如视频、音频上的编解码、传输格式(bt1120 h323)等。
其次就是纯知识积累,如信号完整性、电源完整性、PCB设计、装配生产安装经验及电源AC DC的设计等等。
七、整体分析
一个产品的设计,首先是要从市场的角度考虑:受众群体、解决痛点、广告宣传方式、解决的痛点,我们用料稳定性要更强,着重考虑逻辑和结构材料。在广告宣传上,我们会更考虑突出的外表特点,于是我们对于产品的基本思路产生了。
1 规划设计、产品功能以及完善细节
我们需要根据产品经理的想法互相沟通,不断地产出新的创新型的idea,让自己的产品功能性更强,细节性更好,这样我们就对于大框的产品有了一个基础的认识。
2 功能实现
这个时候我们需要找到原厂、供应商去了解芯片,选择合适的芯片。
芯片参数:功耗、电源质量(电流 纹波 冲击 时序 浪涌 电流保护)
芯片采购:货期、阶梯价格、合同、NDA、服务质量
基本思路我们有了就做到了心中有数,就可以开始做整体的框图。
最后尤为重要的一点,一定要把思路画出框图进行评审。
3 原理图
这个阶段是时间花费最多的,如果是新做一个产品,大部分时间都需要阅读文档,熟悉芯片。
在原理图设计的时候我们经常遇到的问题:Input Capacitance 上拉、下拉功能,兼容性、功耗、电源供电、阻抗匹配、抖动、拉高的时间、IO电平、散热、控制逻辑统一芯片、调试口、功能的扩展性、各个时钟(重点关注主时钟和位时钟) 最大最小电平等。
4 PCB 设计
这是一个经验积累的工作,在一个有经验的工程师的带领下你会迅速学会很多绘制PCB的技巧。但是你想知道为什么,对不起,要多看看你的理论知识扎不扎实了,理论越扎实触类旁通的能力的就越好。
PCB设计时候经常遇到的问题:线宽、铺地、铜厚、封装等问题,还有装配失败、距离板边过近、阻抗控制、差分对组间等长(及组内等长)、检测不完整、出光绘等。
5 驱动
这个首先是对linux 框架的理解,或者相关的os ucos freertos 。甚至裸跑对于单片机本身总线 arm架构的理解,写出相应的符合架构的框架(待补充)
寄存器配置,这个考验你对于行业本身的技能知识。如音频,你要知道 aac sbc ldac 编码都是什么,编码解码速度pga是什么,增益控制 agc 、回声消除 、啸叫抑制等等。这会出现很多相关的知识,也是我们常见的行业积累的最重要的地方。
6 应用层 业务层逻辑
这个地方我做的基本比较简单,这地方总会有写xswl的问题出现,甚至整个人崩溃掉。
需要注意的主要有变量类型 溢出 逻辑if else 冗余等,以兼容不同硬件性能的提升。
7 测试
这部分会遇到仪器的使用,还有一些认证 、跌落测试、浪涌、静电、工频干扰等等。
八、总结
关于硬件工程师在不同类型公司中的思考:
很多硬件工程师会觉得自己的工作不是核心,没有像软件工程师一样备受重视,其实我们这个思考源于在硬件行业的不同趋势以及方向。我们首先看通信行业,类似华为的通信设计核心是通信协议,而完成通信协议的芯片,对于硬件工程师来说需要解决的有如下几个部分:
1.了解芯片内部 FPGA CPLD 触发器类别,以及核心的编解码系统的设计完善
2.板级PCB的高速电路设计,射频电子线路倍频等信号的设计
3.系统层为os提供的更多接口,方便应用层使用
只有这样一步步走下去,在这个方面不算深入的我们才会渐渐的变为专家,从而从事深层次的相关领域,实际上一个射频就够你吃一辈子的了。
后续我会不断的进行补充