热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

排除法和替代法在工程开发中的妙用

今天分享一个刚刚解决好的硬件产品问题,这个问题的解决过程中用到的思维方法其实是很值得学习的。工厂拿回来了好几片刚刚贴好的板子,每一片板子上电后

今天分享一个刚刚解决好的硬件产品问题,这个问题的解决过程中用到的思维方法其实是很值得学习的。

工厂拿回来了好几片刚刚贴好的板子,每一片板子上电后(电池供电)都有固定频率的中频噪声。

该板子的背景情况介绍:

该产品之前早已大量出货,并且已经出货的板子声音很干净,没有任何的噪声,这次只是更换了相关的音频接口、还有一些元器件更换了供应商。

问题排查过程:

先附上系统参考图

1、从源头开始分析,进入耳机的信号来自三处:音频源1、音频源2以及DAC输出。这里我依次断开这三处音频源,发现噪音来自于DAC输出。

2、接着开始用示波器测量DSP发给DAC的数字信号,发现如下波形,很显然,噪声来自于DSP。为了确定噪声信号是否真正由DSP产生,这里我继续追踪ADC进入DSP的信号,发现数字信号并不是一条低电平直线(如果没有信号则应该是低电平),而是如下波形。到这里,发现噪声信号很有可能来自于ADC。于是我将ADC输入直接接地,再测量ADC进入DSP的信号,发现这个时候就是一条低电平的静止的直线了,再听听耳机,噪声已经消失。所以至此,可以很明确的说,噪声是来自于ADC,并且准确的说是来自于ADC的输入信号。

3、接着继续向信号的来源的上游探,设备上面有一个转盘式电位器,这个是一个比较大的嫌疑,因为曾经确实出现过由转盘式电位器带来噪声的案例。于是我开始把目标转移到这个上面,我用镊子将电位器旁路掉,发现噪声依然存在,说明噪声并不是来自于转盘式电位器。

4、继续往前探,这个时候到了运放的输出了,我将运放输出切断,噪声消失,难道噪声由运放产生吗?为了明确这一点,我把运放输出与后面的信号通路恢复连接,把输入信号切断,发现噪声依然存在,说明噪声肯定不是来自于音频接口,这次我可以肯定噪声确确实实来自于运放。

5、难道问题来源于运放芯片本身或者它的周边参数?为了验证这个,我拿回来正常的板子(就是大量出货过的产品),将上面的运放和运放周边的参数一一更换到问题板上,噪声依旧。说明并不是这个问题,为了保险起见,我再用万用表测量了问题板上运放的各个管脚电平,与正常板上的运放各管脚电平完全一致,这进一步说明运放是好的,运放周边的参数也是对的。

6、到这个时候,好像山穷水尽了。没思路了。为了进一步确定噪声来自于这一块的运放及周边电路,我将有问题的PCBA的运放输出线路统统割掉,把正常的PCBA的运放输出飞线到问题板的后端电路,发现并没有噪声,话筒说话也正常。说明问题确确实实来自于这一块电路。这一块电路可以怀疑的对象无非就是运放的正相输入脚、反向输入脚、运放输出脚、运放的供电脚、运放的GND脚,既然电路原理并没有问题(如果原理有问题,那么之前的PCBA也必定有噪声),那么噪声无非就是来自于上面的这些怀疑对象了。

7、为了确定噪声是来自于运放的具体哪个管脚,我首先将问题板的运放的反向输入端管脚翘起来(就是脱离PCB焊盘),然后将正常板的对应管脚信号拉过去,发现噪声消失,而且接上话筒,声音一切正常。到这里,我隐隐约约感觉问题就来自PCB,为了验证这个猜想,我将问题板的运放周边参数统统去掉,把那个翘起来的脚又重新焊到PCB上,把正常板的对应管脚信号拉过去,噪声又出现,于是我确定噪声肯定来源于PCB。

8、但是这解释不通啊,PCB没有改过,而且之前还大量生产过,未曾出现过任何问题。怎么办,到了这个时候,思维再一次山穷水尽了。此时,我决定打开PCB文件一探究竟,终于发现重大问题,PCB为四层板,我发现中间层有两条信号信号的倒影直接与上面那个运放的两组信号输入脚的倒影重叠,我用万用表测了中间层的信号线与输入管脚之间的阻抗,∞,说明没有短路。但是这也不能排除就不是这个中间层信号线造成的,接着我追踪该信号线的源端,发现它是LED灯扫描芯片的输出脚,会产生固定频率的扫描信号,到此时,我基本断定噪声一定就是来源于它,为了验证我的想法,我先将运放部分的一切电路和参数恢复,然后将LED灯扫描芯片的这两个管脚翘起来,噪声消失。到此为止,噪声源彻底被找到。下图是中间层信号线与运放两组管脚的位置关系:

 

【总结】

1、其实上面用到了两种思维方法:排除法和替代法。信号逐级追踪的过程其实就是排除法,先排除了音频源1和音频2,接着排除了ADC、DSP和DAC芯片,再接着排除了转盘电位器,之后才将问题范围缩小在运放这一块。到了这里用排除法已经没用了,开始采用替代法,通过飞线方法用正常板的参数替代问题板的才最终将问题锁定在PCB上。这两种思维方法在排查硬件问题中非常常用,几乎是终极办法。甚至,排查软件问题也照样算得上是终极办法。也许,你可以通过其他办法解决这个问题,也许你首先就会想到噪声可能根本就来自于LED灯扫描芯片,因为噪声频率与扫描频率比较接近,但是这并不是一种系统思维方法,遇到稍微复杂一点的问题时往往会找不到方向。

2、山穷水尽疑无路,柳暗花明又一村。上面用排除法往前探,第一次遇到山穷水尽,此时开始采用替代法,于是柳暗花明又一村。当把问题锁定在PCB上的时候,再一次遇到山穷水尽,因为PCB已经大量出货过,而且没有更换制版商。这个时候就要有思维上的突破了,PCB本身设计存在极大的缺陷,加上纸板商两次制版加工材料不同以及其他环节不同,就造成了中间层信号线的信号以另一种形式传入运放输入脚,于是噪声被后级不断的放大,这个思考就是一种思维上的突破,于是再一次柳暗花明又一村。

【感悟】

物理学大师杨振宁在他的《美与物理学》一文中,把物理学分为四种内涵:实验、唯象理论、理论架构和数学。不同的科学家分别专注于不同的内涵,布拉赫(T. Brahe , 1546 - 1601)是实验天文物理学家, 活 动领域是(1)。 他做了关于行星轨道的精密观测。 后来开普勒 (J. Kepler , 1571 - 1630)仔细分析布拉赫的数据, 发现了有名 的开普勒三大定律。 这是唯象理论(2)。最后牛顿创建了牛顿力学 与万有引力理论, 其基础就是开普勒的三大定律。 这是理论 架 构 (3)。 海森伯的灵感来自他对实验结 果 ( 1 ) 与 唯象理论(2)的认识, 进而在摸索中达到了方程式 (H)。狄拉克的灵感来自他对数学(4)的美的直觉欣赏,进而天才 地写出他的方程(D)。 他们二人喜好的,注意的方向不同,所以他 们的工作的领域也不一样。

事物的发展总是存在阶段性,但是从一个阶段到另外一个阶段总是应该有一些突破性的东西来推进。

 

 


推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 用友深耕烟草行业25年,提出数字化转型建议
    本文介绍了用友在烟草行业深耕25年的经验,提出了数字化转型的建议,包括总体要求、主要任务、发展阶段和六位一体推进举措。通过数字化转型,烟草行业将注入新动能,实现高质量发展。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
author-avatar
xda6962962
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有