|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Hagit 于 2018-11-27 12:33 编辑
- q- {" f1 t; M' _% c, O+ T/ @2 P$ z; T" n& Z7 r( o
如何能够让大家更认同你的设计?如何能够在节省成本下提高效率、降低功耗?本文中为大 家分享了如何考虑这些问题并给出了实践中的经验。
9 `% V) ]( a6 x. W, E* o! ?2 q 首先我们来聊一下关于节省成本的问题,以下几个实际例子就可以说明我们在选用各项 元器件或 IC 时候应该考虑的问题。关于拉高/拉低的电阻用多大的阻值?市场最接近的是 4.99K(精度 1%),其次是 5.1K(精度 5%),其成本分别比精度为 20%的 4.7K 高 4 倍和 2 倍。20%精度的电阻阻值只有 1、1.5、2.2、 3.3、4.7、6.8 几个类别(含 10 的整数倍); 类似地,20%精度的电容也只有以上几种值,如果选了其它的值就必须使用更高的精度,成 本就翻了几倍,却不能带来任何好处。针对于面板上的指示灯的颜色问题,红绿黄橙等颜色 的不管大小(5MM 以下)封装如何,都已成熟了几十年,价格一般都在 5 毛钱以下,而蓝色 却是近三四年才发明的东西,技术成熟度和供货稳定度都较差,价格却要贵四五倍。目前蓝 色指示灯只用在不能用其它颜色替代的场合,如显示视频信号等。74XX 的门电路只几毛钱, 而 cpld 至少也得几十块,(GAL/PAL 虽然只几块钱,但公司不推荐使用)。成本提高了 N 倍不说,还给生产、文档等工作增添数倍的工作。
, K3 m/ ^3 b7 P7 t 其实在实际的电路设计过程中,系统要求高的情况下,不一定所有的芯片都要选最快的。 因为在一个高速系统中并不是每一部分都工作在高速状态,而器件速度每提高一个等级,价 格差不多要翻倍,另外还给信号完整性问题带来极大的负面影响。自动布线必然要占用更大 的 PCB 面积,同时产生比手动布线多好多倍的过孔,在批量很大的产品中,PCB 厂家降价所 考虑的因素除了商务因素外,就是线宽和过孔数量,它们分别影响到 PCB 的成品率和钻头的 消耗数量,节约了供应商的成本,也就给降价找到了理由。CPU 的速度和存储器的空间都是 用钱买来的,如果写代码时多花几天时间提高一下程序效率,那么从降低 CPU 主频和减少存 储器容量所节约的成本绝对是划算的。CPLD/FPGA 设计也类似。
$ D, t2 Q# g/ U8 _8 ]! S6 a! s 然后就是低功耗设计与高系统效率的设计问题,其实低功耗设计是在省电的同时让器件 的寿命变得更长。其降低了电源模块及散热系统的成本、由于电流的减小也减少了电磁辐射 和热噪声的干扰。随着设备温度的降低,器件寿命则相应延长(半导体器件的工作温度每提 高 10 度,寿命则缩短一半)。针对于高系统性能来说 CACHE 的增大,并不一定就导致系统 性能的提高,在某些情况下关闭 CACHE 反而比使用 CACHE 还快。原因是搬到 CACHE 中的数据 必须得到多次重复使用才会提高系统效率。所以在通信系统中一般只打开指令 CACHE,数据 CACHE 即使打开也只局限在部分存储空间,如堆栈部分。同时也要求程序设计要兼顾 CACHE 的容量及块大小,这涉及到关键代码循环体的长度及跳转范围,如果一个循环刚好比 CACHE大那么一点点,又在反复循环的话,那就惨了。中断的实时性强,但不一定快。如果中断任 务特别多的话,这个没退出来,后面又接踵而至,一会儿系统就将崩溃了。如果任务数量多 但很频繁的话,CPU 的很大精力都用在进出中断的开销上,系统效率极为低下,如果改用查 询方式反而可极大提高效率,但查询有时不能满足实时性要求,所以最好的办法是在中断中 查询,即进一次中断就把积累的所有任务都处理完再退出。BSP 对存储器接口设置的默认值 都是按最保守的参数设置的,在实际应用中应结合总线工作频率和等待周期等参数进行合理 调配。有时把频率降低反而可提高效率,如 RAM 的存取周期是 70ns,总线频率为 40M 时, 设 3 个周期的存取时间,即 75ns 即可;若总线频率为 50M 时,必须设为 4 个周期,实际存 取时间却放慢到了 80ns。对于搬砖头来说,两个人应该比一个人的效率高一倍;对于作画 来说,多一个人只能帮倒忙。使用几个 CPU 需对业务有较多的了解后才能确定,尽量减少两 个 CPU 间协调的代价,使 1+1 尽可能接近 2 千万别小于 1。. q2 B; N# B& Q/ G; A( P
由于仿真模型不可能与实物一模一样,连不同批次加工的实物都有差别,就更别说模型 了。再说实际情况千差万别,仿真也不可能穷举所有可能,尤其是串扰。曾经有一教训是某 单板只有特定长度的包极易丢包,最后的原因是长度域的值是 0xFF,当这个数据出现在总 线上时,干扰了相邻的 WE 信号,导致写不进 RAM。其它数据也会对 WE 产生干扰,但干扰在 可接受的范围内,可是当 8 位总线同时由 0 边 1 时,附近的信号就招架不住了。结论是仿真 结果仅供参考,还应留有足够的余量。7 d1 ?. B- f# F4 z3 \" j
|
|