对于一个硬件工程来说,要完成一个硬件工程,考察的是硬件工程师各方面的能力,不单单是会设计原图、画板,下面分享一些经验总结。
一、 节约成本
现象1
我们的系统要求这么高的工作频率,RAM、ROM、CPU、FPGA所有的芯片都选最快的。
A: 在一个高速系统中并不是每一部分都工作在高速状态,器件速度每提高一个等级,价格就可能会翻一倍,而且还有可能带来信号完整性方面的问题。
现象2
简单的逻辑电路用74xx门电路搭一下就行,但太low,还是用MCU或者CPLD显的高档。
A:提这个问题的小伙,感情公司不是你家开的吧,74xx的门路贼便宜,MCU和CPLD都是几十块钱,成本估计一下子就提高了N倍,还给生产、文档等工作增加了大量工作量。
现象3
程序只要实现功能,测试下来稳定就可以了,代码长短,效率高低,不是关键
A:CPU和存储器的速度都是和钱挂钩,如果在系统设计时多优化一下代码结构,提高程序效率,可以降低CPU的主频、减少存储器的容量,这两点所节约的成本绝对是划算的。
现象4
所有的电源芯片都用国外的(ADI,TI,MPS等),纹波和瞬态响应比较好,国产的太差了。
A:欧美品牌的电源管理纹波和瞬态响应是特别好,到某些国产的电源也是ok的,像贝岭、润石,以及电源管理IC,像全志、瑞芯微等,只要满足负载端的电源纹波要求,也完全是可以采用的。
二、低功耗设计
现象1
系统是220V交流供电,就不用在乎功耗问题了。
A:低功耗设计不单单是为了省电,更多时候是降低电源模块和以及散热系统的成本,由于电流减小,也减小了电磁辐射和热噪声,也有助于延长电子器件的寿命(电子元件的工作温度每提高10℃,寿命则缩短一半)。
现象2
这些总线信号都用电阻拉一下,感觉放心些。
A:信号需要上下拉的原因有很多,也不是每个都需要上下拉。上下拉电阻拉一个单纯输入的信号,电流也就十几微安以下,但是拉一个被驱动了的信号,其电流可以达到毫安。现在的系统地址和数据都是32位,可能还有244/245隔离后的总线及其他信号,消耗的功耗达到几瓦。
现象3
这些小芯片功耗这么低,不用考虑
A:对于内部复杂芯片的功耗是很难确定的,它主要由引脚上的电流来确定。
现象4
降低功耗是硬件人员的事,与软件没有关系
A:一个系统组成主要是硬件+软件,硬件是平台,相当于人的身体,软件也是思想逻辑,相当于人的大脑,试想如果身体不动,大脑在努力的想问题,同样感觉到累,但如果什么都不思考,很少能感觉到累。
总线上每一片芯片的访问,每个信号都翻转差不多都需要软件控制。如果软件能连上外存访问的次数(多使用寄存器变量、多使用内部CACHE 等),以及响应中断(中断往往是低电平有效并带走上拉电阻)以及其他针对单板的措施都对降低功耗有突出的贡献。
三、系统效率
现象1
系统主频选用越高越好,对外界任务处理的越快。
A:系统处理能力与很多因素有关,在通信应用中瓶颈一般与存储器有关,存储器的速度快不起来,处理器再快也是徒劳。
现象2
cpu用大一些的CACHE,系统就能处理的快了
A:CACHE的增大,不一定能提高系统的性能。因为只有搬到CACHE中的数据必须多次重复利用才能提高系统效率。所以在通信系统中一般只打开指令CACHE,数据CACHE即使打开也只局限在部分存储空间,如堆栈部分。
现象3
多任务到底是中断还是查询,中断即时响应更好。
A:用中断还是查询,要具体情况具体分析。中断实时性强,但不一定快,如果中断任务很多,前一个没退出来,后一个就到来,一会儿系统就崩溃了。所以要根据具体情况来决定用哪一种,如果任务很多,那么最好的方法是在
中断中查询,即进一次中断,就把积累的所有任务都处理完再退出。
现象4
存储器的接口时序都是厂家默认的配置,不用修改。
A:BSP对存储器接口设置的默认值都是最保守的,在实际工作中应结合总线工作频率和等待周期等参数进行合理调配。有时把频率降低反而能提高效率。 如RAM的存取周期是70ns,当总线频率为40 MHz时,设3个周期的存取时间,周期为75ns即可。总线频率为50MHz时,必须设为4个存取周期,实际存取时间为85ns(CPU对RAM的数据通信必须大于等于RAM的存取周期)
现象5
一个CPU处理不过来,就用两个分布处理,处理能力可提高一倍。
A是否采用两个CPU,必须要根据实际使用情况来确定,如果在系统运行过程中,两个cpu之间一直在互相协调处理任务,那么效率就可能低于单个cpu。
四、信号完整性
现象1
这些信号都是低速信号,不用考虑仿真和阻抗匹配。
A:首先信号是高速还是低速,不能只看信号频率,还要看信号的上升沿,(一般而言,在信号传输路径的长度(即信号线的长度)小于信号有效波长的1/6时,可认为在该传输路径上,各点的电平状态近似相同,即低速信号,反之为高速信号。)所以,是否进行阻抗匹配,还要看信号要求。
现象2
这些信号都经过仿真,绝对没问题。
A:仿真模型不可能和实物一模一样,不同生产批次实物都会有差别。实际情况千差万别,仿真结果都是在理想条件下的数据,尤其是像串扰,网上看到这样一个例子,单板测试时,只有特定长度的包极易丢包,最后确定的原因是,极易丢包的数据是0xff,当这个数据出现在总线上时,干扰了相邻的we信号,导致无法写入RAM,其他信号也会对we产生干扰,但影响都在可接受的范围内,当8位总线同时由0变1时,旁边的we信号就受到了干扰,所以仿真结果只能用来参考,还要预留有足够的余量。
现象3
数字信号越陡峭越好
A: 边沿越陡峭,其频谱范围就越宽,高频的就越多,能量就越大,频率越高的地方越容易产生辐射,越容易干扰别的信号,而自身在导线上的传输质量会变的越差,所以能用低速芯片,优先用低速芯片,如果低速满足不了需求,再选用速度较高速度的芯片。
现象4
为保证干净的电源,去耦电容多多益善。
A :整体来讲电容越多电源越平稳,但是增多的话,也会带来其他方面的影响,比如说成本增加、布线难度增加、上电冲击电流大,去耦电容
现象5
信号匹配真麻烦,如何才能匹配好?
A:关于信号匹配总原则是当信号的传输时间超过其跳变时间,信号的反射问题才显得重要。信号产生反射的原因是线路阻抗不均匀所致,匹配的目的就是为了使驱动端、负载端和传输线的阻抗变的接近,但能否匹配得好,与信号在PCB上的拓扑有很大关系,传输线上的
一条分支,一个过孔,一个拐角,一个插接件,不同位置与地线的距离的改变,都可使阻抗距离变化,而这些波形使反射波形变得异常复杂,很难匹配。因此高速信号仅使用点到点的方式,尽可能减少过孔、拐角等。
五、可靠性
可靠性问题主要是指板子在运行过程中,能否在使用环境、软件升级、外部通信等场景中稳定运行,使用环境就是高低温变化,外部接口是否有足够的兼容性。
现象1
这部分IO口、电源使能引脚只需要在软件上做好配置就行,不需要硬件配置。
A: 某些关键的引脚/io,除了软件上需要做好配置外,硬件必须要在关键的引脚或信号上做上下拉,避免在软件运行来之前,电平不对造成其他影响。
现象2
这块单板已经小批量生产了,经过长时间测试没有任何问题。
A:硬件设计和芯片应用必须符合相关规范,尤其是芯片手册中提到的所有参数(耐压,io口电平范围,电流,时序,温度,PCB布线,电源质量等),不能只靠试验来验证。网上有个例子,卖出板子运行了两年没有问题,但是IC厂更换了生产线,板子就不正常工作了,原因是人家芯片参发生了一些变化,但并没有超出手册的范围。所以硬件设计还是要以手册为准。
现象3
用户操作问题,就不能怪我了
A:要求用户严格按手册要求是没有错的,但用户也是人,人都有犯错的时候,不能说插错一个线头就烧板子、轻微摔一下就死机,所以硬件设计要对用户可能犯的问题加以保护。
现象4
板子坏的原因是外部连接的板子信号出问题了,不能把责任归于我。
A:板子对外的接口要有足够的兼容性,不能因为对方信号不正常,就罢工了,一般来讲,硬件都需要按模块来划分,如果某个信号不正常,它只能影响与它相关的那部分功能,而其他功能应该正常工作,不应该罢工或者永久损坏,一旦外部接口的信号正常,相关功能也应该恢复正常工作。