原创 调试总结

2008-10-10 22:58 4937 6 7 分类: FPGA/CPLD

调试就是系统出现了问题,找到问题并改正的过程。硬件调试等于黑箱调试,因为看不到系统里那一地方出现了问题和为什么出现了问题,需要用一定的方法和经验去排查它,找出错误所在地方。如何快速定位问题,下面给出一家之言。

1.1.   调试流程

要定位问题,先分析问题可能产生的环节,即从硬件系统的实现过程来分析可能产生的问题。如图1所示,硬件系统的实现可分成8个步骤。


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />



图1:硬件系统的实现过程


 


1.系统设计


系统设计师根据需求报告设计出概要设计和详细设计,并把系统分成软件部分和硬件部分。


2.原理图设计


硬件工程师根据设计要求,画出原理图。可能出现些致命错误,比如:上下拉电阻搞反了,管脚连错了等等,在进行下一步流程前要仔细检查。


3.PCB设计


硬件工程根据原理图画出PCB,主要考虑关键信号的信号完整性和电磁兼容性。高频接口部分最容易出现问题。


4.PCB制作


目前PCB板在出厂前已进行了检验,都能保证质量,所以PCB制作出现问题的可能性就不考虑了。


5. 焊接


如果是第一板,不建议一次焊上,可分块焊接、分块调试吧。可按先电源,后芯片,芯片的焊接顺序可按数据流的方向依次焊接调试。焊接时注意:虚焊,焊短路,焊锡滴滴在PCB板或芯片管脚上,器件焊错(比如电容焊成电阻,焊的电阻大小不一致,焊的位置不对)。特别是焊短路,每焊一个芯片应用万用表检查是否短路,芯片上电后是否发烫。


6. 验证各芯片是否正确工作


首先保证芯片能工作,要从电源、时钟和复位来看:确保芯片的电源稳定和电压符合要求;芯片如外接晶振,要确保时钟输入正确;复位信号要确保存在、存在时间长短,及系统多个复位信号的先后顺序。其次要保证芯片正确工作,这里所说的正常工作是指按照指定的方式工作,大部分芯片都有几种工作模式,需要设置芯片的工作参数和外围配置电路。大部分前期调试失败,主要是没有按datasheet的要求设置参数,事后,一般会发现是阅读datasheet不仔细,或者是没有完整阅读手册(或没有阅读到关键部分)。


7. 验证各种总线/接口是否正确互联


在系统中,芯片、板卡、设备之间,是能过各种总线来连接的。芯片间总线有:SPI、I2C、UART三种串行总线,和并行总线;板卡间总线有:ISA,PCI,PCIE;设备间总线有:USB,IE1394,RS232,CAN。常用的显示接口有VGA、DVI 和HDMI。在调试过程中,要确保系统上的各种总线/接口正确互联,首先按照总线协议,要确保物理特性满足,特别是电压电平要求,再确保能正确工作,特别是时序方面和多个实体互联的总线不要冲突。该过程也是软硬联调的部分,出现问题可能性极高,它占了绝大部分的调试时间。


8. 软件编程


软件编程中,主要实现整个系统的灵魂,一般是在一些可编程的芯片里实现,如单片机、ARM和FPGA等。


在调试过程,按照上面的8个步骤来定位错误,虽然慢,但个人认为确是最有效的方法。当然在调试过程中,各步骤是不可分的,比如焊接和验证芯片是否正确工作两个步骤,是反复的过程。当每进行一步,就必须确保前一步骤没有。


1.2.   个人体会


 1.2.1.      三个关键点


 


上面介绍是一般的调试流程,但在这过程中,有三个关键点要注意:电源、时钟、复位。电源、时钟、复位是系统里的各芯片工作的三要素,所以一定要确保其没有问题。


1.保证电源的稳定可靠:对于系统来说,电源提供给各路的电压要稳定并符合要求,才能确保整个的各个模块正常工作。在调试时,芯片(特别是模拟芯片)不能正常工作,或时好时坏,这时要检查芯片是否烧坏,电压是否稳定,电压是否够(最好高于标准值,但不要大于最大容限)。


2.保证时钟的稳定可靠:时钟是系统和芯片的工作时动作的触发条件。在调试时,要注意:a)有时钟信号,晶振正常工作。在调试时,由于虚焊或焊短路等原因,造成晶振没有工作。b)时钟信号达到芯片的管脚时信号质量要保证。由于时钟速率越来越高,信号边缘速率越来越快,设计PCB时的存局和走线越来越复杂,造成时钟信号在传输过程中不能保持其完整性。可用示波器检测,如看到非常清晰的正弦波,则说明时钟信号质量好;反之,波峰削平、波型歪斜等,则要检查时钟电路。c) 几个芯片同用一个时钟时,要保证同步到达。可用示波器两个通道来检查时钟的相位是否一致。


3.保证复位的稳定可靠:复位信号使系统和芯片的状态跳转到可知的起始状态。在调试时,由于原因可能没有复位信号,或者一直处于复位状态。根据芯片手册,查看复位信号的最短时间是否满足。对于复杂系统中,各芯片的复位时间不一样,有先后次序的,可用示波器多个通道观察是否满足,在设计时,可用专用的复位芯片管理各路复位信号。

1.2.2.      两方面要仔细:

一要仔细阅读芯片手册,二要仔细记录调试过程中的异常现象。在调试时,应仔细阅读芯片手册中的配置(主要是操作模式)、管脚定义(是否复用、电压电平)、协议、时序图;有人统计说,70%以上的调试错误是由于没有仔细看手册等文档。在记录异常现象时,一定要记下来前几步的操作,这样可以重复模拟,如果重复出现三次以上,应考虑该地方必有问题存在,应及时解决;如果该现象是由某特定原因造成的,而没有及时重复模拟发现问题所在,可能造成后期出现问题多,而无从下手。

文章评论1条评论)

登录后参与讨论

用户1773510 2014-7-14 00:15

WQ-CHANGE

用户400850 2008-6-15 10:45

谢谢!

用户1384026 2008-6-14 19:54

还有这个网址,http://avr.cnta.net/USB-RS232/USB-RS232.html

用户1384026 2008-6-14 19:52

不支持,只能做普通的下载器。 关于USB转串口可以看下这个网站有资料。 http://www.recursion.jp/avrcdc/

用户400850 2008-6-14 16:24

请问楼主该下载器支不支持USB转串口?
相关推荐阅读
用户143696 2009-09-19 00:45
FPGA的可靠性设计
最近在做项目时,在实际运用环境中老出问题.在实验室跳没问题,仿真更是没有问题. 在实际运用环境中,比较苛刻,电磁干扰什么比较多,虽说FPGA是数字的,可靠的.但一旦干扰了就容易出错,甚至错误累加.在设...
用户143696 2009-09-06 00:11
synplify9.62
http://rapidshare.com/files/138894553/Synplicity.Synplify.Premier.v9.4.with.Identify.v3.0-Lz0.part1....
用户143696 2009-04-17 09:38
Altera的几个常用的Synthesis attributes
Altera的几个常用的Synthesis attributes<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office...
用户143696 2009-03-31 16:07
怎么才能用SignalTAP II正确地观察wire和reg?
怎么才能用SignalTAP II正确地观察wire和reg?下面的一篇文章写得相当好,回答了我很久以来的疑问:即用SignalTAP II不能正确的观察wire信号,其实是综合可能把该信号优化掉了....
用户143696 2009-02-19 16:18
Tcl中binary format 和binary scan命令分析
在Tcl中,用binary format 和binary scan来处理二进制文件用得比较多,但这个两个命令比较难理解。我花了一天的时间,终于略知一二。现和大家分享下。<?xml:namespa...
用户143696 2009-02-19 11:39
如何利用altera 给出的megafunction配置成自己想要的FIFO和RAM
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 在FPGA设计过程中,一般都要用到...
我要评论
1
6
关闭 站长推荐上一条 /2 下一条