电子产品设计阶段的成本控制
摘 要: 本文从几个角度来探讨电子产品开发过程中的开发成本控制方法。开发成本包含时间成本和资金成本,围绕这两点,对以下步骤进行了分析:项目宏观规划时的项目分解、文档制作;硬件设计时的辅助设计软件的使用技巧和电路的可塑性设计;在软件设计方面,提倡使用C语言来进行开发工作。 关键词: 电子产品 设计 成本控制 EDA PLD 单片机 C语言 我们在设计电子产品的过程一般都会对所设计的产品进行成本控制,总是尽量简化电路,减少元器件、尽量简化安装工序。一般这些简化都是针对最终产品的。但是作为开发工作本身也同样需要成本,也需要进行成本控制。尤其是一些产量小、附加值高的非消费类产品。 电子产品的开发成本一般包括以下这么几块: 1. 项目可行性分析费用 2. 联系元器件厂商,获取器件资料费用 3. 元器件费用 4. 开发人员薪资 5. 样机测试费用 6. 时间成本 以上几个点的成本控制和管理在很多工程管理的书籍和资料都有详细介绍,本文只是根据笔者所做过的电子设计工程补充一些看法。 进入项目可行性分析阶段后,项目管理人员应该仔细做好项目规划工作,一个项目的成功与否,一般取决于该项目的技术复杂性和成本复杂性。为了避免由于不可预知的工程复杂性而导致的项目流产,项目管理人员在制定设计方案的时候需要招集各方面的人员,把该项目仔细的分解开来,然后针对这些子项目逐一探讨分析,仔细地权衡各方面因素,看看是否可行,成功的代价如何,只有每个子项目都做到有把握后才能将整个项目推入实施阶段。 在项目通过可行性论证后,就转入正式的开发阶段。项目管理人员需要制定详细的开发的技术规划,一个项目的设计思路确定之后,该产品的开发成本、制造成本和维护成本也就大致确定下来了。所以一个不良的规划,往往会对项目带来灾难性的后果。这个阶段项目负责人要和合作的开发人员充分交换意见,根据开发人员的数量和专长将项目分解开来,让每一个工程技术人员完成本项目的一部分工作。 项目开始运转后一定要做好全套设计文档。文档中要明确每个开发者所必须完成的功能和相互之间的接口。同时也要要求每个开发人员为自己所开发的模块做好技术文档。表面上看这个工作增加了开发成本,但这样不仅有利于该项目今后的扩充维护,也同样有利于该项目的测试工作。这事实上降低了项目在这些方面的成本,项目规模越大,在这方面投入所体现的效益就越明显。同时这项工作还可以降低由于开发人员流动带来的工程扩充维护的风险,因为技术文档越多越详细,继承该工作的技术人员所付出的时间代价就越小。 在元器件选择方面,应尽量使用标准器件或易于采购的器件。因为这些元件产量大,价格好,供货渠道也多,对于降低硬件成本有显而易见的好处。尤其在所设计的产品产量不会很大的时候更应该如此。在设计一些高附加值,小批量的产品的时候,尽量使用硬件模块和软件模块来设计,这虽然加大了一些投入,但总的来说,压缩开发时间,让产品更快面对市场带来的效益会大于这些投入。同时模块化设计还可以提高产品的设计质量。更可以将开发人员的精力集中于高层次的设计上,提高他们的成就感。 尽量使用各种EDA(电子设计自动化)工具。综合使用各种EDA工具来完成设计,可以大幅度加快开发进度,减少差错,提高工程质量。一提起EDA工具很多人就会想起Protel、Orcad、Pads等电路板布线软件。其实这些工具不仅包含原理图和电路板布线,一般也包含了可编程逻辑器件(PLD)设计、信号仿真等模块,充分利用这些功能往往可以在设计阶段就发现很多构思和图纸上的缺陷。对减少设计阶段的返工和修改有事半功倍的效果。此外,还有一些别的种类的软件,虽然不是专门的电子设计软件,但我们依然可以借用。比如:如果项目中包含了复杂一些的数学算法(如模糊逻辑和人工神经元算法等),我们还可以动用专门的数学CAD软件DDMATLAB先仿真一下你的信号处理流程,然后根据仿真的结果来设计相关的硬件和软件。就节约了很多在目标机上反复写片、反复调试算法的时间。 在设计电路的时候,修改硬件在所难免。为了便于电路修改,要注意电路的可塑性。电路的可塑性是指电路的可修改能力。如果电路便于修改,会减少很多开发人员更改电路的低级劳动。提高电路的可塑性一般有以下几种方法: 1. 能够使用软件实现的功能不要用硬件实现。由于硬件和软件的物理结构的差异,在修改硬件的时候要付出比软件多得多的代价。用软件代替硬件后还能降低产成品的成本,便于批量生产和销售。 2. 如果电路中有CMOS、TTL电路要尽量使用PLD(可编程逻辑器件)来实现,因为PLD本身具有可修改的特性。用它们实现数字逻辑后,要改变逻辑关系的时候,只要在计算机上修改它们的逻辑描述文件,然后经过编译、写片就得到一片新的逻辑关系的集成电路。就像修改软件一样容易。用PLD代替不同的普通数字集成电路后,有利于减少元器件种类。方便采购和库存管理。 3. 试制过程中适当在电路板上多留一些资源,比如PLD的容量要比你预期的容量稍大一些,单片机的ROM、RAM、I/O端口等资源都要留适当的空余。因为在设计过程中随时会有很多不可预见的情况发生,解决这些问题,通常会增加对硬件资源的需求量。如果没有在电路板上保留适当的冗余资源,将不得不在电路板外面再搭一块小电路板。事实证明,这样修改电路不仅容易给电路引入干扰信号,而且会大幅度降低试制样机的可靠性,同时会使技术人员的很多时间花费在反复修改电路的简单劳动上。 编写单片机的软件的时候,应该尽量使用高级语言来编写。现在许多开发单片机的技术人员依然保留了80年代的开发方法。使用汇编语言,逐条指令编写,并且手工分配单片机中的内存资源。这种方法在写小规模软件还可以,可一旦软件规模变大之后,由于汇编语言的低可读性、低结构性往往会让设计人员被自己软件中的复杂的逻辑关系搞得晕头转向,在一个软件的逻辑关系混乱后,要保证写出来的软件能安全运转是很困难的。 我们推荐使用C语言来写软件单片机代码。(对于常见的8051系列,我们一般使用KEIL、FLANKLIN 等软件。其它类型的单片机一般都有其配套的C语言编译器,该型号单片机的经销商一般可提供)用C语言有这么几个好处: 1. 可以大幅度加快开发进度。 2. 可以实现软件的结构化编程,它使得软件的逻辑结构变得清晰、有条理。 3. 在写一些数学算法和循环、判断语句的时候有比汇编语言高得多的效率。 4. 省去了人工分配内存资源的工作,在汇编语言中我们不得不为每一个子程序来分配储存变量的空间,这是一个复杂、乏味又容易出差错的工作。而使用C语言后你只要在代码中申明一下变量的类型,编译器就会自动为你分配寄存器和内存,低级重复易出差错的事情都由计算机代劳了。根本不要人工干预。 5. 因为循环、判断语句和变量名字都使用自然语言,因此写出来代码的可维护性和软件可读性很好。这样当需要更换软件开发人员的时候,可以比较容易地进行代码移交和消化。即使没有更换人员,他们在维护自己的代码的时候也比较容易。 6. 当写好了一个算法后,以后需要在不同种类的CPU上也需要这个算法时,可以直接引用原来的代码,再配合这种CPU专用的编译器重新编译就可以了。这样可以实现软件的低成本跨平台移植。而汇编语言在这种情况下,除了重新写代码,没有别的办法。因为C语言的这种特性,如果在设计复杂算法时(比如视频/音频信号处理、模糊逻辑和人工神经元算法等),可以在PC机上使用Visual C++、C++ Build等x86平台的C语言编译器设计、调试该算法的代码,调试成功后就可以移植到单片机的软件系统中去。由于PC机上有充足的系统资源,开发调试进度会有大幅度的提高,这样就节约了软件的时间成本。 7. 在团体写作的软件中,软件接口容易做到规范统一。 虽然使用C语言写出来的代码会比汇编语言所占用的空间要大5%~20%,但是由于半导体技术的发展,芯片的容量和速度有了大幅度的提高。在这种情况下,代码占用的空间差异已经不是很关键的了。相比之下,我们更应该注重软件是否可以长期稳定运行的能力,注重使用先进开发工具所带来的时间成本的优势。 |
评论