一个好的硬件工程师实际上就是一个项目经理,你需要从外界交流获取对自己设计的需求,然后汇总,分析成具体的硬件实现。还要跟众多的芯片和方案供应商联系,从中挑选出合适的方案,当原理图完成后,你需要组织同事来进行配合评审和检查,还要和CAD工程师一起工作来完成PCB的设计。与此同时,要准备好BOM清单,开始采购和准备物料,联系加工厂家完成板的贴装。”
基本知识
1) 基本设计规范
2) CPU基本知识、架构、性能及选型指导
3) MOTOROLA公司的PowerPC系列基本知识、性能详解及选型指导
4) 网络处理器的基本知识、架构、性能及选型
5) 常用总线的基本知识、性能详解
6) 各种存储器的详细性能介绍、设计要点及选型
7) Datacom、Telecom领域常用物理层接口芯片基本知识,性能、设计要点及选型
8) 常用器件选型要点与精华
9) FPGA、CPLD、EPLD的详细性能介绍、设计要点及选型指导
10) VHDL和Verilog HDL
11) 网络基础
12) 国内大型通信设备公司硬件研究开发流程
还需要熟练掌握并使用业界最新、最流行的专业设计工具:
1) ViewDraw,PowerPCB,Cam350
2) OrCad, Allegro;AD;PADS
3)各种电路仿真工具
4) 学习熟练使用VIEWDRAW、ORCAD、POWERPCB、SPECCTRA、ALLEGRO、CAM350、等工具;
5) FPGA设计工具,各个厂家的。
1硬件总体设计
启动一个硬件开发项目,原始的推动力会来自于很多方面,比如市场的需要,基于整个系统架构的需要,应用软件部门的功能实现需要,提高系统某方面能力的需要等等,所以作为一个硬件系统的设计者,要主动的去了解各个方面的需求,并且综合起来,提出最合适的硬件解决方案。
比如A项目的原始推动力来自于公司内部的一个高层软件小组,他们在实际当中发现原有的处理器板IP转发能力不能满足要求,从而对于系统的配置和使用都会造成很大的不便,所以他们提出了对新硬件的需求。根据这个目标,硬件方案中就针对性的选用了两个高性能网络处理器,然后还需要深入的和软件设计者交流,以确定内存大小,内部结构,对外接口和调试接口的数量及类型等等细节,比如软件人员喜欢将控制信令通路和数据通路完全分开来,这样在确定内部数据走向的时候要慎重考虑。
项目开始之初是需要召开很多的讨论会议的,应该尽量邀请所有相关部门来参与,好处有三个,第一可以充分了解大家的需要,以免在系统设计上遗漏重要的功能,第二是可以让各个部门了解这个项目的情况,提早做好时间和人员上协作的准备,第三是从感情方面讲,在设计之初各个部门就参与了进来,这个项目就变成了大家共同的一个心血结晶,会得到大家的呵护和良好合作,对完成工作是很有帮助的。
掌握硬件总体设计所必须具备的硬件设计经验与设计思路:
1) 产品需求分析
2) 开发可行性分析
3) 系统方案调研
4) 总体架构,CPU选型,总线类型
5) 数据通信与电信领域主流CPU:M68k系列,PowerPC860,PowerPC8240,8260体系结构,性能及对比
6) 总体硬件结构设计及应注意的问题
7) 通信接口类型选择
8) 任务分解
9) 最小系统设计
10) PCI总线知识与规范
11) 如何在总体设计阶段避免出现致命性错误
12) 如何合理地进行任务分解以达到事半功倍的效果?
13) 项目案例:中、低端路由器等
2硬件原理图设计技术
目的:通过具体的项目案例,详细进行原理图设计全部经验,设计要点与精髓揭密。
1) 电信与数据通信领域主流CPU的原理设计经验与精华
2) Intel公司PC主板的原理图设计精髓
3) 网络处理器的原理设计经验与精华
4) 总线结构原理设计经验与精华
5) 内存系统原理设计经验与精华
6) 数据通信与电信领域通用物理层接口的原理设计经验与精华
7) 电信与数据通信设备常用的WATCHDOG的原理设计经验与精华
8) 电信与数据通信设备系统带电插拔原理设计经验与精华
9) 晶振与时钟系统原理设计经验与精华
10) PCI总线的原理图设计经验与精华
11) 项目案例:中、低端路由器等
原理图设计中要注意的问题:
原理图设计中要有“拿来主义”,现在的芯片厂家一般都可以提供参考设计的原理图,所以要尽量的借助这些资源,在充分理解参考设计的基础上,做一些自己的发挥。当主要的芯片选定以后,最关键的外围设计包括了电源,时钟和芯片间的互连。
电源是保证硬件系统正常工作的基础,设计中要详细的分析:系统能够提供的电源输入;单板需要产生的电源输出;各个电源需要提供的电流大小;电源电路效率;各个电源能够允许的波动范围;整个电源系统需要的上电顺序等等。比如A项目中的网络处理器需要1.25V作为核心电压,要求精度在+5%- -3%之间,电流需要12A左右,根据这些要求,设计中采用5V的电源输入,利用Linear的开关电源控制器和IR的MOSFET搭建了合适的电源供应电路,精度要求决定了输出电容的ESR选择,并且为防止电流过大造成的电压跌落,加入了远端反馈的功能。
时钟电路的实现要考虑到目标电路的抖动等要求,A项目中用到了GE的PHY器件,刚开始的时候使用一个内部带锁相环的零延时时钟分配芯片提供100MHz 时钟,结果GE链路上出现了丢包,后来换成简单的时钟Buffer器件就解决了丢包问题,分析起来就是内部的锁相环引入了抖动。
芯片之间的互连要保证数据的无误传输,在这方面,高速的差分信号线具有速率高,好布线,信号完整性好等特点,A项目中的多芯片间互连均采用了高速差分信号线,在调试和测试中没有出现问题。
需要熟悉各种电平标准,保证电平匹配。
3硬件PCB图设计
目的:通过具体的项目案例,进行PCB设计全部经验揭密,使你迅速成长为优秀的硬件工程师。
1) 高速CPU板PCB设计经验与精华
2) 普通PCB的设计要点与精华
3) PowerPC、ARM、MIPS、单片机的PCB设计精华
4) Intel公司PC主板的PCB设计精华
5) PC主板、工控机主板、电信设备用主板的PCB设计经验精华
6) 国内著名通信公司PCB设计规范与工作流程
7) PCB设计中生产、加工工艺的相关要求
8) 高速PCB设计中的传输线问题
9) 电信与数据通信领域主流CPU(PowerPC系列)的PCB设计经验与精华
10) 电信与数据通信领域通用物理层接口(百兆、千兆以太网,ATM等)的PCB设计经验与精华
11) 网络处理器的PCB设计经验与精华
12) PCB步线的拓扑结构极其重要性
13) PCI步线的PCB设计经验与精华
14) SDRAM、DDR SDRAM(125/133MHz)的PCB设计经验与精华
15) 项目案例:中端路由器PCB设计
PCB设计中要注意的问题:
PCB设计中要做到目的明确,对于重要的信号线要非常严格的要求布线的长度和处理地环路,而对于低速和不重要的信号线就可以放在稍低的布线优先级上。重要的部分包括:电源的分割;内存的时钟线,控制线和数据线的长度要求;高速差分线的布线等等。
项目中使用内存芯片实现了1G大小的DDR memory,针对这个部分的布线是非常关键的,要考虑到控制线和地址线的拓扑分布,数据线和时钟线的长度差别控制等方面,在实现的过程中,根据芯片的数据手册和实际的工作频率可以得出具体的布线规则要求,比如同一组内的数据线长度相差不能超过多少个mil,每个通路之间的长度相差不能超过多少个mil等等。当这些要求确定后就可以明确要求PCB设计人员来实现了,如果设计中所有的重要布线要求都明确了,可以转换成整体的布线约束,利用CAD中的自动布线工具软件来实现PCB设计,这也是在高速PCB设计中的一个发展趋势。
4硬件调试
目的:以具体的项目案例,传授硬件调试、测试经验与要点。
1) 硬件调试等同于黑箱调试,如何快速分析、解决问题?
2) 大量调试经验的传授;
3) 如何加速硬件调试过程;
4) 如何迅速解决硬件调试问题;
5) DATACOM终端设备的CE测试要求。
当准备调试一块板的时候,一定要先认真的做好目视检查,检查在焊接的过程中是否有可见的短路和管脚搭锡等故障,检查是否有元器件型号放置错误,第一脚放置错误,漏装配等问题,然后用万用表测量各个电源到地的电阻,以检查是否有短路,这个好习惯可以避免贸然上电后损坏单板。调试的过程中要有平和的心态,遇见问题是非常正常的,要做的就是多做比较和分析,逐步的排除可能的原因,要坚信“凡事都是有办法解决的”和“问题出现一定有它的原因”,这样最后一定能调试成功。
5软硬件联合调试
1) 如何判别是软件的错?
2) 如何与软件进行联合调试?
3) 大量的联合调试经验的传授。
总结:
现在从技术的角度来说,每个设计最终都可以做出来,但是一个项目的成功与否,不仅仅取决于技术上的实现,还与完成的时间,产品的质量,团队的配合密切相关,所以良好的团队协作,透明坦诚的项目沟通,精细周密的研发安排,充裕的物料和人员安排,这样才能保证一个项目的成功。
一个好的硬件工程师实际上就是一个项目经理,他/她需要从外界交流获取对自己设计的需求,然后汇总,分析成具体的硬件实现。还要跟众多的芯片和方案供应商联系,从中挑选出合适的方案,当原理图完成后,他/她要组织同事来进行配合评审和检查,还要和CAD工程师一起工作来完成PCB的设计。与此同时,还要准备好BOM清单,开始采购和准备物料,联系加工厂家完成板的贴装。在调试的过程中他/她要组织好软件工程师来一起攻关调试,配合测试工程师一起解决测试中发现的问题,等到产品推出到现场,如果出现问题,还需要做到及时的支持。所以做一个硬件设计人员要锻炼出良好的沟通能力,面对压力的调节能力,同一时间处理多个事务的协调和决断能力和良好平和的心态等等。
能力要求:
还有细心和认真,因为硬件设计上的一个小疏忽往往就会造成非常大的经济损失,比如以前碰到一块板在PCB设计完备出制造文件的时候误操作造成了电源层和地层连在了一起,PCB板制造完毕后又没有检查直接上生产线贴装,到测试的时候才发现短路问题,但是元器件已经都焊接到板上了,结果造成了几十万的损失。所以细心和认真的检查,负责任的测试,不懈的学习和积累,才能使得一个硬件设计人员持续不断的进步,而后术业有所小成。
工程开发一个重要特点就是“踩在前人的足迹上”,就是通过过去几十上百年的工程实践,对于各种情况有了很多经验数据和经验方法,比如对于PCB layout来说,基本上每个公司都有自己的design guidelines/check list,这就是公司在过去很多项目中总结出来的,每一条可以说都付出了“血”的代价,这是对于板级设计来说了;对于核心芯片和器件,就更是如此了,芯片 或器件公司几十数百人历时数年搞出来的一款芯片和器件,又岂是你通过几百页datasheet可以彻底理解的。
大多数情况下,知道主要接口,参数,功能和性能就足够了,尤其是芯片/器件公司提供的design guidelines或者applicationnotes,里面一般都是芯片/器件工程师的肺腑之言,经验之谈,一般来说没有个十年二十年工作经验的工程师是写不了这些东西的。 看起来虽然很简单,看起来像是废话,但是细细分析,结合电路定理和电磁定律,略微分析,就会发现简直字字珠玑。刚毕业的好学生(一般来说学习好,喜欢 啃难题,学习能力强,求知欲强)初干硬件设计,就会发现涉及的知识点和技术要点太多了,如果这个知识点想要理解透彻,那个知识点也要理解透彻,会发现一天 24小时根本不够用,但是对不起,公司请你过来不是让你学习的,是要干硬件设计的,过一个月就要见原理图了,你还在这捧着OrCAD手册一个命令一个命令 学习OrCAD使用技巧,研究为啥要有串行电阻呢,研究这个电容是取0.1uF还是0.01uF.。
有求知欲是好事,但是那是在工作之余,项目之余,虚心向前辈学习,尽量利用各种designguidelines,尽快完成设计工作,记录自己的知识缺点,在业余时间努力学习,理解透彻,通过设计验证/测试,加深对于知识点的了解,这才是正确的工作方法。
我在刚毕业的时候欣喜的发现传输线理论太重要了,遂花了一个月把传输线理论努力了一把,并推导了大量公式进行验证,其实总结起来就是几句话,阻抗匹 配,如果接收端阻抗大于发送端,信号会怎么样;如果小于,信号会怎么样;如果开路,会怎么样;如果短路,会怎么样,这几条基本每本信号完整性的书上都会介 绍,也不会有很复杂的数学公式推导,知道就行了,然后就是如何平衡发射端的阻抗,串行电阻,PCB阻抗,匹配阻抗等等,都是简单的数学公式。
关于硬件设计的各种技术/标准/芯片/器件都要知道,需要的时候,能够信手拈来,功能性能,参数特性,优点缺点。还有一些能力是必须要具备的:
1. 快速学习的能力
一方面,通信技术、标准、芯片更新的太快了,快到你根本来不及系统的了解它,只能通过特定的项目,需求进行了解;另一方面对于公司来说,需要做的硬件 产品也是变化很快,客户需要T1、 E1、 PDH、 SDH、Ethernet、 VoIP、 Switch、 Router, 没有人是什么都懂的,都需要能够结合客户的需求,选择的芯片方案进行详细了解,尤其对于接口协议和电气特性。
2. 通信协议和标准的理解
通信设备,顾名思义,就是用来实现多种通信协议(比如T1, E1, V.35,PDH, SDH/SONET, ATM, USB, VoIP, WiFi, Ethernet, TCP/IP,RS232等等常用协议)实现通信的设备,各种电路,PCB板,电源都是为了通信协议服务的。
通信协议一般都是由芯片实现,要么是成熟的 ASIC,要么是自己开发的FPGA/CPLD,芯片工程师或者FPGA工程师比硬件工程师跟靠近通信协议,他们需要对于通信协议理解很透彻,实现各种逻 辑上的状态机以及满足协议规定的电气参数标准。按照OSI的七层模型,硬件工程师尤其需要专注于一层物理层和二层数据链路层的协议标准,以 Ethernet距离,物理层是由PHY/transceiver芯片完成,数据链路层是由MAC/switch 芯片完成,对于从事Ethernet相关开发的硬件工程师来说,需要对于PHY和Switch芯片理解透彻,从编码方式,电气参数,眼图标准,模板,信号 频率到帧格式,转发处理逻辑,VLAN等等。
对于传统PDH/SDH/SONET设备就更是如此,PDH/SDH/SONET是更硬件的设备,就是说主要协议都是通过ASIC实现的,软件的功能 主要是管理,配置,监视,告警,性能,对于硬件工程师来说,必须要熟悉使用的相关协议和接口标准,尤其对于电气规范,眼图模板,这样在设计验证的时候才能胸有成竹。
3. 写文档的能力
诚如软件设计一样,好的软件设计需要好的设计文档,明确需求,实现什么功能,达到什么验收标准,随着芯片集成度的增加,接口速率的提高,单板复杂度的提高,硬件设计也越来越复杂以及对应热稳定性、可靠性、电磁兼容、环境保护的要求,已经不是通过小米加步木。仓的游击战可以解决了,每一个硬件项目都是一 场战争,都需要好好的规划,好好的分析,这就需要好好做文档。
对于硬件工程师来说,最重要的文档有两个:一个是硬件设计规范(HDS : hardware design specification)和硬件测试报告(一般叫EVT:EngineeringValidation& Test report或者DVT: DesignValidation & Test report),对于HDS的要求是内容详实,明确,主芯片的选择/硬件初始化,CPU的选择和初始化,接口芯片的选择/初始化/管理,各芯片之间连接关系框图(Block Diagram),DRAM类型/大小/速度,FLASH类型/大小/速度,片选,中断,GPIO的定义,复位逻辑和拓扑图,时钟/晶振选择/拓 扑,RTC的使用,内存映射(Memory map)关系, I2C器件选择/拓扑,接口器件/线序定义,LED的大小/颜色/驱动,散热片,风扇,JTAG,电源拓扑/时序/电路等等。
对于DVT来说,要求很简单也很复杂:板卡上有什么接口,芯片,主要器件,电路,就要测试什么,尤其在板卡正常工作的情况下的电源/电压/纹波/时 序,业务接口的眼图/模板,内部数据总线的信号完整性和时序(如MII, RGMII, XAUI, PCIe,PCM bus, Telecom Bus, SERDES, UART等等),CPU子系统(如时钟,复位,SDRAM/DDR,FLASH接口)。
好的硬件工程师无论是做的文档还是报道都是令人一目了然,这个硬件系统需要用什么方案和电路,最后验证测试的结果如何。内容详实,不遗漏各种接口/电路;简单名了,不说废话;图文并茂,需要的时候一个时序图,一个示波器抓图就很能说明问题了。
4. 仪表/软件的使用能力
仪表包括电烙铁,万用表,示波器,逻辑分析仪,误码仪,传输分析仪,以太网测试仪Smartbits/IXIA,热量计,衰减器,光功率计,射频信号 强度计等等;软件包括Office(Outlook,Word, Excel, PowerPoint, Project, Visio),PDF,常用原理图软件Pads或者OrCAD,常用PCB软件Pads或者Allegro,Allegro Viewer,电路仿真软件PSPICE,信号仿真软件HyperLynx等等。
无论仪表还是软件,在政治经济学里说都是生产工具,都是促进生产力提高的,作为硬件工程师来说,这些仪表和软件就是手中的木。硬件工程师很大一 部分能力的体现都在与仪表和软件的使用上,尤其对于原理图软件和示波器的使用,更是十分重要,原理图软件的使用是硬件设计的具体实现,通过一个个器件的摆 放,一个个NET的连接,构成了十分复杂的硬件逻辑软件,是整个硬件设计的核心工作,任何一个原理图上的失误和错误造成的损失都是巨大的,真是“如履薄 冰,战战兢兢”。
另外,原理图软件的使用还体现在原理图的美观上,好的设计,简单明了,注释明确,无论是谁,顺着思路就能很快搞清楚设计意图,需要特别注意之处,不好 的设计,东一个器件,西一个器件,没有逻辑,命名怪异,难以理解,日后维护起来相当麻烦;示波器在所有测试仪表之中,对于硬件工程师是最重要的,无论原理 图还是PCB都是设计工作,但是任何设计都需要仔细的验证测试,尤其在信号方面,都需要大量的示波器工作,不会正确的使用示波器根本谈不上正确的验证,接 地有没有接好,测试点的选择,触发的选择,延时的选择,幅度、时间的选择,都决定着测试的结果。如果错误的使用示波器必然带来错误的测试结果,这种情况 下,有可能本来是错误的设计被误认为是正确的,带来巨大的隐患;本来是正确的设计被误认为是错误的,带来大量的时间精力浪费。
5. 电路设计的能力
随着芯片集成度的提高,硬件设计似乎变简单了。首先是逻辑连接,其次考虑信号完整性需要的串行电阻选择和并行电容选择,电源滤波,退耦。不过对于好的 硬件工程师来说,简单的逻辑连接(这个芯片的同样总线的输出接另一个芯片的输入,等等),只是硬件设计的最基本技能,电路是芯片功能,通信协议和各种软件 的载体,没有对电路的深入理解,根本谈不上对硬件设计的深入理解,尤其对于芯片后面列的电气性能参数或者离散器件各种参数的理解,胡乱乱接,可能在 3.3V的总线上可以工作,但是现在工作电压已经降到1V了。什么概念?信号线上的噪声都已经大到可以使采样出现误判了,随着信号速率的提高和工作电压的降低,数字信号已经越来越模拟化了,这就需要对于PCB的阻抗,容抗,感抗,离散器件(电阻,电容,电感,二极管,三极管,MOSFET,变压器 等),ASIC的接口电气参数深入了解。
这都需要对电路原理,模拟电路甚至电磁场理论深入学习,电路可以说是电磁场理论的子集,没有电磁场理论的理解,根本谈不上对于电容,电感,串扰,电磁辐射的理解。
尤其对于电源电路设计上,现在芯片电压多样化,电压越来越低,电流越来越大,运营商对于通信设备功耗的严格要求,散热要求,对于电源设计的挑战越来越 大。可以说,对于一个硬件设计来说,40%的工作都是在于电源电路的原理图/PCB设计和后期测试验证,电源电路设计是硬件工程师电路能力的集中体现,各 种被动器件、半导体器件、保护器件、DC/DC转换典型拓扑,都有很多参数,公式需要考虑到,计算到。
6.沟通和全局控制的能力
硬件工程师在一个硬件项目中,一般处于Team leader的作用,要对这个硬件项目全权负责,需要协调好PCB工程师,结构工程师,信号完整性工程师,电磁兼容工程师等各种资源,并与产品经理,项目经理,软件工程师,生产工程师,采购工程师紧密配合,确保各个环节按部就班,需要对整个项目计划了然于胸,各个子任务的发布时间,对于可能出现的技术难题 和风险的估计,控制。