有时思维定式会让我们犯错,特别是在硬件设计中,需要不断总结经验和教训。
第一,降低成本
现象1:这个高/低电阻是多大的电阻,关系不大,请选择整数5K。
评论:市场上没有5K的阻力。最近的是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%精度的电容也只有上述几个值。如果选择其他值,则必须使用更高的精度。费用会增加几倍,但得不到任何好处。
现象2:面板上的指示灯选择什么颜色?我觉得蓝色比较特别,选那个吧。
评论:不管其他红色、绿色、黄色、橙色和其他颜色的包装尺寸(5毫米以下),成熟了几十年,价格一般在5美分以下,但蓝色几乎是3-4年后发明的。技术成熟度和供应稳定性不好,但价格贵4 ~ 5倍。目前,蓝色指示灯仅在视频信号显示等其他颜色无法替代的情况下使用。
现象3:这个逻辑作为74XX的门电路也很好,但太俗气了,请使用CPLD。看起来高级多了。
评论:74XX的门电路只有几毛钱,但CPLD至少要几十块钱。(GAL/PAL只有几美元,但公司不建议使用。)费用增加了N倍,生产、文件等工作增加了几倍。
现象4:需要最快选择所有芯片(EM、CPU、FPGA等)的系统要求太高。
评论:高速系统并非所有部分都在高速状态下工作,设备速度每提高一个级别,价格就会上涨近一倍,对信号完整性问题有很大的负面影响。
现象5:这个主板的PCB设计要求不高,请用细线自动布。
评论:自动布线必须占用更大的PCB面积,同时要比手动布线多出几倍的洞。在大量产品中,PCB制造商降价考虑的因素除了业务因素外,还有线宽和过孔数量,分别影响了PCB的成品比例和钻头的消费量,从而找到了降低供应商成本的理由。
现象6:只要程序稳定就行了。代码有点长。效率下降不是关键。
评论:CPU的速度和存储空间都是用钱购买的。如果多花几天时间写代码,就能提高程序效率。降低CPU时钟速度和减少存储容量的成本绝对是经济实惠的。CPLD/FPGA设计也差不多。
二、低功耗设计
现象1:我们的系统是220V功率,所以不必在意功耗
评论:低功耗设计不是为了节能,而是有更多的优点:降低电力模块和冷却系统成本,减少电流可以减少电磁辐射和热噪音的干扰。如果设备温度降低,部件寿命将相应延长(半导体部件的工作温度提高10度,寿命将减少一半)
现象2:这些公交车信号都是用电阻拉的,放心
评论:信号要上升的原因有很多,但不是都要拉。244/245隔离总线和其他信号全部上传后,几瓦的功率将被这些电阻消耗掉(不使用8美分)
现象3:如何处理CPU和FPGA上未使用的I/O端口?先把它清空,以后再说
评论:如果未使用的I/O端口悬浮在空中,受到外界的轻微干扰,会成为反复振动的输入信号,MOS设备的功耗基本取决于门电路的翻转次数。拉它的话,最好设置输出,因为每个针脚也有微安电流(当然,外部不可能有其他驱动信号)
现象4:这个FPGA还有这么多门,请尽情发挥吧
评论:FGPA的功耗与使用的触发器数和翻转次数成正比,因此同一型号的FPGA在不同电路的不同时间功耗可能会相差100倍。最大限度地减少高速翻转的触发器数是降低FPGA功耗的根本方法。
现象5:这些小芯片功耗很低
评论:内部不太复杂的芯片功耗很难确定。主要由针脚的电流决定。ABT16244,没有负载,耗电量大约不到1毫安,但其指标是可以驱动每发60毫安的负载(例如与几十欧姆一致的电阻)。也就是说,总负载的功耗最高为60 * 16=
现象6:内存中有这么多控制信号,我这个主板只需要用OE和WE信号。只挑一块接地。这样,读作业的时候数据会快得多。
评论:大多数存储功耗,不管OE和WE如何,都比片无效时大100倍以上,因此,如果使用CS控制芯片并满足其他要求,则必须最小化片脉冲的宽度。
现象7:这些信号怎么都受到了冲击?只要搭配得好,就能消失
点评估:除了一些特定信号(如100BASE-T、CML)外,都有过充。只要不大,就不一定要匹配。匹配也不是最匹配的。TTL的输出阻抗不到50欧姆,有的不到20欧姆,如果使用这么大的匹配电阻,电流会变得很大,耗电量无法接受,另外的信号振幅也会变得很小,无法使用。此外,一般信号在输出高评价和输出低评价中输出阻抗不相同,无法准确匹配。因此,对TTL、LVDS、422等信号的匹配只要过满就可以接受。
现象8:降低功耗是硬件人力,与软件无关
评论:硬件只是舞台,唱戏是软件。总线上几乎所有芯片的访问,所有信号的反转几乎都是由软件控制的。如果软件能减少外部内存访问次数(使用寄存器变量、使用内部缓存等)、及时响应中断(中断往往包括低水平有效、抗拉能力)和其他争用。
三、系统效率
现象1:这个主频100M的CPU只能处理70%,换个200M的主频就可以了。
评论:系统的处理能力涉及多种因素,通信业务中的瓶颈一般在存储上,CPU再快,外部访问速度也没有用。
现象2: CPU使用更大的高速缓存,应该很快。
分数:高速缓存的增加不一定能提高系统性能,在某些情况下,关闭高速缓存反而比使用高速缓存快。原因是需要多次重复使用移动到缓存中的数据,以提高系统效率。因此,在通信系统中,通常只打开命令高速缓存,即使打开数据高速缓存,数据高速缓存也仅限于部分存储空间,如堆栈部分。此外,程序设计必须同时考虑缓存的容量和块大小。这包括键码循环体的长度和跳跃范围。这意味着,如果一个周期比缓存大一点,并且重复,则可能会很惨。
现象3:这么多任务到底是中断还是查询?还是停止更快?
评论:中断的实时性很强,但不一定快。如果中断任务特别多,这不会退出,随后又会继续,一会儿系统就会崩溃。任务数量多,但频繁的话,CPU的大量能量用于进出中断的开销,系统效率非常低。切换到查询方式会大大提高效率,但查询可能无法满足实时要求。因此,最好的方法是在中断中查询。也就是说,通过一次中断处理和终止所有累积的任务。现象4:存储接口的计时都是制造商的默认配置,不需要修改
评论:BSP的存储接口设置的默认值设置为最保守的参数,在实际应用程序中,必须结合总线运行频率和备用周期等参数,合理配置。RAM的访问周期为70ns,总线频率为40M时,降低频率(例如设置为3周期访问时间,即75ns)可以提高效率。如果总线频率为50米,则必须设置为4个周期,但实际访问时间将降低到80ns。
现象5:不能处理一个CPU,如果用两个分布处理,处理能力可能会增加一倍。
评论:搬砖需要两个人的效率是一个人的两倍。画画方面,再有一个人只能帮忙。使用几个CPU需要对业务有更多的了解,最大限度地减少两个CPU之间的调整成本,使1尽可能接近2,不小于1。
现象6:该CPU配备了DMA模块,可用于移动数据。
评论:实际DMA在硬件上抢占总线后,同时启动两端设备,在一个周期内读取这边,读取那边。(David Assell,Northern Exposure(美国电视剧),MART)但是CPU中内置的很多DMA只是模拟,在启动每个DMA之前,需要做很多准备工作(起始地址和长度等),传输时经常先在芯片内暂存,然后再写。也就是说,一次移动一次数据需要两个时钟周期。比软件快一点。(无指示、循环跳跃等无进一步操作)因此,此DMA仅适用于大数据块。
四、信号完整性
现象1:这些信号都经过了模拟,绝对没问题。
评论:模拟模型不能和实物完全一样。其他批次处理的实物也可能不同。更不用说模特了。再加上实际情况千差万别,模拟也不可能做到所有的可能性,尤其是相声。有人劝告说,单板上只要有特定长度的包,就容易丢失包。最后一个原因是,长度字段的值以0xFF出现在公交车上时,干扰相邻的WE信号,无法写入RAM。其他数据也会对WE造成干扰,但干扰在允许范围内,但如果8位总线同时从0更改为1,附近的信号将无法承受。结论是,仿真结果仅供参考,应留出足够的余量。
现象二:100米的数据总线应该算是高频信号,这个时钟信号频率只有8K,所以问题不大。
评论:数据总线值通常从控制信号或时钟信号的一个边缘采样。只要在这条边上保持足够的设置时间和保持时间就可以了。即使在这个范围之外有干涉,过度充实也不会产生太大影响。(当然,最好不要超过芯片能承受的最大电压值。)但是时钟信号无论频率有多低(其实频谱范围很广),其边缘都是关键。现象3:因为是数字信号,所以边缘陡峭的话,陡峭的话就好了。
评论:边缘越陡峭,频谱范围越广,高频部分的能量就越大。频率高的信号更容易受到辐射(例如微波电台可以做成手机,长波电台在很多国家不能做到)。此外,很容易干扰其他信号,电线上的传输质量变差,可以尽可能使用低速芯片。
现象4:为了确保干净的电源,去偶数电容是多益线
评论:一般来说,偶数电容越多,电源越软,但也有不利因素,如过多会浪费成本、接线困难、电击电流过大等。电击电流、电击电流等)设计偶容量的关键是选择容量、调整地点。一般芯片手册有偶容量设计参考,最好按照手册来做。
现象5:信号匹配真的很麻烦。怎么样才能很好地匹配?
评论:总体原则是,信号在导线上超过跳跃时间时,信号的反射问题很重要。信号反射的原因是电路阻抗不平衡造成的,匹配的目的是为了接近驱动端、负载端和传输线的阻抗。
但是,能否很好地匹配也与PCB中信号线的拓扑结构有关。传输线的分支、通孔、拐角、引脚插件、位置和接地距离的变化会改变阻抗。这些因素使反射波形变得非常复杂,难以匹配,因此高速信号仅使用点对点方法。
五、可靠性设计
现象1:这种单板已经少量生产,经过长时间的测试,没有发现任何问题
评论:硬件设计和芯片应用程序必须符合相关规范,特别是芯片手册中提到的所有参数(内压、I/O级别范围、电流、计时、温度PCB布线、电源质量等),单靠测试是无法确认的。公司发现很多产品都受到了惨痛的教训,产品卖了一两年,IC制造商换了生产线,我们的主板就不旋转了。原因是别人的芯片参数发生了一些变化。但是因为没有超出手册的范围。如果你以手册为准,他怎么变都不怕。如果参数超出手册的范围,可以要求他索赔。(如果这个时候你的板子还能转动,你的可信度就更大了。)
现象2:这部分电路只要要求软件就不会有问题。
评论:硬件上的很多电气特性是由软件直接控制的,但软件经常发生事故,所以无法预测程序飞走后会发生什么动作。设计师无论软件做什么工作,都要确保硬件在短期内不会受到永久性损坏。
现象3:如果出现用户操作错误,不能怪我。评论:要求用户严格遵循手册是对的,但如果用户是人,有错误的时候,误触一个按钮就停止工作,插错插头就不能烧板。因此,用户可能犯的各种错误必须加以保护。
现象4:这块板子坏了的原因是对面的板子出了问题,不是我的责任
评论:对各种对外硬件接口要有足够的兼容性。对方信号不正常,所以不能休息。不正常应该只影响相关的部分功能,其他功能应该正常运行,不能完全罢工,甚至不能造成永久性损伤,界面恢复后应该立即恢复正常。