硬件开发流程:
图1:硬件开发流程
图2:硬件开发流程简图
开发流程经验:
图2 硬件开发流程框图2
基本思想是使每一步流程具有严密的逻辑;每一步流程可操作;每一步流程的输入、操作及输出受控。
1、硬件系统需求
硬件系统需求直接来源于对产品需求的分解。个人觉得产品需求下尽量不要存在产品系统方案或总体方案等文档,再由系统方案分解出硬件、电源、软件、机械等需求。原因在于:
(1) 个人觉得,这样的文档体系过于复杂,维护成本过高;
(2) 另一点是在实际工作中的体会,一般这样的文档是需要多个专业组共同维护的,这种公共文档存在极高的出错可能。一方面,在变更管理中,各个专业组的受影响文档往往仅会到专业组需求级,而“惯性”地遗忘系统方案这一上层文档,造成公共文档处于无人维护状态;另一方面,即使某一专业组在变更管理中对公共文档进行了维护,但由于这份文档牵涉到其它专业组,存在误更改的风险。最后,系统方案等上层文档往往是由系统工程师完成的,由于其所处的层次,往往在文档撰写中具有随意性,会将某个专业组的需求放大或加入不相关的需求,从而造成测试的困难。比如,系统方案对硬件的描述为“具有报警音功能,且音量符合XX标准。”音量符合XX标准,往往应该是整机需要验证的内容,但现在却加入到了硬件需求中,而硬件可能并不具备相关的标准知识和测试手段去验证它,这就造成了无法封闭的可能性。
在硬件系统需求阶段时,除了归档《硬件系统需求》文档外,还应当归档《硬件系统测试方案》。这样做的原因在于:在归档技术文件进行测试前,研发人员会对硬件各个版本进行自测,而此时测试方案未归档受控,这就存在“作假”的可能性,比如按照某一条判断标准,某项测试是不能通过的,如果分析认为此项FAIL不会带来影响,便不会从根本上去查找原因并进行更改,反而可能通过修改判断标准让此项测试得以PASS。另一方面,在需求提出时,测试方案也就应该提出了,测试项与需求项是一一对应的。
在撰写需求和测试需求时,个人认为需要注意以下几点:
(1) 对应性。硬件需求应与产品需求对应,不可多也不可少。少了则意味着需求没有被完全分解,有遗漏项;多了则意味着有错误的需求或不相关的需求。同理,测试方案应与需求对应,同样是不可多也不可少。
(2) 准确性。需求是可验证的。所谓可验证,最简单的方法就是让很多个从未从事过此项测试工作的人,按照撰写的测试需求,可以进行测试操作并且得出的结论一致。下面这个例子便属于需求不准确所造成的不可验证:某项测试标准为“LED灯发出明亮的红光。”粗略一看,似乎没有什么问题,但如果实际去测试,就会发现“明亮的”无法验证,或者说不同的人去测试很有可能会得出不同的结论。
2、硬件系统方案
根据硬件系统需求,得到硬件系统方案,为硬件单元划分、互连的重要参考文档,关系硬件系统的架构。
方案文档体现的是设计指导,是一种过程文档。虽然在一些审查中,不会被关注,因为审查一般的思维是“我需要实现什么需求?”和“这个需求最终有没有被验证实现”,因此其关注的重点更多在于需求类文档和测试类文档。但不能由此就轻视了方案文档。不同的设计虽然可以实现同样的功能,但一个好的稳定的方案,可以减少后续因不满足需求而导致的方案更改,同时还可使产品获得更高的性能、更低的成本。
3、硬件单元需求
硬件单元为最小可验证功能单元,不一定是指某一个单板,可能是实现某一个功能的所有单板组合。硬件单元需求来源于硬件系统需求,需与其对应。在归档硬件单元需求时,同样也需要归档硬件单元测试需求。
4、硬件单元方案
根据硬件单元需求,得到硬件单元方案,为硬件板卡原理图和PCB设计的重要参考文档。
5、硬件单元测试
硬件单元测试是对硬件单元需求的验证,其是在硬件单元测试方案的指导下进行的。
如前所述,硬件单元测试需在板卡技术文件生效后进行。除此之外,还需要将测试用到的软件和工装生效,如果借用以前的工装,需要保证工装在校准有效期内;测试设备也同样需在校准有效期内。这样,测试所需的输入便全部受控。
测试过程中,需要严格按照测试需求执行操作,并准确记录结果,每一项测试都应记录测试人和测试时间。
测试完成后,需要输出并归档测试报告。如果测试发现问题,个人理解有两种封闭方法,有时考虑到更改成本,可以进行风险分析,按照严重程度和发生概率,如果在ACC内,便可通过出风险分析报告进行封闭;另一种方法则是启动变更管理对设计进行更改,升版DHF和DMR,并重新进行测试。
6、硬件系统测试
硬件系统测试是对硬件系统需求的验证,其是在硬件系统测试方案的指导下进行的。
同样,在测试前,需将所有的输入归档受控;测试过程中,严格执行和记录;测试完成后,进行报告归档及问题处理。
开发排除故障:
学生频繁出现“卡壳”现象:看似很简单的设计,却死活调不出来,人都快疯掉了。大约一周前,小陈来找我的时候,一副悬崖上抓不牢树枝,就想自己松手跳崖的样子,猴急的都想给我说难听话了。这两天,小陈的问题找到了,解决了,又快乐了。但是常伟的问题又来啦。
用MSP430F169单片机给程控增益放大器PGA280实施SPI控制,正常,同一个单片机给一个24位ADS1259实施控制,也正常。但是两个同时都焊上,用CS片选分别控制,就不行了。问题就这么简单,却让他焦头烂额。
解决问题是迟早的事情,我不担心,并且发现问题解决问题,本身就是对他们的锻炼,我才高兴呢。但是,我发现他们无一例外的,都陷入了一种混乱的状态:出现问题,开始左试试,右试试,有时成功了,高兴了,吃饭回来,又不行了,接着试。就这么反复折腾,总有崩溃的时候,就开始发火,焦躁,然后满世界找人帮忙,特别像落水以后找稻草。这种状态持续3天以上,他们就开始对我发火了。
我告诉他们:故障出现是好事,第一锻炼了你们,第二排除了隐患。不到万不得已的时候,我是不会出马的,我只需要教会他们排查故障的三大必须,就可以了。
排查故障是一门学问,深得很。但笼而统之,就三大必须,有了这三条,没有排查不了的故障:第一、心态,第二、策略,第三、耐心。
第一条心态
你必须对出现的故障,有强烈的感激。谢谢上天给了我这个机会,我要牢牢把握住。你可以想象自己是福尔摩斯,已经好几个月没有接活了,和华生天天闲聊已经没有意思了,急切希望有个案子,苏格兰场束手无策了,等着你出马了。只有这种心态,才能让你能够在后续的长期斗争中保持亢奋的头脑、缜密的思路以及足够的耐心。
我最大的特点就在于此。学生给我汇报故障的时候,我通常是特别兴奋,一字一句听,像听考题一样,他们漫不经心的,我的眼睛却犀利如刀。我特别希望我的学生能够学会这一点。
第二条策略
这是技术活。细讲太多,粗粗说点儿。
1)让故障重复出现,避免随机性故障。对随机性故障,我找机会另说。
2)保护故障现场,不轻易乱动。动的无论是软件还是硬件,都应保证可以恢复。因此,别随意焊下芯片,焊下的芯片也要放好,能找回来。另外,软件一定要按照序号备份。
3)不要一次做两个以上的改变。
4)养成习惯,用个小本记录所有的动作和事实。换了个电源,看似小事,有可能由A故障变成了B故障,你脑子就乱了。因此,如果要换电源,也要记录。
5)重视仪器和操作方法。每次记录事实,一定要确保事实是真的。
6)学会用逻辑的思维。主要是,造成这种故障现象的可能性有多少种,一一列出,可能性最大的到可能性最小的。
7)学会排查次序。影响排查次序的有两个主要因素,第一故障可能性,第二排查难度。我们当然要先试探可能性最大的,且排查难度最小的。但是两者并不总是这么巧。比如,你怀疑是A芯片坏了,这可能性最大。但是把它焊下来很费劲,排查实施难度较大,就可以先排查别的可能。这一项有点运气成分,也有点经验成分。
8)学会二分法并巧妙使用。二分法,就是把故障分为两部分(或者三部分,别太多,否则会乱),然后制造一些情况,想办法确定是哪部分,然后再细分,逐渐缩小包围圈。以前日本鬼子查城区里面哪里在发报,就用这方法:一个区域一个区域停电,看哪里一停电就导致电报信号消失,就能确定发报者在哪个区域,然后再缩小区域停电,最终找到我们的地下工作者。几句话还是说不清,我找机会再说吧。
当按照这种缜密的思维方式,罗列了所有故障可能性,且一一排查均无结果的时候,你应该更加亢奋。就像给一个1k电阻加了一个1V直流电压,测量的电流却不是1mA一样,你应该有这种心态:活见鬼了,难道欧姆定律都不成立了吗?
此时,找老师,找朋友,找什么人都行。但是,有谁做到这一步呢?多数学生都在这个阶段,彻底崩溃了。
第三条,足够的耐心
我曾遇到一个故障,就是电源电流太大。密密麻麻一大堆芯片,工作也算正常着,就是电源指示电流偏大,我知道一定是哪里短路了或者临近短路了。但是怎么查啊?关键是整个系统工作是正常的。
当时我自己告诫自己,要耐心,我不同于一般人,我有足够的耐心一定能查到。于是,我先用放大镜把板子上所有位置都看了一遍,看有没有焊接短路或者飞溅焊锡,花了很久时间,记不得了。然后,我看着电脑上的PCB图,把所有在10mil附近的间距,都用万用表查了一遍,还是没有。有点恼火了,于是我又告诫自己,不是一般人,不是一般人,接着来。
这次我干什么了呢?谁也不会想到我有多大的恒心:我计划把芯片的每一个管脚,或者叫电路板中的每一个节点,都和其它不应该连接的节点,都测一遍。这得测量多少次啊?但我豁出去了。于是,我开始干了。好在当时的芯片,都是DIP封装的,管脚不是甚多,我一个个查,终于查到了。其实时间也不是太长,一两个小时而已。
结果是,两根完全不相干的输出线,短接了,而电阻不是0,记不得是多少,大约就是几个欧姆的样子。我左看右看,他们都不会相连,只有一段大约几个厘米的区间,它们两根线平行走过。我割断,不短路了,短路局限在10cm左右了,再割断,最后局限在1cm左右的空间中,两线平行,但是短路。而两线的间距有差不多3个mm。
这板子已经被我折腾的不成样子了,但留下了一个千古疑问:两根间距3mm的线,在1cm长度内,居然短路了。我用放大镜看着,没有痕迹。我举起来对着刺眼的台灯,仔细看,一条细细的痕迹出现了,那么细,那么曲里拐弯,就有一根不透明的细线。
我举起割刀,在3mm的间距中深深的割了几刀,短路消失了。
这是上世纪九十年代中期的故事,我记忆犹新。
没有如我当时之耐心,这样的故障是难以查到的。
可能会有人说,这是一个个案,印制板的质量不好,你查到又有什么用呢?板子已经废了。但我有不同的认识,查到了,我就可以拍胸脯了,自信心比什么都重要。至今我仍然能够保持足够的自信,学生遇到问题,我不急,慢慢查着去,过了我的期限,我绝不相信,到我这里还查不出来。
心态好,有缜密的策略,有足够的超乎寻常的耐心,是排查故障的三大必须。很多人可能会注重技术性的策略,这当然很重要。但我发现,最重要的恰恰是第一条和第三条,它们不是想学就能学到的,而是要悟要养的。
如何学习电路设计
首先要出场地的是一套六本装的“实用电子电路设计丛书”,它们分别为《晶体管电路设计——放大电路技术的试验解析》(上、下册)、《OP放大电路设计——从重视再现性设计的基础到实际应用》、《振荡电路的设计与应用——RC振荡电路到数字频率合成器的实验解析》、《数字系统设计——从数字技术基础到ASIC设计的解析》、《数字逻辑电路的ASIC设计》。 《晶体管电路设计》最大的特点,在说明或设计晶体管电路时,并没有采用等效电路、负载线等过去常考虑的方法。等效电路和负载线是从事电子电路设计的前辈们为了有助于理解电路的工作原理进行简单的设计而提出来的方法。但以本书作者的经验,即便不采用这些方法,也能掌握电路的工作原理,而且在电路的设计中也没有感到不便之处。在本书上册的结束语中,作者谈到了自己学习的体会,“回想起当年自己初学电子学的情景,那时读过的书大部分都是使用等效电路、负载线以及对理论公式进行说明用的。自己想进行设计时,苦于对电子学本质上不懂,不能进行任何方面的设计,只能跟随着数学式子,仅用头脑来学,而没有真正地掌握。” OP放大技术既是模拟技术的基础,又是模拟技术的核心,OP放大器就像一个黑匣子,使人摸不到头脑,但一旦掌握了其中的技术,就会对设计的帮助很大。
对于初学者来说,本书的作者建议初学者亲自动手完成书中的实验。作者认为或许再高深的理论也会由于一根电线的连接错误,一个数字的计算错误导致前功尽弃。通过自己动手实践,理解零点偏移以及因用手去摸电路而导致的振荡变化,对将来面对更加复杂的电路和故障有很大的帮助。面对繁杂的OP 放大器,作为解决问题的方法,应将重点放在“理解电路,直到可以应用为止”,只要理解了,应用就不难了。从能够掌握原理的基本点出发,书中的200多个电路就可以与数万个实例相媲美了。 如果只是“振荡”,那是个简单的问题,但是振荡电路若要满足频率稳定度、波形纯正度(谐波失真、寄生振荡等)、温度特性、电源电压特性等,需要掌握的技术范围就很广。在现实中,还很难找到一本真正简单易懂、容易理解振荡原理的可作为振荡电路的入门教材,而本书可能正是初学者想要的。建议初学者根据需要有选择地阅读其中对自己有用的部分内容,事实上其中的很多内容博主在工作就难以用上,关键要看你将来所从事的工作而定了。 有关数字电路的参考图书很多,博主在此不再介绍《数字系统设计——从数字技术基础到ASIC设计的解析》了,但本书对于初学者来说,作为参考书还有一定的价值的。
由于博主仔细读过这套丛书,因此根据工作的需要,在2004年10月就将前面的5本书纳入了公司常备的参考书目之中,基于此我认为这套书很适合本科生、研究生和开发工程师有选择地阅读,特此推荐。 另外两本佳作的名字就是《测量电子电路设计——滤波器篇》与《测量电子电路设计——模拟篇》,它们互为姊妹篇,它们都隶属于“图解实用电子技术丛书”套装图书,由科学出版社2006年出版的图书。这是作者远坂俊昭利用休息日,为进行计算机模拟而敲键盘,握着电烙铁做实验花费5年时间完成的难得一见的两本大作,而《锁相环(PLL)电路设计与应用》则是远坂俊写作昭的另外一本由科学出版社出版的专著。其中的“滤波器篇”主要介绍“从滤波器设计到锁相放大器的应用”,本书的主题则是从放大了的信号中除去有害噪声,提取有用信号的滤波技术。无论是简单的阻容滤波器还是复杂的频谱分析器其实都统称为滤波器,由此可见其包含的种类和技术是非常庞杂的。构成前置放大器和滤波器的电路看起来简单,但关于滤波器的理论却非常复杂,而本书的重点则放在实用设计所必需的技术上。与《测量电子电路设计——滤波器篇》遥相呼应的还有一本专著那就是《LC滤波器设计与制作》,LC滤波器在难以使用运算放大器的高频领域中起到极为重要的作用,但在设计高频LC滤波器时,经常会遇到按照这样的问题,按照理论计算辛辛苦苦设计出来的滤波器,一经实际测试却发现其特性完全不符合要求。
本书以测试实例为依据,对于什么样的参数会带来多大的影响的问题作了深入的说明,并在基础上给出了最合适的实际装配方法。对于初学者来说,这两本书的内容在设计中暂时还用不上,待将来需要或有余力之后,再回过头来阅读也不晚,千万不要一口吃一个胖子。 《测量电子电路设计——模拟篇》主要介绍“从OP放大器实践电路到微弱信号的处理”,检测微弱信号的过程中最关键的部分就是传感器,而要充分发挥传感器的功效,并将检测信号放大为易于处理的信号电平,需要前置放大器完成此任务,这就是本书第一章介绍的“前置放大器的低噪声技术”。任何事情都是这样,为了更深入地理解它,最有效的方法就是亲自进行实验和制作。如果要得到低噪声电路,必须掌握有关OP放大器的选择、参数的设定及评价技术等方面的知识,这就是本书第二章介绍的“低噪声前置放大器的设计、制作及评价”。放大器的作用是将微弱信号放大到某种电平,一般来说,几乎都是放大电压信号。但是对于传感器等来讲,也有处理电流信号的情况,这就是本书第三章介绍的“电流输入放大器的设计”。在模拟电路中,OP放大器是不可缺少的,使用OP放大器的电路几乎都是在负反馈技术的基础之上形成的,电路模拟技术近年来已经发展成为电路设计的潮流,这就是本书第四章介绍的“负反馈电路的解析与电路模拟”,作为负反馈技术的一个要点,本章还将介绍抑制电路振荡的技术。
有的噪声容易消除,有的噪声难以消除。从噪声或共态电压中提取信号成分并进行放大的放大器叫做差动放大器,在高精度测量中差动放大器技术是必不可少的,这就是本书第五章介绍的“差动放大器技术的应用”。信号并不总是相对于地线发生的,也有在大的共态电压上加载信号成分的情况,或者出于安全的考虑,希望将信号离地浮置起来,这时需要使用隔离放大器,这就是本书第六章介绍的“隔离放大器的使用”,这是一种特殊的放大器,在工业设备、医疗电子设备等领域应用非常广泛。 接下来介绍一本好书,那就是《高速数字电路设计与安装技巧》,它同样隶属于《图解实用电子技术丛书》套装图书之一,主要介绍“准确传输高速信号的印刷电路板设计与噪声解决方法”。随着大规模集成电路的发展,PCB的设计变得越来越难,这就要求在技术上对高速信号回路和电源的获取方法给予足够的重视。无论是初学者还是经验丰富的电路设计工程师,只要你未曾设计高速信号的PCB,那么大家在这方面应该都是初学者,那么可以说本书的价值是非常之大的 最后介绍一本《实用电源电路设计——从整流电路到开关稳压器》方面的专著,本书的一个特点是注重基础,为了帮助读者设计动手,作者用了大量的篇幅介绍相关的基础知识,甚至包括一些复杂的公式推导,同时作者还介绍了很多设计过程中的技巧,避免读者走弯路。
好,那就按照书上说的动手试一试吧! “图解实用电子技术丛书”丛书还包括《传感器应用技巧141例》、《模拟技术应用技巧101例》、《OP放大器应用技巧100例》、《数字电路设计》、《高频电路设计与制作》、《晶体管电路设计与制作》、《高低频电路设计与制作》、《直流电动机实际应用技巧》、《开关稳压电路的设计与制作》等重要的专著,大家可以根据工作的需要,有选择地阅读和学习。 可以这样说,模拟电路技术应用范围广泛,其技术深度、难度和广度博大精深,一个人的精力和能力确实有限,只能结合实际的需要有选择地学习、研究和应用,因此博主对模拟技术的熟悉程度也仅仅局限于自己工作的范围,对很多实际的应用也是一知半解。过去由于条件的限制,博主对自己工作领域所用到的模拟技术的很多细节,也同样缺乏理论与实践相结合的深入研究与验证,目前正在不断地投入仪器和人力资源逐步完善和总结,期望在下一步能够写出新的著作,为发展嵌入式系统应用技术作出新的贡献。尽管我们已经有将近30位模拟技术开发工程师,但从发展的角度来看,无论是从人才的数量,还是人才的质量,这方面的人才还远远不够,欢迎更多的模拟技术人才加盟。 有一位博友发表评论说,“感叹!ZLG(周立功)的商业模式非常好,技术与市场的定位与配合做得非常到位,有很多值得借鉴之处。
”其实我们的一切行为都全部曝光于阳光之下,绝无任何创新之处,甚至没有任何秘密可言,那就是“内容为王”。每日每月每年不断地强化它,将这一理念灌输到每一个员工的血液之中,只要利用细微的力量并通过不断地聚焦、聚焦、再聚焦,最后才能真正地推动伟大理想的实现。其实只要人人肯下笨功夫,经得起“煎熬”愿意将成功放在将来,那么你同样可以取得你想要的成功。