数字硬件设计调试攻略
工程设计项目中最令人振奋的时刻之一就是第一次将硬件移到实验室准备开始集成测试的时候。开发过程中的这个阶段通常需要很长时间,也会对所有的项目工程师造成很大的压力。不过,现有的工具和方法能减轻压力,帮助推进项目进展。
让我们来看一下,如何在将设计推进到更高层面的过程中最大限度地减少可能发生的任何问题,以及如何快速顺利地通过调试阶段。
从第一天起就要设想如何进行测试
所有工程师都知道,随着开发进程的推进,修改问题的成本也会相应增加。一旦设计方案最终定型并投产,再修改引脚输出错误的成本必然高于早期设计评估时修改的成本。此外,在测试与集成方面也同样存在成本问题,越早考虑硬件、FPGA、系统等的测试问题并编写测试规范,就越便于工程设计团队考虑到必要的测试点、连接和功能性。测试的目的是确保能推出可满足用户具体要求的安全系统。因此,我们必须确保测试能体现所有要求,而功能测试则要求应能实现流程传递并可跟踪设计要求(即每个测试均应满足其所对应的需求)。
此外,对设计验证模型进行编辑也是一种非常好的做法,能详细说明测试每项功能要求的方法,如具体的测试、分析或读取方法(条件是在另一个项目上较早明确或测试了相关要求)。文档(图1)可能还涉及哪些测试需用于设计验证,以及哪些用于生产运行。在项目阶段早期即完成上述文档,可确保系统设计团队和测试设备的设计团队获得明确的基本方法。
但是,在进行功能性测试之前,设计工程师还必须确保底层硬件的正确性。他们通常需要包含电源、性能和硬件基本验证等内容的硬件级测试规范,而硬件基本验证需在功能测试之前进行。
明确需要何种测试设备以及什么样的性能非常重要,例如需要分析信号发生器和逻辑分析器是否能提供足够的存储深度和工作频率?此外,还需明确是否需要更专业化的测试设备,如任意波形生成器、高稳定性频率参考等。
设计阶段应包括的内容
在硬件的设计过程中,或许应包括几项设计特性和功能,以使电路板的测试能够更方便。相关要求可能比较简单,也可能较有深度。
最简单也是最常见的测试规定是在所有电压源上放置测试点,这避免了探询焊接点时造成损坏的可能性。不过,还有一种比较好的办法,是让连接接地(0V)返回的焊盘靠近电压测试点,从而简化测试工作。若采用高值电阻来保护这个测试点,就能限制测试中意外短路情况下的电流。我们也可考虑给这些焊盘添加测试引脚,使其连接到可随后在生产运行期间记录结果的自动测试系统上。
此外,监控时钟和复位输出的功能至关重要。因此,在复位线路上放置测试点不矢为一种好办法。另外,还应确保正确端接不使用的时钟缓冲器并添加测试点,从而便于对时钟进行探询。此外还可考虑添加测试端口,通过信号发生器、逻辑分析仪或其他测试工具来实现信号的注入和提取。
为了帮助原型设计达到功耗要求,如果可能,通常比较好的做法是在电压调整器的输出端串联低值电阻(10毫欧、100毫欧等),以便精确测量电源轨上的电流。
![](../img/eep-analog/analog-32170th1ci54jdtz.jpg)
图1:非常实用的工具:用验证表详细列出测试每个功能要求的方法
众多FPGA器件也都能提供采用温度二极管监控芯片温度的方法。需要想办法为二极管提供恒定电流。测定芯片温度有助于我们确保结温不超出额定值。
要确保所有组件都适当就位,明确是否符合设计方案的要求,特别是如果只有一个上拉或下拉电阻应就位并选择配置模式时更是如此。
检查完印刷电路板上的各组件之后,下一步就是首次给电路板加电。对于任何工程师来说,这都是非常紧张的时刻。但是,在设计阶段(测试点、电流感测电阻等)编制的测试规定将在这时发挥很大的协助作用。第一步是确保负载点和其他稳压器的功率输出不发生短路返回。您可能会在带载器件(具有高电流要求)的电源轨上发现低阻抗,不过阻抗应大于1欧姆。
对于业界率先实现的同类型设计(即新产品首次进行实际构建)而言,我们或许应该制定更深入的设计决策,例如将电源与下游电子器件进行分离处理。这样,我们就能确保电源和上电顺序都能正常工作,从而避免下游组件的应力过大或损坏。更详尽的前端设计阶段有助于测试工作的例子还有一个,那就是确保JTAG端口除了在系统中对所有FPGA或处理器进行编程之外还能有更多用处,例如通过边界扫描测试来进行初始的硬件验证等。边界扫描测试对在测试阶段早期减少硬件设计风险非常有用,同时也要求对设计方案进行优化,以确保最大限度地覆盖边界扫描器件。
明确硬件特性
系统第一次到达实验室时,您要做的第一件事情就是确定硬件底层模
- 数据采集硬件:如何避免缺陷与误差(07-01)
- 多路信号采集器的硬件电路设计(10-21)
- 基于Nios II的数字音频录放系统的设计(01-08)
- 锂离子电池智能充电器硬件的设计(01-16)
- 基于CAN总线的A320模拟器硬件仿真方案研究(03-21)
- 基于CPLD的线阵CCD驱动电路设计(01-24)