Note

全书最后一章从”电路怎么搭”上升到”系统怎么设计”。好的设计是用最恰当、最有效的方式解决特定问题,这既需要工程经验,更需要系统方法论:自顶向下分解、明确技术选型、借助 CAD 工具验证。读完本章,你脑中应有从客户需求一路到成品测试的完整路线图。

28.1 引言

设计的本质是用最恰当高效的方式解决问题。要做到这一点,设计者不仅要深刻理解问题本身,还要广博地掌握可用技术与工艺。设计能力确实随经验增长,但这不降低系统性、方法论的重要性——设计是创造性活动,但必须建立在扎实的工程原理之上,才能既经济又高效。

每个设计阶段都有自动化工具助阵:快速画原理图的、仿真测试电路的、做 PCB 或 VLSI 版图的、还有校验版图是否违反设计规则的。

28.2 设计方法论:自顶向下

多数资深工程师认同**自顶向下(top-down)**设计:先抓系统主要方面,再逐步填充细节。过程从”我们想达成什么”出发,一步步走向”我们如何达成”。

客户需求(customer requirements)

客户需求 = 系统要解决的问题。它应当用”问题”而非”方案”的语言表达——“设备能在嘈杂工厂环境中以 1% 精度测温度并控制加热器”是需求,“用 12 位 ADC 和继电器”则不是。而且它代表的是系统的实际需求,不是任何口头或书面描述本身——这提醒我们:文字永远有失真,需求要以可验证的方式确定下来。注意”客户”与”设计师”可以是同一个人(自用项目),方法论不变。

顶层规格说明(top-level specification)

规格说明试图定义一个能满足客户需求的系统,通常以自然语言书面描述呈现,可辅以数学公式。自然语言规格的最大麻烦是极易被误解——同一句话不同人读出不同含义,所以后面会看到更精确的规格语言(28.4.7 节的形式化方法)。

关键纪律:规格只说系统做什么(what),不说怎么做(how)——选用哪种器件家族、用模拟还是数字,都不属于规格的范畴。为什么这么严?因为一旦把实现手段写进规格,就把设计空间提前锁死:换个更便宜的方案可能照样满足需求,却被规格挡在门外;规格也失去了独立于实现被验证的价值。

大型公司通常由独立于设计团队的团队撰写规格,保证两职能互不迁就;定稿前要与所有相关方(包括客户)达成一致。过程中发现新信息需要改规格完全可以,但必须各方同意,不能由设计师单方面为省事而改。此阶段还应同时定义一套验收测试(proving tests),作为最终系统测试与交付演示的依据——“系统做完了”从来不是自己说了算,而是按这套测试说了算。

顶层设计(top-level design)

规格完成后即可自顶向下展开设计。大型项目首先把系统切成若干可管理模块,为每模块写规格,使其可独立设计、测试——模块化还有个隐性好处:出错时可以定位到模块级,而不必在整机里大海捞针。

最早期的决策之一是技术选型:同一功能几乎总能以模拟、数字、软件等多种方式实现,大系统往往三种混用——例如一个温度控制器:前端放大和滤波走模拟,控制算法跑在微控制器里,开关量输出用数字逻辑。选型不定的具体后果是:后续每个细节(器件选型、接口设计、测试方法)都无从下手。

涉及微处理器等可编程器件的系统,还要做硬件/软件权衡(hardware/software trade-off)——哪些功能交给硬件、哪些交给软件。判断依据是预测产量(第 26 章的原则在这里重演):产量大时值得为硬件实现付开发费(省下的单件成本摊薄开发费),产量小时用软件实现更灵活便宜。

顶层设计的产出是系统框图 + 每个硬件/软件模块的规格。到此为止,系统还是”黑盒的集合”。

详细设计(detailed design)

若顶层设计做得高效,详细设计就相对顺理成章:每个硬件模块用前面各章的标准电路积木搭出来——放大器(第 13–15 章)、滤波器(第 8 章)、逻辑门(第 23 章)、转换器(第 27 章);每个软件模块用标准函数与结构实现——主循环、轮询、中断服务、状态机。详细设计阶段出现的”意外困难”,多半说明顶层设计没拆干净,正确的反应是回到上一级修改模块划分,而不是在细节里硬磨。

模块构建与测试:反向而行

构建并测试各模块。注意方向反转:设计自顶向下,测试则自底向上(bottom-up)——先验证每个最小电路单元,再逐级验证更大的子系统,最后才到整机。原因很朴素:小片电路比整机更容易发现错误和定位故障。此阶段发现的问题必须先修好再往上走。

系统测试(system testing)

所有模块测试合格后装配整机,此时才能判断系统是否满足顶层规格、是否兑现客户需求,还要向客户演示并跑规定的验收测试。对安全或金融后果严重的系统,测试标准会非常严格,常需证明系统”安全”或”高完整性”。

Success

方法论口诀:设计自顶向下拆,测试自底向上合;需求用问题语言,规格管 What 不管 How。改规格可以,但必须全员同意,不能设计师偷偷改。

28.3 实现方式的选择

图 28.1:系统实现方式的备选路径

技术选型是最关键的决策之一。最宽泛的层面可能涉及机械、液压、气动、电气还是电子;电子内部则要依次回答:模拟还是数字?分立还是集成?可编程还是不可编程?双极还是 FET?大项目各模块完全可以各走各路,混搭是常态。不存在放之四海皆准的硬规则,更有用的做法是梳理各选项的特性,供设计者按应用对号入座。

模拟 vs. 数字

输入输出信号的性质常直接提示答案:只用二进制传感器和执行器,显然走数字;模拟输入输出则倾向模拟。反过来,输入输出全数字的系统用模拟实现很少见,但模拟信号的应用用数字处理却很常见——代价是要加数据转换器,收益往往是值得的。

数字系统的潜在优势:单机之间一致性更好(不依赖元件参数的分散性)、噪声性能更佳、信号更易存储传输、复杂信号处理更容易(一个算法替代一片模拟电路)、可预测性强所以设计更容易、自动化工具更丰富。

若进一步拿模拟实现与”微机+程序”的方案对比,计算机方案的优势清单更长:

  • 一致性更好;经程序化获得更大灵活性;硬件更标准化(一块板多种应用);元件数更少;单价有时更低;
  • 测试更容易、能做自检(self-testing);更容易加新功能(改程序即可);可靠性更高;可实现自动或简化校准(校准系数存 EEPROM,开机自动补偿)。

代价清单:开发成本更高、开发设备投入更大(仿真器、编程器、调试环境)、系统复杂度更高。模拟方案胜在”小、快、直接”——几颗运放解决问题的场合,上微机纯属杀鸡用牛刀。

集成 vs. 分立

模拟电路用 IC 还是分立件,要看功能、噪声、功耗、成本、尺寸与设计工作量。总体而言 IC 更容易——芯片设计师已把苦活干完。但某些非常简单或特殊的场合分立件更合适,高功率电路通常必须用分立晶体管。

可编程 vs. 不可编程

简单应用选不可编程:无需软件开发,无开发成本,也无”程序 bug”这种阴魂不散的隐患。复杂度一上来,可编程(计算机方案)的优势就明显了:灵活性是最大卖点——同一块标准计算机板能服务多种应用,压缩了要生产的子系统种类,省设计时间、省库存成本;升级系统只需改运行程序,不用改硬件。反面则是软件开发成本高、进度难估、验证困难。

一个值得记住的经验法则:功能越简单,不可编程越划算;复杂度超过某阈值后,只有可编程方案在成本上可行——用不可编程逻辑堆复杂控制算法,成本曲线陡峭上涨。软件的固定成本高、边际成本低,所以”先付开发费,越用越便宜”的软件路线在大系统上完胜。

随着 PLD 性能提升,计算机方案的许多灵活性也进了”不可编程”系统:复杂度大多实现于 PLD 内部,改配置即可改功能——升级方式与计算机方案几乎一样,且常常不用动硬件。用 CPLD 做这件事,配置器件的过程其实很像写软件——同样依赖一大套复杂开发工具,同样费时费钱。

Warning

微机与 PLD 的本质区别不是”是否可编程”而是执行方式:两者都是执行程序员定义的一组(可能很复杂的)操作,但计算机是串行执行指令,PLD 是并行执行——设计时要清楚这一点,串行天然适合顺序算法,并行天然适合高速组合/时序逻辑。

复杂度超过某阈值后,非可编程逻辑的实现成本高到不可接受,计算机方案成了唯一务实解——极其复杂的控制算法用软件写,而不是无止境地堆硬件。

可编程系统的实现策略

取决于产量:小批量倾向用现成成品板,省掉大量昂贵的自行设计;大批量倾向定制方案(专门设计的电路板,投入更多设计劳动);超大产量甚至定制专用 IC——单价极低,但开发费极高。

非可编程数字系统的实现策略

几乎完全由所需逻辑复杂度决定:极简单的逻辑可以用二极管逻辑或少量晶体管;稍复杂的用常规逻辑电路;只要几十个门,标准 CMOS 器件;再复杂些,无论成本还是面积,都该用某种阵列逻辑了。

28.4 器件技术选型

图 28.2:器件技术的主要决策分支

确定实现方式后,还有器件工艺这一层选择:双极、FET,还是二者结合?这条决策树的每一层,第 17、18、25 章都已铺好依据。

模拟系统:需要高输入阻抗的场合用 FET(此时噪声性能也好——源阻抗高时 FET 的电流噪声优势凸显);双极晶体管输入电阻低,但常能提供更高增益,且配低阻抗源时噪声更优。有些电路两者不可互换,选择是明确的;两可的应用里,BiFET/BiMOS 混合电路可兼取所长——输入级用 FET 拿高阻抗,后续级用双极拿增益。

数字系统:选双极还是 MOS,取决于速度、功耗、噪声容限与集成密度(详见第 25 章)。过去双极(TTL/ECL)普遍更快,非饱和型(ECL、肖特基 TTL)快于饱和型;但现代 CMOS 已足够快并在几乎所有应用中取代 TTL,双极器件退守少量专业领域(如高速器件驱动器)。

MOS 的优势还有:CMOS 噪声容限至少为电源电压的 30%,配 15 V 电源时约 4.5 V——对比 TTL 的约 0.4 V 和 ECL 的更低。不过 MOS 输入阻抗高,实际噪声表现不如数字暗示的那么惊艳(容性耦合噪声更容易进来)。更重要的是 MOS 的高集成密度:单个器件内可容纳的电路远超双极工艺,所以微处理器、存储器及配套器件几乎全用 CMOS 制造。高速双极微处理器存在,但昂贵且不如 MOS 型成熟。

28.4 电子设计工具(CAD)

计算机辅助设计工具总称 CAD(也有 ECAD、CAE、CASE 等叫法)。各类工具常需串接使用——原理图捕获产出网表,版图工具吃网表,验证工具查版图——所以数据格式标准化(能互相导入导出)很重要。理解各工具在流水线中的位置和”输入什么、输出什么”,比记住某个软件的菜单更重要。

28.4.1 原理图捕获(schematic capture)

对电路设计师而言,原理图捕获工具就像作家的文字处理器:在屏幕上快速画图,组件可加、删、移、连线。它的真正威力来自元件库——库中存着每颗元件的技术细节(引脚排列、电路符号),设计师从库里取件摆放即可,无需逐个手画;库随新元件更新,也支持用户自绘入库。输出形式多样:打印硬拷贝、元件清单(parts list)与网表(net list)——互连关系数据,正是下游工具的输入。典型例子:PSpice 套件与 Electronic Workbench(Multisim)。

28.4.2 电路仿真(circuit simulation)

与其焊电路试错,不如先仿真——修改在制造前完成,省时省力还更准(焊接测试一次的周期以天计,仿真一轮以分钟计)。最知名的仿真器是 SPICE(Simulation Program with Integrated Circuit Emphasis,1975 年出自加州大学)。原始版只有数字/文本输出;现代派生版(PSpice、Multisim)以图形输出——波形直接画在屏幕上,读起来像示波器。SPICE 家族支持模拟与数字、AC 与 DC、稳态与瞬态分析,同样靠元件库存器件特性(含晶体管、IC 等有源/无源元件模型),用户可自行添加新模型。

仿真与原理图捕获通常配套使用:捕获画图、仿真验证,形成”画→仿→改”的快速循环。资深设计师常把仿真当成设计过程中的交互工具——边设计边试探参数——而不只是终稿验收器。

28.4.3 PCB 版图(layout)

做印制板要出照相掩膜(定义铜箔走线与孔位)。在电子工具普及前,设计师是手工在透明胶片上贴不透明胶带的——又慢又容易错。如今用 PCB 版图软件:输入是原理图捕获产出的元件清单与网表;先定义板子尺寸形状、摆放元件(用元件库中的封装尺寸,多数软件能按尺寸和连接关系自动布局),再做自动布线(autorouting)把该连的引脚连起来。

自动布线的能力演进很能说明工具的进步:早期算法很原始,习惯做法是先手工排地线和电源轨(这两类走线最要紧),再让程序布其余走线,剩下的手工补完;新系统的布线算法强得多,常能全程无人干预——复杂板子的布线时间从约 50 小时降到几分钟。初稿可打印检查,量产则用光绘机(photoplotter)直接把版图输出到透明胶片上形成印刷掩膜。

28.4.4 PLD 设计编程包

PLD 含数千个门,人工选互连模式不现实,交给自动化工具:输入用规格语言写成的功能描述(哪些引脚作输入/输出、它们间的逻辑关系),外加一组测试向量(输入组合与期望输出);工具据此生成熔丝图,载入 PLD 编程器写入目标器件,再用测试向量自动验证,全程几秒。注意流程闭环里”测试向量”的位置:它是设计输入的一部分,先于器件存在——先想好怎么验,再谈怎么做,与 28.2 节”规格阶段定验收测试”是同一个思想。

28.4.5 VLSI 版图

VLSI 版图软件与 PCB 版图相似,但工作在微米级(1 μm = 10⁻⁶ m):单个晶体管由多块不同性质的半导体区构成,须精确摆放各区和连线的金属层。造好一个晶体管就能入库复用,多个晶体管连成门也入库……层层积累成元件库。数字设计有大量重复电路,**标准单元(standard cell)**风格大大简化版图工作——这也是 26.2.9 节半定制 ASIC 的技术基础。

28.4.6 设计验证(design verification)

PCB 与 VLSI 版图都有必须遵守的设计规则——导体最小间距、走线最小宽度、半导体区相对位置等,规则检查(DRC)软件确保设计不越界,可能内嵌于版图软件也可能是独立工具。规则的由来很实际:它们就是制造工艺能力的边界,越界即意味着产品做不出来或不可靠。

另一维度是 EMC 验证:常规电路仿真只管功能不管电磁兼容;专业包可在投产前预测系统的 EMC 表现(辐射、抗扰),省去事后反复调优的大量功夫——把”整改”从样机阶段提前到图纸阶段,是 EMC 设计最省钱的姿势。

Success

CAD 流水线口诀:原理图捕获 → 仿真验证 → 版图布线 → 规则检查;数据靠网表流转,器件靠库复用。设计在计算机里跑通,错误成本最低。

28.4.7 系统规格描述语言与形式化方法

除了 CAD 包,还有一类规格语言:VDM、ELLA、HILO、HOL、Z。它们不是写”跑在目标系统上执行任务的软件”,而是定义系统本身的性质——VDM 可以用输入、输出及二者的关系描述任何系统,形成独立于最终实现方式的精确规格(比如不规定某功能用硬件还是软件实现)。因为数学基础严谨,这类方法常称形式化方法(formal methods),能显著提高设计过程的可靠性、增强对正确性的信心。

最重要的硬件描述语言是 VHDL(VHSIC Hardware Description Language,VHSIC 又是 very high-speed integrated circuits 的缩写)。VHDL 用途极广:文档、验证、综合、仿真、测试;可描述系统的结构、数据流或行为。它既可在规格阶段定义各模块功能、模块交互乃至验收准则,也可作为原理图的替代做设计捕获(capture),配合强大仿真工具验证,还越来越多地用于 CPLD 规格描述。规格/验证工具保证”最终电路和软件与顶层规格严格对应”——不过这过程仍高度依赖使用者的智力与严谨。

Warning

VHDL 这类语言描述的是系统行为/结构,不是”给 CPU 跑的指令列表”——写错位就会得到一部空转的”仿真脚本”而非可综合的电路。同样注意规格语言的抽象层次:它应保持实现无关,过早绑定硬件或软件方向会让规格失去独立验证的意义。