详解工程师如何调试数字硬件设计?

最新更新时间:2014-02-23来源: OFweek 电子工程网关键字:调试  数字硬件设计 手机看文章 扫描二维码
随时随地手机看文章

  工程设计项目中最令人振奋的时刻之一就是第一次将硬件移到实验室准备开始集成测试的时候。开发过程中的这个阶段通常需要很长时间,也会对所有的项目工程师造成很大的压力。不过,现有的工具和方法能减轻压力,帮助推进项目进展。

  让我们来看一下,如何在将设计推进到更高层面的过程中最大限度地减少可能发生的任何问题,以及如何快速顺利地通过调试阶段。

  从第一天起就要设想如何进行测试

  所有工程师都知道,随着开发进程的推进,修改问题的成本也会相应增加。一旦设计方案最终定型并投产,再修改引脚输出错误的成本必然高于早期设计评估时修改的成本。此外,在测试与集成方面也同样存在成本问题,越早考虑硬件、FPGA、系统等的测试问题并编写测试规范,就越便于工程设计团队考虑到必要的测试点、连接和功能性。测试的目的是确保能推出可满足用户具体要求的安全系统。因此,我们必须确保测试能体现所有要求,而功能测试则要求应能实现流程传递并可跟踪设计要求(即每个测试均应满足其所对应的需求)。

  此外,对设计验证模型进行编辑也是一种非常好的做法,能详细说明测试每项功能要求的方法,如具体的测试、分析或读取方法(条件是在另一个项目上较早明确或测试了相关要求)。文档(图1)可能还涉及哪些测试需用于设计验证,以及哪些用于生产运行。在项目阶段早期即完成上述文档,可确保系统设计团队和测试设备的设计团队获得明确的基本方法。

  但是,在进行功能性测试之前,设计工程师还必须确保底层硬件的正确性。他们通常需要包含电源、性能和硬件基本验证等内容的硬件级测试规范,而硬件基本验证需在功能测试之前进行。

  明确需要何种测试设备以及什么样的性能非常重要,例如需要分析信号发生器和逻辑分析器是否能提供足够的存储深度和工作频率?此外,还需明确是否需要更专业化的测试设备,如任意波形生成器、高稳定性频率参考等。

  设计阶段应包括的内容

  在硬件的设计过程中,或许应包括几项设计特性和功能,以使电路板的测试能够更方便。相关要求可能比较简单,也可能较有深度。

  最简单也是最常见的测试规定是在所有电压源上放置测试点,这避免了探询焊接点时造成损坏的可能性。不过,还有一种比较好的办法,是让连接接地(0V)返回的焊盘靠近电压测试点,从而简化测试工作。若采用高值电阻来保护这个测试点,就能限制测试中意外短路情况下的电流。我们也可考虑给这些焊盘添加测试引脚,使其连接到可随后在生产运行期间记录结果的自动测试系统上。  此外,监控时钟和复位输出的功能至关重要。因此,在复位线路上放置测试点不矢为一种好办法。另外,还应确保正确端接不使用的时钟缓冲器并添加测试点,从而便于对时钟进行探询。此外还可考虑添加测试端口,通过信号发生器、逻辑分析仪或其他测试工具来实现信号的注入和提取。

  为了帮助原型设计达到功耗要求,如果可能,通常比较好的做法是在电压调整器的输出端串联低值电阻(10毫欧、100毫欧等),以便精确测量电源轨上的电流。

  众多FPGA器件也都能提供采用温度二极管监控芯片温度的方法。需要想办法为二极管提供恒定电流。测定芯片温度有助于我们确保结温不超出额定值。

  要确保所有组件都适当就位,明确是否符合设计方案的要求,特别是如果只有一个上拉或下拉电阻应就位并选择配置模式时更是如此。

  检查完印刷电路板上的各组件之后,下一步就是首次给电路板加电。对于任何工程师来说,这都是非常紧张的时刻。但是,在设计阶段(测试点、电流感测电阻等)编制的测试规定将在这时发挥很大的协助作用。第一步是确保负载点和其他稳压器的功率输出不发生短路返回。您可能会在带载器件(具有高电流要求)的电源轨上发现低阻抗,不过阻抗应大于1欧姆。

  对于业界率先实现的同类型设计(即新产品首次进行实际构建)而言,我们或许应该制定更深入的设计决策,例如将电源与下游电子器件进行分离处理。这样,我们就能确保电源和上电顺序都能正常工作,从而避免下游组件的应力过大或损坏。更详尽的前端设计阶段有助于测试工作的例子还有一个,那就是确保JTAG端口除了在系统中对所有FPGA或处理器进行编程之外还能有更多用处,例如通过边界扫描测试来进行初始的硬件验证等。边界扫描测试对在测试阶段早期减少硬件设计风险非常有用,同时也要求对设计方案进行优化,以确保最大限度地覆盖边界扫描器件。  明确硬件特性

  系统第一次到达实验室时,您要做的第一件事情就是确定硬件底层模块是否适合做进一步的测试。相关检查包括模块的初步通电测试,这是个紧张的过程。刚拿到模块,您希望确保其准确投产,能够成功实现首次通电启动。第一步就是确保所有的组件都各就其位,引脚“1”正确定位,而且任何带极性的组件都准确放置。设计中通常可能包含众多无需检查定位的组件,例如那些适合不同版本或不同构建选项的组件。

  如果您确定所有电源轨都没有短路,那么下一步就该加电了。初次加电时,我倾向于采用分两个阶段进行的方案。第一个阶段是采用低电压(0.5V)和低电流,以确保不错过信号层或电压轨之间的任何短路情况;第二个阶段是用正确的工作电压在设定的电流限值内加电,看看是否获得预期电流(不要忘了突入电流问题)。

  成功给设计方案加电后,下一步就是确定电源上电的排序、复位以及时钟是否能按设想的工作。切记,要确保复位时长超过所有时钟,并在释放之前处于稳定状态。

  明确硬件特性的下一步就是确保能通过JTAG链看到硬件,这使我们不仅能对FPGA编程,而且还能执行边界扫描测试。边界扫描测试能帮助我们快速测试器件之间的互连,通过测试存储器可确保其正常工作,如开发回环接插件也可回转输入输出。JTAG和边界扫描测试可在进一步详细的测试之前消除设计风险。

  致力于简化RTL

  如果您的设计在硬件和FPGA层面上都很复杂,那么简化版的RTL将有助于测试开发板以及FPGA和外设(图2)之间的接口。对高速接口设计而言,更是如此。我们可结合采用优化的RTL和赛灵思ChipScope工具来捕获数据,以及预载了数据模式的BlockBRAM来发挥激励作用。这种方法对采用ADC和DAC连接FPGA的情况尤其有用。在此情况下,您应发挥FPGA的可再编程特性来最大限度地进行设计开发,实现ADC和DAC的参数测试,比如噪声/功率比、无杂散动态范围和有效比特位数(effective-number-of-bit)计算等。

  此外,您还应该充分利用FPGA提供的资源,尤其是赛灵思SystemMonitor和XADC,非常有利于监控芯片上的电压轨,进而还能有助于验证在设计阶段所执行的电源完整性分析。此外,上述技术还能方便地报告芯片温度,这对环境测试以及芯片温度的功耗关联等都有帮助。

  多数情况下,简化RTL设计并采用FPGA提供的资源对精确定位未按预期工作的区域都有极大的帮助。

  遇到问题怎么办?

  在一步步推进测试计划的过程中,您可能会遇到一两个问题,如未能实现预期的功能,或在功能方面无法满足所需的性能水平。不要担心,我们能通过许多调查方法来确定问题根源和所需的纠正措施。

  在上述情况下,不要急于马上做出修改。首先,要重新检查设计方案,特别是原理图和数据手册等设计信息。如果问题与FPGA有关,则应检查引脚约束文件是否适合设计需要,因为有可能文件与设计不同步。

  如果一时找不出什么明显错误,则不妨发挥一下互联网的优势,去网上看看其他工程师是否也遇到过跟您同样的问题。网上有很多论坛,您可在那里向其他设计人员提问。Programmable Planet和赛灵思论坛都可为基于FPGA的设计提供广泛的支持。

  说到底,硬件调试是工程设计中极富挑战,但又极具收获的组成部分。若在设计早期阶段即考虑到测试问题,并在设计中包含测试所需的各元素,就能显着简化调试工作。采用Chip Scope、System Monitor和XADC等所有可用的资源来调试系统,外加合理利用传统测试设备,我们就能成功完成开发工作。

关键字:调试  数字硬件设计 编辑:探路者 引用地址:详解工程师如何调试数字硬件设计?

上一篇:基于FPGA的采集卡的图像增强算法应用研究
下一篇:一种自旋阀GMR隔离放大器的设计方案

推荐阅读最新更新时间:2023-10-12 22:35

MPLAB X IDE调试代码
1. 在Project 窗口中,选择项目或将其设为主项目(右键单击项目并选择“Set as main”)。 2. 单击“Debug Project”图标(或选择Debug Debug Project 或Debug Step Into)开始调试运行。 要暂停应用程序代码: • 单击“Pause”图标(或选择Debug Pause)暂停程序执行。 要再次运行代码: • 单击“Continue”图标(或选择Debug Continue)再次启动程序执行。 要结束代码的执行: • 单击“Finish Debugger Session”图标(或选择Debug Finish Debugger Session) 结束程序执行。 在使用调试功能时
[单片机]
S3c2410软件调试总结(三)
2410启动代码分析 这一章主要对目前广泛流行的2410启动代码进行分析:S3C2410的初始化代码主要涉及到对系统主要模块的配置、运行环境的建立、系统时钟、MMU等模块的配置,下面按执行顺序依次都各个部分进行分析: 程序入口:(ResetHandler) 在程序一开始,首先进行的一些操作主要保证初始化程序能够顺利的运行, 因此主要包括关闭WDT、中断,配置锁相环等。 配置memory接口 memory接口是确保数据访问正确的基本保障,此处主要配置SFR寄存器中0x48000000开始的memory接口寄存器组, 确保每个bank的位宽、访问类型(waitable)以及时序参数正确。如果没有特别的要求,一般来说时序参数
[嵌入式]
PLC的静态调试 PLC的工作方式有哪些
  PLC的静态调试是一种在PLC未启动或不运行任何程序情况下进行的操作,主要目的是检查PLC的硬件设置和连接是否正确,以确保PLC可以正确地处理和传输信号。在静态调试期间,通常会检查和配置PLC的输入输出信号,检查PLC节电模块的连接是否正确,检查PLC通讯口的设置是否正确等。需要注意的是,静态调试不能测试运行中PLC的程序逻辑,因为PLC没有运行任何程序。   PLC(可编程逻辑控制器)的工作方式主要分为两种模式:扫描循环和事件驱动。   1. 扫描循环模式   PLC通过不断地扫描输入信号来获取实时信息,然后对程序进行逐步执行,最后实现对输出信号的控制。PLC在扫描过程中会运行用户程序,包括读取输入信号、处理逻辑、更新内
[嵌入式]
ARM 调试 DAbt_Handler问题解决办法
问题: 我的ARM应用无法工作。当我在软件仿真器或者JTAG调试器中运行时,我注意到程序计数器(PC/R15)跳到了DAbt_Handler标签。问:这意味着什么?我该如何找到我程序崩溃的位置? 回答: 这是默认的Data Abort异常处理(函数)。你的应用尝试读或写某个非法的内存位置。你可以通过把R14(链接寄存器LC)的值减去8的方式计算该非法内存位置。减8可以计算指令队列中产生本异常的指令地址。如: R14的值是0x0000021E 0x0000021E-8=0x00000216。引发本异常的指令就在地址0x00000216处。 使用Unassemble调试命令反汇编该指令。本例中,在Command窗口(菜单:
[单片机]
【STM32】搭建基于Eclipse平台的STM32调试环境
以NuttX工程为例,硬件平台STM32F103C8。 1 导入工程 File- Import 选择Existing Code as Makefie Project,点击next 输入工程名字(nuttx)以及工程路径(/home/boots/nuttx) 2 配置MCU调试环境 应用市场下载MCU插件: Help- Eclipse Marketplace :输入mcu并搜索,点击Install进行安装 点击甲壳虫旁边倒三角,点击Debug Configurations...进行Debug 参数配置 双击GDB SEGGER J-LINK Debugging(若成功安装MCU插件,就会出现该选项),新建nuttx
[单片机]
【STM32】搭建基于Eclipse平台的STM32<font color='red'>调试</font>环境
Eclipse开发调试ARM裸机程序(四)赤裸裸的代码拷贝
在u-boot中有代码拷贝,所谓的移植都是看着高手们现成的代码照搬过来,没有问题就代表自己移植成功了,我也是这样的。但是这些代码真正的做了些什么,不知道,调试u-boot时候也想把这段代码调试一下,当时没有成功,这次裸机要见下它的真面目了。 我还达不到自己去写一个拷贝代码的程度,不过要是能把一个拷贝代码理解的很清楚也是很有帮助的。下面我就是这样做的,用eclipse单步调试拷贝代码,查看内存变化,切实感受代码拷贝。先上代码: @* @ File:head.S @ 功能:设置SDRAM,将程序到SDRAM,然后跳到SDRAM继续执行 @* .equ MEM_CTL_BASE, 0x4
[单片机]
Eclipse开发<font color='red'>调试</font>ARM裸机程序(四)赤裸裸的代码拷贝
基于Altera厂商的SignalTapII在线调试逻辑分析仪使用讲解
写在前面的话 在诸多数字系统设计书籍中,关于FPGA开发的基本流程,几乎都介绍到了嵌入式逻辑分析仪(或称之为虚拟逻辑分析仪)的相关知识,包括为什么要有这样的在线调试逻辑分析仪,它可以做什么,什么情况下使用,基于什么样的原理,有哪些逻辑分析仪等等。读者在知道了它的种种之后,存在脑袋中的很大疑问就是如何使用,那么本篇章梦翼师兄就将带领大家解开这些疑团,教给大家如何使用基于Altera厂商的SignalTapII对具体的工程进行在线调试。 背景知识 如果您是经验丰富的FPGA数字系统设计工程师或者已经掌握SignalTap II的原理或者更喜欢Follow Me直接动手操作,那么完全可以跳过这一小节。但是,梦翼师兄仍要照顾到FPGA
[测试测量]
基于Altera厂商的SignalTapII在线<font color='red'>调试</font>逻辑分析仪使用讲解
用单片机实现DSP在线调试的一种方法
  通常情况下,进行DSP系统开发调试时,都要配备一片SRAM芯片作为片外程序RAM。调试时,使用相应的仿真板将程序下载到SRAM中,这样DSP系统通过运行SRAM中的程序代码来实现相应的操作。可以看到,DSP系统调试时,关键是要将程序下载到SRAM中,因此如果能将程序代码通过单片机写入 SRAM中,则同样可以完成对DSP系统的调试。下面具体介绍在不使用仿真板的情况下,如何运用单片机AT89S5l对DSP芯片 TMS320LF2407进行在线调试。 1 硬件设计 1.1 TMS320LF2407在线调试的实现过程   完成DSP系统的调试,首先要将程序的源代码写入片外SRAM中。此时,单片机与SRAM组成一个系统,单片机可将
[嵌入式]
小广播
热门活动
换一批
更多
最新电源管理文章
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved