A hardware expert's design experience is shared by hula la la
One: cost saving
phenomenon 1: The resistance of these pull-up/low-low resistors is not big, just choose an integer 5K.
Comments: There is no resistance value of 5K on the market, the closest is 4.99K (accuracy 1 %), followed by 5.1K (accuracy 5%), and its cost is 4 times and 2 times higher than 4.7K with 20% accuracy. The resistance of 20% precision is only 1, 1.5, 2.2, 3.3, 4.7, 6.8 (including integer multiples of 10); similarly, 20% precision capacitors only have the above values, if other ones are selected Values must use higher precision, and the cost can be multiplied several times without any benefit.
Phenomenon 2: What color is the indicator on the panel? I think blue is special, just choose it.
Comments: Other red, green, yellow and orange colors, regardless of size (5MM or less), have matured for decades, the price is generally below 5 cents, and blue However, it was invented in the past three or four years. The technical maturity and supply stability are both poor, and the price is four or five times more expensive. At present, the blue indicator light is only used when it cannot be replaced by other colors, such as displaying a video signal .
Phenomenon 3: This logic is also used with the 74XX gate circuit, but it is too earthy, or use CPLD, it looks more upscale.
Comments: 74XX's door circuit is only a few cents, and CPLD has at least dozens of pieces, (GAL /PAL is only a few dollars, but the company does not recommend it). The cost has been increased by N times, and the work of production, documentation, etc. has been added several times.
Phenomenon 4: Our system requirements are so high, including MEM, CPU, FPGA and other chips should choose the fastest
comment: in a high-speed system, not every part works at high speed, and the device speed is increased by one level. The price is almost doubled, and it also has a significant negative impact on signal integrity issues.
现象五:这板子的PCB设计要求不高,就用细一点的线,自动布吧
点评:自动布线必然要占用更大的PCB面积,同时产生比手动布线多好多倍的过孔,在批量很大的产品中,PCB厂家降价所考虑的因素除了商务因素外,就是线宽和过孔数量,它们分别影响到PCB的成品率和钻头的消耗数量,节约了供应商的成本,也就给降价找到了理由。
现象六:程序只要稳定就可以了,代码长一点,效率低一点不是关键
点评:CPU的速度和存储器的空间都是用钱买来的,如果写代码时多花几天时间提高一下程序效率,那么从降低CPU主频和减少存储器容量所节约的成本绝对是划算的。CPLD/FPGA设计也类似。
二:低功耗设计
现象一:我们这系统是220V供电,就不用在乎功耗问题了
点评:低功耗设计并不仅仅是为了省电,更多的好处在于降低了电源模块及散热系统的成本、由于电流的减小也减少了电磁辐射和热噪声的干扰。随着设备温度的降低,器件寿命则相应延长(半导体器件的工作温度每提高10度,寿命则缩短一半)
现象二:这些总线信号都用电阻拉一下,感觉放心些
点评:信号需要上下拉的原因很多,但也不是个个都要拉。上下拉电阻拉一个单纯的输入信号,电流也就几十微安以下,但拉一个被驱动了的信号,其电流将达毫安级,现在的系统常常是地址数据各32位,可能还有244/245隔离后的总线及其它信号,都上拉的话,几瓦的功耗就耗在这些电阻上了(不要用8毛钱一度电的观念来对待这几瓦的功耗)。
现象三:CPU和FPGA的这些不用的I/O口怎么处理呢?先让它空着吧,以后再说
点评:不用的I/O口如果悬空的话,受外界的一点点干扰就可能成为反复振荡的输入信号了,而MOS器件的功耗基本取决于门电路的翻转次数。如果把它上拉的话,每个引脚也会有微安级的电流,所以最好的办法是设成输出(当然外面不能接其它有驱动的信号)
现象四:这款FPGA还剩这么多门用不完,可尽情发挥吧
点评:FGPA的功耗与被使用的触发器数量及其翻转次数成正比,所以同一型号的FPGA在不同电路不同时刻的功耗可能相差100倍。尽量减少高速翻转的触发器数量是降低FPGA功耗的根本方法。
现象五:这些小芯片的功耗都很低,不用考虑
点评:对于内部不太复杂的芯片功耗是很难确定的,它主要由引脚上的电流确定,一个ABT16244,没有负载的话耗电大概不到1毫安,但它的指标是每个脚可驱动60毫安的负载(如匹配几十欧姆的电阻),即满负荷的功耗最大可达60*16=960mA,当然只是电源电流这么大,热量都落到负载身上了。
现象六:存储器有这么多控制信号,我这块板子只需要用OE和WE信号就可以了,片选就接地吧,这样读操作时数据出来得快多了。
点评:大部分存储器的功耗在片选有效时(不论OE和WE如何)将比片选无效时大100倍以上,所以应尽可能使用CS来控制芯片,并且在满足其它要求的情况下尽可能缩短片选脉冲的宽度。
现象七:这些信号怎么都有过冲啊?只要匹配得好,就可消除了
点评:除了少数特定信号外(如100BASE-T、CML),都是有过冲的,只要不是很大,并不一定都需要匹配,即使匹配也并非要匹配得最好。象TTL的输出阻抗不到50欧姆,有的甚至20欧姆,如果也用这么大的匹配电阻的话,那电流就非常大了,功耗是无法接受的,另外信号幅度也将小得不能用,再说一般信号在输出高电平和输出低电平时的输出阻抗并不相同,也没办法做到完全匹配。所以对TTL、LVDS、422等信号的匹配只要做到过冲可以接受即可。
现象八:降低功耗都是硬件人员的事,与软件没关系
点评:硬件只是搭个舞台,唱戏的却是软件,总线上几乎每一个芯片的访问、每一个信号的翻转差不多都由软件控制的,如果软件能减少外存的访问次数(多使用寄存器变量、多使用内部CACHE等)、及时响应中断(中断往往是低电平有效并带有上拉电阻)及其它争对具体单板的特定措施都将对降低功耗作出很大的献。
RE: 一个硬件高手的设计经验分享 by 呼啦啦:
三:系统效率
现象一:这主频100M的CPU只能处理70%,换200M主频的就没事了
点评:系统的处理能力牵涉到多种多样的因素,在通信业务中其瓶颈一般都在存储器上,CPU再快,外部访问快不起来也是徒劳。
现象二:CPU用大一点的CACHE,就应该快了
点评:CACHE的增大,并不一定就导致系统性能的提高,在某些情况下关闭CACHE反而比使用CACHE还快。原因是搬到CACHE中的数据必须得到多次重复使用才会提高系统效率。所以在通信系统中一般只打开指令CACHE,数据CACHE即使打开也只局限在部分存储空间,如堆栈部分。同时也要求程序设计要兼顾CACHE的容量及块大小,这涉及到关键代码循环体的长度及跳转范围,如果一个循环刚好比CACHE大那么一点点,又在反复循环的话,那就惨了。
现象三:这么多任务到底是用中断还是用查询呢?还是中断快些吧
点评:中断的实时性强,但不一定快。如果中断任务特别多的话,这个没退出来,后面又接踵而至,一会儿系统就将崩溃了。如果任务数量多但很频繁的话,CPU的很大精力都用在进出中断的开销上,系统效率极为低下,如果改用查询方式反而可极大提高效率,但查询有时不能满足实时性要求,所以最好的办法是在中断中查询,即进一次中断就把积累的所有任务都处理完再退出。
现象四:存储器接口的时序都是厂家默认的配置,不用修改的
点评:BSP对存储器接口设置的默认值都是按最保守的参数设置的,在实际应用中应结合总线工作频率和等待周期等参数进行合理调配。有时把频率降低反而可提高效率,如RAM的存取周期是70ns,总线频率为40M时,设3个周期的存取时间,即75ns即可;若总线频率为50M时,必须设为4个周期,实际存取时间却放慢到了 80ns。
现象五:一个CPU处理不过来,就用两个分布处理,处理能力可提高一倍
点评:对于搬砖头来说,两个人应该比一个人的效率高一倍;对于作画来说,多一个人只能帮倒忙。使用几个CPU需对业务有较多的了解后才能确定,尽量减少两个CPU间协调的代价,使1+1尽可能接近2,千万别小于1。
现象六:这个CPU带有DMA模块,用它来搬数据肯定快
点评:真正的DMA是由硬件抢占总线后同时启动两端设备,在一个周期内这边读,那边些。但很多嵌入CPU内的DMA只是模拟而已,启动每一次DMA之前要做不少准备工作(设起始地址和长度等),在传输时往往是先读到芯片内暂存,然后再写出去,即搬一次数据需两个时钟周期,比软件来搬要快一些(不需要取指令,没有循环跳转等额外工作),但如果一次只搬几个字节,还要做一堆准备工作,一般还涉及函数调用,效率并不高。所以这种DMA只对大数据块才适用。
四:信号完整性
现象一:这些信号都经过仿真了,绝对没问题
点评:仿真模型不可能与实物一模一样,连不同批次加工的实物都有差别,就更别说模型了。再说实际情况千差万别,仿真也不可能穷举所有可能,尤其是串扰。曾经有一教训是某单板只有特定长度的包极易丢包,最后的原因是长度域的值是0xFF,当这个数据出现在总线上时,干扰了相邻的WE信号,导致写不进RAM。其它数据也会对WE产生干扰,但干扰在可接受的范围内,可是当8位总线同时由0边1时,附近的信号就招架不住了。结论是仿真结果仅供参考,还应留有足够的余量。
现象二:100M的数据总线应该算高频信号,至于这个时钟信号频率才8K,问题不大
点评:数据总线的值一般是由控制信号或时钟信号的某个边沿来采样的,只要争对这个边沿保持足够的建立时间和保持时间即可,此范围之外有干扰也罢过冲也罢都不会有多大影响(当然过冲最好不要超过芯片所能承受的最大电压值),但时钟信号不管频率多低(其实频谱范围是很宽的),它的边沿才是关键的,必须保证其单调性,并且跳变时间需在一定范围内。
现象三:既然是数字信号,边沿当然是越陡越好
点评:边沿越陡,其频谱范围就越宽,高频部分的能量就越大;频率越高的信号就越容易辐射(如微波电台可做成手机,而长波电台很多国家都做不出来),也就越容易干扰别的信号,而自身在导线上的传输质量却变得越差,因此能用低速芯片的尽量使用低速芯片。
现象四:为保证干净的电源,去偶电容是多多益善
点评:总的来说去偶电容越多电源当然会更平稳,但太多了也有不利因素:浪费成本、布线困难、上电冲击电流太大等。去偶电容的设计关键是要选对容量并且放对地方,一般的芯片手册都有争对去偶电容的设计参考,最好按手册去做。
现象五:信号匹配真麻烦,如何才能匹配好呢?
点评:总的原则是当信号在导线上的传输时间超过其跳变时间时,信号的反射问题才显得重要。信号产生反射的原因是线路阻抗的不均匀造成的,匹配的目的就是为了使驱动端、负载端及传输线的阻抗变得接近,但能否匹配得好,与信号线在PCB上的拓扑结构也有很大关系,传输线上的一条分支、一个过孔、一个拐角、一个接插件、不同位置与地线距离的改变等都将使阻抗产生变化,而且这些因素将使反射波形变得异常复杂,很难匹配,因此高速信号仅使用点到点的方式,尽可能地减少过孔、拐角等问题。
V: Reliability design
phenomenon 1: This board has been produced in small batches. After a long test, no problems have been found.
Comments: Hardware design and chip application must comply with relevant specifications, especially all the parameters mentioned in the chip manual. Voltage, I/O level range, current, timing, temperature PCB layout, power quality, etc.) cannot be verified by experiment. There are many products in the company that have had a painful lesson. The products have been sold for one or two years. The IC manufacturers have changed their production lines. Our board will not turn. The reason is that some people’s chip parameters have changed, but they have not exceeded the manual. The scope. If you take the manual as the standard, then he is not afraid of how to change, if the parameters become beyond the scope of the manual, you can also find him to claim (if your board can still turn, then your reliability is even more cattle).
Phenomenon 2: This part of the circuit only requires software to be designed in such a way that there will be no problem.
Comments: Many electrical features on the hardware are directly controlled by the software, but the software is often accidental. After the program runs away, it is impossible to predict what will happen. The designer should ensure that no permanent damage is caused in a short period of time, regardless of the hardware in which the software is operated.
Phenomenon 3: User operation error can not blame me
Comments: It is right to ask the user to strictly follow the manual, but the user is a person, when there is a mistake, you can't say that you miss a wrong button and crash, insert a wrong plug. Burn the board. Therefore, all kinds of mistakes that users may make must be protected.
Phenomenon 4: The reason for the bad board is that the board on the opposite side has a problem, and it is not my responsibility.
Comments: There should be sufficient compatibility for various external hardware interfaces. You cannot rest because the other party's signal is not normal. It should not only affect the part of the function that is related to it, but other functions should work properly, should not be completely striked, or even permanently damaged, and once the interface is restored, you should immediately return to normal.