硬件设计怎么做,设计软件流程分析?( 三 )


现象六:这个CPU带有DMA模块 , 用它来搬数据肯定快
点 评:真正的DMA是由硬件抢占总线后同时启动两端设备 , 在一个周期内这边读 , 那边些 。但很多嵌入CPU内的DMA只是模拟而已 , 启动每一次DMA之前要做 不少准备工作(设起始地址和长度等) , 在传输时往往是先读到芯片内暂存 , 然后再写出去 , 即搬一次数据需两个时钟周期 , 比软件来搬要快一些(不需要取指令 ,  没有循环跳转等额外工作) , 但如果一次只搬几个字节 , 还要做一堆准备工作 , 一般还涉及函数调用 , 效率并不高 。所以这种DMA只对大数据块才适用 。
四:信号完整性
现象一:这些信号都经过仿真了 , 绝对没问题
点 评:仿真模型不可能与实物一模一样 , 连不同批次加工的实物都有差别 , 就更别说模型了 。再说实际情况千差万别 , 仿真也不可能穷举所有可能 , 尤其是串扰 。曾经 有一教训是某单板只有特定长度的包极易丢包 , 最后的原因是长度域的值是0xFF , 当这个数据出现在总线上时 , 干扰了相邻的WE信号 , 导致写不进RAM 。其 它数据也会对WE产生干扰 , 但干扰在可接受的范围内 , 可是当8位总线同时由0边1时 , 附近的信号就招架不住了 。结论是仿真结果仅供参考 , 还应留有足够的余 量 。
现象二:100M的数据总线应该算高频信号 , 至于这个时钟信号频率才8K , 问题不大
点评:数据总线的值一般是由控制信号或时钟 信号的某个边沿来采样的 , 只要争对这个边沿保持足够的建立时间和保持时间即可 , 此范围之外有干扰也罢过冲也罢都不会有多大影响(当然过冲最好不要超过芯片 所能承受的最大电压值) , 但时钟信号不管频率多低(其实频谱范围是很宽的) , 它的边沿才是关键的 , 必须保证其单调性 , 并且跳变时间需在一定范围内 。
现象三:既然是数字信号 , 边沿当然是越陡越好
点评:边沿越陡 , 其频谱范围就越宽 , 高频部分的能量就越大;频率越高的信号就越容易辐射(如微波电台可做成手机 , 而长波电台很多国家都做不出来) , 也就越容易干扰别的信号 , 而自身在导线上的传输质量却变得越差 , 因此能用低速芯片的尽量使用低速芯片 ,  。
现象四:为保证干净的电源 , 去偶电容是多多益善
点评:总的来说去偶电容越多电源当然会更平稳 , 但太多了也有不利因素:浪费成本、布线困难、上电冲击电流太大等 。去偶电容的设计关键是要选对容量并且放对地方 , 一般的芯片手册都有争对去偶电容的设计参考 , 最好按手册去做 。
现象五:信号匹配真麻烦 , 如何才能匹配好呢?
点 评:总的原则是当信号在导线上的传输时间超过其跳变时间时 , 信号的反射问题才显得重要 。信号产生反射的原因是线路阻抗的不均匀造成的 , 匹配的目的就是为了 使驱动端、负载端及传输线的阻抗变得接近 , 但能否匹配得好 , 与信号线在PCB上的拓扑结构也有很大关系 , 传输线上的一条分支、一个过孔、一个拐角、一个接 插件、不同位置与地线距离的改变等都将使阻抗产生变化 , 而且这些因素将使反射波形变得异常复杂 , 很难匹配 , 因此高速信号仅使用点到点的方式 , 尽可能地减少 过孔、拐角等问题 。
五:可靠性设计
现象一:这块单板已小批量生产了 , 经过长时间测试没发现任何问题
点评:硬件设计和芯片应 用必须符合相关规范 , 尤其是芯片手册中提到的所有参数(耐压、I/O电平范围、电流、时序、温度PCB布线、电源质量等) , 不能光靠试验来验证 。公司有不 少产品都有过惨痛的教训 , 产品卖了一两年 , IC厂家换了个生产线 , 咱们的板子就不转了 , 原因就是人家的芯片参数发生了点变化 , 但并没有超出手册的范围 。如 果你以手册为准 , 那他怎么变化都不怕 , 如果参数变得超出手册范围了还可找他索赔(假如这时你的板子还能转 , 那你的可靠性就更牛了) 。

推荐阅读