1.2 电子系统设计流程
电子系统的种类较多,从总体上可分为模拟系统、数字系统和模数混合系统三大类。数字系统又可分为以标准数字集成电路(如TTL、CMOS器件)为核心的电子系统,以及以MPU、MCU、PLD、ASIC为核心的电子系统。在模数混合系统中,以SoC为核心的电子系统发展最为迅猛,特别是在便携计算、信息家电、数码产品等领域。
1.2.1 以模拟器件为核心的电子系统设计流程
以模拟器件为核心的电子系统设计流程如图1.2.1所示。由于模拟电路种类较多,设计的步骤将有所差异,因此图中所列各环节往往需要交叉进行,甚至会出现多次反复。
图1.2.1 以模拟器件为核心的电子系统设计流程
1. 系统描述和分析
一般设计题目给出的是系统功能要求、重要性能指标要求。这些是电子系统设计的基本出发点。但仅凭题目所给出要求还不能进行设计,设计人员必须对题目的各项要求进行分析,整理出系统和具体电路设计所需的更具体、更详细的功能要求和性能指标数据,这些数据才是进行电子电路系统设计的原始依据。同时,通过对设计题目的分析,设计人员还可以更深入地了解所要设计的系统的基本特性。
2. 选择总体方案
总体方案拟定主要针对所设计的任务、要求和条件,根据所掌握的知识和资料,从全局出发,明确总体功能和各部分功能,并画出一个能表示各单元功能和总体工作原理的框图。通常符合要求的总体方案不止一个,设计者应仔细分析每个方案的可行性和优缺点,并从设计的合理性、技术先进性、可靠性、经济性等方面反复比较,选出最佳方案。
3. 系统模块划分
当总体方案明确后,应根据总体方案将系统划分为若干部分,确定各部分的接口参数。如果某部分的规模仍嫌大,则需进一步划分。划分后的各部分规模大小应合适,便于进行电路级的设计。
4. 设计单元电路
设计单元电路前必须明确对各单元电路的要求,详细拟定出单元电路的性能指标,主要包括电源电压、工作频率、灵敏度、输入/输出阻抗、输出功率、失真度、波形显示方式等。根据功能和性能指标,查找有关资料,看有无现成电路或相近电路。若没有,则需设计。不论是采用现成电路或单元电路或自行设计,都应注意各单元电路间的配合问题,还要注意局部电路对全系统的影响,要考虑是否易于实现,是否易于检测,以及性能价格比等问题。因此,设计人员平时要注意电路资料的积累。在设计过程中,尽量少用或不用电平转换接口电路,并尽量使各单元电路采用统一的供电电源,以免造成总体电路复杂,导致可靠性和经济性均差等缺点。
另外,具体设计时,可在与设计要求较接近的电路基础上进行适当改进或进行创造性设计。
5. 计算和调整参数
在电路设计过程中必须对某些参数进行计算后才能挑选元器件。只有深刻地理解电路工作原理,正确地运用计算公式和计算图表,才能获得满意的计算结果。在设计计算时,常会出现理论上满足要求的参数值不是唯一的情况,设计者应根据价格、体积和货源等具体情况进行选择。计算电路参数时应注意下列问题:
☉各元器件的工作电流、电压和功耗等应符合要求,并留有适当余量。
☉对于元器件的极限参数必须留有足够余量,一般应大于额定值的1.5倍。
☉对于环境温度、交流电网电压等工作条件,应按最不利的情况考虑。
☉电阻、电容的参数应选计算值附近的标称值。
☉在保证电路达到性能指标要求的前提下,应尽量减少元器件的品种、价格、体积、数量等。
6. 选择元器件
根据所设计电路的元器件参数要求,选择电阻、电位器、电容、电感等元器件,以及选用集成电路。所选集成电路不仅应在功能、特性和工作条件等方面满足设计方案的要求,而且应考虑到封装方式。
7. 单元电路调试
在调试单元电路时应明确本部分的调试要求,按调试要求测试性能指标和观察波形。调试顺序按信号的流向进行。这样,可以把前面调试过的输出信号作为后一级的输入信号,为最后的系统总体调试创造条件。通过对单元电路的静态和动态调试,掌握必要的数据、波形。然后,对电路进行分析、判断、排除故障,完成调试要求。
8. 系统总体调试
系统总体调试应观察各单元电路连接后各级之间的信号关系。主要观察动态结果,检查电路性能和参数,分析测量的数据和波形是否符合设计要求,对发现的故障和问题及时采取处理措施。
系统总体调试时,先调基本指标,后调影响质量的指标,先调独立环节,后调有影响的环节,直到满足系统的各项技术指标为止。
9. 编写设计文档
实际上,从设计的第一步开始就要编写设计文档。设计文档的组织应当符合系统化、层次化和结构化的要求;设计文档的文句应当条理分明、简洁、明白;设计文档所用单位、符号以及设计文档的图纸均应符合国家标准。设计文档的具体内容与设计步骤是相呼应的,即:①系统任务和分析;②方案选择与可行性论证;③单元电路的设计、参数计算和元器件选择;④参考资料目录。总结报告是在组装与调试结束之后开始撰写的,是整个设计工作的总结,其内容应包括:①设计工作的进程记录;②原始设计修改部分的说明;③实际电路图、实物布置图、实用程序清单等;④功能与指标测试结果(含使用的测试仪器型号与规格);⑤系统的操作使用说明;⑥存在的问题及改进意见等。
10. 系统产品投入使用
经过上述步骤,一件作品或产品就完成了,可以投入使用。但系统的功能还需在实际应用中检验,如果存在问题,而且时间和经费预算允许,则系统所存在的问题应按上述步骤重新设计和调试。
1.2.2 以标准数字集成电路为核心的电子系统设计流程
以标准数字集成电路为核心的电子系统设计流程如图1.2.2所示。
图1.2.2 以标准数字集成电路为核心的电子系统设计流程
1. 系统描述和分析
这一步与模拟系统设计是一致的。只是数字系统是以逻辑关系进行描述,常用的描述方式有自然语言、逻辑流程图、时序图或几种方法的结合。当系统较大或逻辑关系复杂时,系统描述和分析不是一件容易的工作。所以,分析系统的任务必须仔细、全面,不能有理解上的偏差和疏漏。
2. 选择总体方案并确定逻辑算法
选择和比较各总体方案,并确定逻辑算法。一个数字系统的逻辑运算往往有多种算法,设计者的任务不但是找出各种算法,还必须比较优劣,取长补短,从中确定最合理的一种。数字系统的算法是逻辑设计的基础,算法不同,则系统的结构也不同,算法的合理与否直接影响系统结构的合理性。确定算法是数字系统设计中最具创造性的一环,也是最难的一步。
3. 系统模块划分
当算法明确后,应根据算法构造系统的硬件框架(也称为系统框图),将系统划分为若干部分,各部分分别承担算法中不同的逻辑操作功能。同模拟系统一样,如果某一部分的规模仍太大,则需进一步划分。划分后的各部分应逻辑功能清楚,规模大小合适,便于进行电路级的设计。
4. 系统逻辑描述
当系统中各子系统(指最低层子系统)和模块的逻辑功能和结构确定后,则需采用比较规范的形式来描述系统的逻辑功能。对系统的逻辑描述可先采用较粗略的逻辑流程图,再将逻辑流程图逐步细化为详细逻辑流程图,最后将详细逻辑流程图表示成与硬件有对应关系的形式,为下一步的电路级设计提供依据。
5. 设计单元电路和选择元器件
对于以标准数字集成电路为核心的电子系统而言,设计单元电路就是按照逻辑和算法要求,选择合理的器件和连接关系,以实现系统各单元电路功能。器件选择可以查阅标准数字集成电路手册及相关资料。
6. 单元电路时序和功能校验
当单元电路设计完成后必须验证其设计是否正确。在早期,只能通过搭接硬件电路才能验证设计。目前,数字电路设计的EDA软件很多,如Pspice、EWB、Multisim等都具有验证(也称为仿真、电路模拟)的功能,先通过电路验证(仿真),包括时序和功能校验。当验证结果正确后,再进行实际电路的测试。由于EDA软件的验证结果十分接近实际结果,因此可极大地提高电路设计的效率。
7. 系统总体调试
将单元电路组合在一起,进行系统级调试。调试时主要观察时序和逻辑功能是否满足设计要求,其他方面与模拟系统调试相似。
1.2.3 以MPU和MCU为核心的电子系统设计流程
以微处理器(MPU)和微控制器(MCU,又称单片机)为核心的电子系统,通常也称为嵌入式系统,具有结构简单、修改方便、通用性强的突出优点,适合于系统比较复杂、时序状态比较多的应用场合。其设计流程如下。
1. 确定任务,完成总体设计
确定系统功能指标,编写设计任务书;确定系统实现的硬件、软件子系统划分,分别画出硬件、软件子系统的方框图。
2. 硬件、软件设计与调试
按模块进行硬件和软件设计,力求标准化、模块化,可靠性高和抗干扰能力强;选择合适类型的MPU或MCU,特别注意MPU或MCU的位宽是8位、16位还是32位,以便选择相应的外围接口器件。当然,还要有开发系统和测试仪器,以便进行硬件、软件的调试。
3. 系统总调、性能测定
将调试好的硬件、软件装配到系统样机中去,进行整机总体联调。若有问题,则还需回到上一步重新检查。在排除硬件、软件故障后,可进行系统的性能指标测试。
1.2.4 以PLD为核心的电子系统设计流程
以PLD为核心的电子系统设计流程如图1.2.3所示。从图中可知,其设计流程与以标准数字集成电路为核心的电子系统设计流程相似,下面仅就不同部分阐述。
1. 通过EDA软件进行输入
PLD的设计软件很多,通常这些软件都可以采用原理图输入、HDL语言描述(包括AHDL、Verilog HDL和VHDL)、EDIF网表输入及波形输入等方式(详细介绍见第7章)进行设计输入。
图1.2.3 以PLD为核心的电子系统设计流程
2. 选择元器件
对于PLD而言,器件选择主要考虑选用CPLD还是FPGA的问题。除此以外,对具体芯片的选择,还应有如下考虑:
①芯片的速度。PLD产品通常有高速系列和低速系列,每个系列中还分成许多档级,首先应根据设计的要求确定合适的系列或档级,一般情况下,对CPLD,可直接按照手册上的参数选取,对FPGA,因延时不可预测,还应留有一定的余量。
② 芯片的规模。应先对所需完成的电路或系统所需的设备量进行估计,如大致计算一下所用的触发器的个数,并据此选择合适的芯片型号。注意,对CPLD内部资源的使用通常不得超过80%,否则布线很难通过。一般情况下,对其资源的利用率在50%左右为最佳,而FPGA对内部安排更难掌握,所以还要放宽。
③ I/O引脚数与器件封装。应先对所需完成的电路或系统所需的引脚数进行统计,并据此选择合适的芯片型号。复杂系统所需要的引脚往往很多,而不同封装的芯片的引脚数是确定的。在选择时仍然需要留出一定的余量,因为在设计过程中常常会因方案考虑不周或其他原因需要增加系统的端口。在封装形式上也要加以考虑,常用封装形式有PLCC和TOPP、PQPP、RQFP、PGA等。其中,PLCC的引脚数较少,但可以使用插座,也就是说,在使用过程中如果芯片损坏,可以方便地更换。引脚数大于100的必须使用其他封装,这些封装形式都属于表面贴装,一般需专门的设备才能焊在印制电路板(PCB)上,通常不易更换。所以在确定方案时应慎重,必要时可将一个系统分用数块芯片实现。
3. 设计编译
设计编译主要是将设计输入的原理图、语言描述、网表等转化为PLD开发软件内部的各种文件及适配,逻辑的综合及器件的装入,以及延时信息的提取。
4. PLD时序仿真和功能仿真
功能仿真可以用来验证设计项目的逻辑功能是否正确,时序仿真则将编译产生的延时信息加入到设计中,进行布局布线后的仿真,是与实际器件工作时情况基本相同的仿真。
5. 器件编程
器件编程是指将器件插在系统目标板上,由编程软件通过下载电缆的连接直接对器件编程的方法(器件编程又称为烧写)。除了单独编程,CPLD/FPGA器件都具有在系统编程的接口,如JTAG口。
6. PLD在线调试
调试的目的是检查编程的信息是否正确,若测试无误,则可将PLD器件加入到系统总体调试中。
1.2.5 以ASIC为核心的电子系统设计流程
通常,ASIC中既有数字系统又有模拟系统,它们采用不同的设计流程。
1. 数字ASIC的设计流程
图1.2.4为数字ASIC的设计流程。此流程由系统描述、功能设计、逻辑设计、电路设计、物理设计、芯片制造和测试封装组成。
图1.2.4 数字ASIC的设计流程
① 系统描述。在本阶段,要对用户的需求、市场前景进行充分的调研和分析,对设计模式和制造工艺的选择进行认证,以设计文档的形式将ASIC的技术指标、功能、性能、外形尺寸、芯片尺寸、工作速度和功耗等描述出来。
② 功能设计。在行为级上,将ASIC的功能及其各组成子模块的关系正确而完整地描述出来。通常,用功能状态转移图来描述所要设计的ASIC的功能,还用实现各功能所对应的模块及其相互联系图(既要反映模块间,又要反映模块与外部的通信关系)来描述。
③ 逻辑设计。其主要任务是得到一个实现系统功能的逻辑结构,并对它进行模拟,验证其正确性。通常,采用逻辑图、HDL语言或者布尔表达式来表示系统的逻辑结构。
④ 电路设计。电路设计是将逻辑图中的各逻辑部件细化到由一些基本门电路互连的结构,进而细化到由晶体管互连的电路结构。电路设计中要考虑电路的速度和功耗,要注意所使用的元件性能。
⑤ 物理设计,包括版图的设计和验证两方面的任务。版图的设计是将电路符号表示转换为几何符号表示。版图的设计应符合与制造工艺有关的芯片设计规则要求。版图的验证包括设计规则检查(DRC)、版图的网表及参数提取(NPE)、电学规则检查(ERC)、版图与电路原理图一致性检查(LVS)以及后仿真。在版图设计的全过程中以及完成后,均需进行版图验证。通常,在后仿真与版图设计之间将会发生一个多次反复的迭代过程,以保证所设计的版图满足制造工艺要求和符合系统的设计规范。
⑥ 芯片制造和测试封装。经过验证的版图就可送去制作掩膜版并制造芯片,最后进行封装测试。
2. 模拟ASIC的设计流程
模拟ASIC的设计流程如图1.2.5所示。整个流程分为结构级设计、单元级设计和物理版图级设计3个阶段。单元级设计又细分为拓扑选择和尺寸优化。
图1.2.5 模拟ASIC设计流程
① 结构级设计,是将用户给定的关于模拟集成电路性能的抽象描述转化为一个用各种功能单元所构成的电路,该电路能实现所要求的电性能。
② 拓扑级选择,是根据功能单元的性能指标和工作环境,决定用何种具体的电路结构来实现该单元的功能。优化器件尺寸是在获得电路结构的条件下,根据所需的电路性能指标和生产工艺条件确定每个器件的“最佳”几何尺寸,以提高模拟集成电路的合格率。
③ 物理版图级设计,是将具有器件尺寸和满足一定约束条件的电路原理图映射成集成电路版图。
模拟集成电路的设计比数字集成电路设计要复杂得多,这是由模拟集成电路设计的特殊性决定的:模拟集成电路的层次不如数字集成电路清楚;性能指标繁杂;拓扑结构层出不穷;电路性能对器件尺寸、工艺以及系统级的串扰非常敏感。
由于上述模拟设计的种种特殊性,这就需要设计者在设计过程中综合考虑各项性能指标,合理选择电路拓扑结构,反复优化器件尺寸,深入考虑加工工艺、工作环境和各种因素,精心设计物理版图。由于器件尺寸每调整一次,均要重新绘制版图、重新提取元器件参数,并重做一次后仿真,因此模拟集成电路的设计是一项非常复杂、艰巨而费时的工作。虽然近年来模拟集成电路设计工具已有很大改观,但与数字集成电路设计设计工具相比较,目前模拟集成电路设计工具的自动化水平还不够高,设计中许多决策、判断和选择主要还是依赖于人的智慧来解决;同时,设计中还会遇到许多很复杂、很困难的性能指标需要折中处理,而设计者处理这类问题时通常还是靠其直觉和长期积累的设计经验,因此设计者必须具有广博的微电子电路知识、丰富的实践经验和勇于创新的精神才能胜任此项工作。
1.2.6 以SoC为核心的电子系统设计流程
1. SoC的定义
SoC(单芯片系统)有多种不同的定义。一般说来,SoC是一种处理器级IC,含有一个或数个嵌入式计算引擎(微处理器、微控制器或数字信号处理器),采用超深亚微米工艺技术,主要采用第三方的IP核进行设计,内置嵌入式存储器和可编程逻辑,具备外部对芯片进行编程的功能,具有完整系统所必备的全部或大部分外设。在某些场合,它还包括模拟前端,在同一芯片上集成有模拟和数字部件。所以,SoC系统相当复杂。
SoC的设计流程如图1.2.6所示。该流程图分为三列,左、右两边为硬件和软件模块设计流程,中间部分为系统集成设计的流程。这是一种软/硬件协同设计的流程。
图1.2.6 以SoC为核心的电子系统设计流程
2. SoC系统设计方法
为了提高芯片的设计效率,缩短设计周期,系统设计需要新的设计理论体系和设计方法,以克服传统设计方法中前端设计和后端设计相互分离的弊病。这一新的设计理论和设计方法是以软/硬件协同设计理论、IP核生成及复用技术、可测性设计技术和超深亚微米技术等为支撑的。
(1)软/硬件协同设计理论
面向SoC的软/硬件协同设计理论是指从给定的系统任务描述出发,通过有效分析系统任务和所需资源,采用一系列变换方法,并遵循特定准则,自动生成符合系统功能要求、符合代价约束的软件和硬件架构。这一理论体系包括系统设计描述、软/硬件划分、软/硬件协同设计、软/硬件协同验证等内容。系统设计描述语言是这一理论体系研究的核心问题之一。
(2)IP核生成及复用技术
IP核实际上是一个经过验证的IC设计。IP核有三种不同的表现形式:软核、固核和硬核。
软核用HDL方式提交,其性能通过时序验证模拟进行验证。由于软核不依赖于任何实现工艺和实现技术,具有很大的灵活性。
硬核以IC版图的形式提交,并经过实际工艺流片验证。硬核强烈地依赖于某一个特定的实现工艺,而且在具体的物理尺寸、物理形态及性能上具有不可更改性。
固核是由软核发展而来,以电路网表的形式提交,通常还经过硬件验证或硬件仿真器验证。由于固核的时序特性是经过严格检验的,设计者只要保证在布局布线过程中电路关键路径的分布参数不会引起时序混乱,就可以保证芯片的设计成功。固核的缺点在于,固核仍对应于某个特定的实现工艺,限制了固核的使用范围。
如果采用硬核,那么需要权衡设计目标和硬核已有功能,因为要么需为不需要的外设支付费用,要么需用功能很强大的外设完成特定的工作。若采用可配置硬核,则配置硬核的外设功能是通过系统引导启动时对寄存器进行编程来完成的,称为运行可配置性,这种方法依然会浪费许多硬件资源和金钱。另外,有时硬核无法提供设计所需的全部功能。
而采用软核,设计者可以根据需求购买和付费,不必为不使用的功能付费,从而节省资金和硬件资源。另外,软核的可配置性是在编译时进行的,可以很容易地进行修改和变更,从而大大地缩短SoC的设计周期。
IP核复用涉及各方面,如法律和商业方面的问题、IP核标准、设计和程序、测试策略、设计的存储和检索和设计方法等。如果购买第三方的IP核,则必须充分了解总成本和IP核的实际可用性。IP核厂商提供了从处理简单功能到整个微处理器的大量不同种类的元件,如加法器、乘法器、解码器、先进先出(FIFO)、数字信号处理、控制器、处理器和协议处理器。然而,面向SoC的IP核复用决不是简单的堆砌,在使用过程中不但要考虑它们的功能,更要使它们融入芯片。系统设计者在选择IP核时,不仅要考虑IP核的功能,考虑它在设计中的信号完整性、功率耗散、电磁辐射和可制造性,而且要考虑它作为系统整体部件时是如何工作的,并设计内部总线结构,把所选的外设及其接头或其他定制的外设胶合在一起。
IP核复用也存在风险,可能导致IP核复用失败。如所设计IP核本可以工作在400MHz,嵌入SoC后却只能达到250MHz或者300MHz,导致达不到设计指标而失败。
(3)可测性设计技术
因为SoC非常复杂,要想利用测试装置,通过芯片有限数目的外引脚来对芯片的内核进行测试,是不可能实现的,即不具有可测试性。解决这个问题的办法就是在芯片上按边界扫描技术规范设计一套测试结构,使SoC具有可测性。通过该测试结构,测试向量和测试响应数据均由并行转为串行入/出芯片的引脚,从而可使测试深度达到芯核内部的任何部分,实现非常复杂的测试。在非测试模式下,上述测试结构对芯片的功能硬件(包括嵌入软件)是完全透明的,因而不会影响芯片的工作。
(4)超深亚微米IC设计技术
现在,多数IC产品的芯片面积为80~100mm2。目前的领先产品水平是45 nm2,实验室水平是32 nm2。相对于这些变化,基于IP核的SoC设计无法摆脱超深亚微米IC设计难题带来的困扰,如连线延迟、设计迭代、信号的完整性、功耗问题等,与此同时也产生了新的设计技术和标准,如片上总线技术等。
随着数千万门以上的高密度SoC芯片的出现,SoC芯片设计面临着诸多挑战和机遇,加强这方面的研究,必将促进我国的超大规模集成电路的发展。