一、嵌入式系统设计方法变化的背景
嵌入式系统设计方法的演化总的来说是因为应用需求的牵引和IT技术的推动。
随着微电子技术的不断创新和发展,大规模集成电路的集成度和工艺水平不断提高。硅材料与人类智慧的结合,生产出大批量的低成本、高可靠性和高精度的微电子结构模块,推动了一个全新的技术领域和产业的发展。在此基础上发展起来的器件可编程思想和微处理(器)技术可以用软件来改变和实现硬件的功能。微处理器和各种可编程大规模集成专用电路、半定制器件的大量应用,开创了一个崭新的应用世界,以至广泛影响着并在逐步改变着人类的生产、生活和学习等社会活动。
计算机硬件平台性能的大幅度提高,使很多复杂算法和方便使用的界面得以实现,大大提高了工作效率,给复杂嵌入式系统辅助设计提供了物理基础。
高性能的EDA综合开发工具(平台)得到长足发展,而且其自动化和智能化程度不断提高,为复杂的嵌入式系统设计提供了不同用途和不同级别集编辑、布局、布线、编译、综合、模拟、测试、验证和器件编程等一体化的易于学习和方便使用的开发集成环境。
硬件描述语言HDL(Hardware DescrIPtion Language)的发展为复杂电子系统设计提供了建立各种硬件模型的工作媒介。它的描述能力和抽象能力强,给硬件电路,特别是半定制大规模集成电路设计带来了重大的变革。目前,用得较多的有已成为IEEE为 STD1076标准的VHDL、IEEE STD 1364标准的Verilog HDL和Altera公司企业标准的AHDL等。
由于HDL的发展和标准化,世界上出现了一批利用HDL进行各种集成电路功能模块专业设计的公司。其任务是按常用或专用功能,用HDL来描述集成电路的功能和结构,并经过不同级别的验证形成不同级别的IP内核模块,供芯片设计人员装配或集成选用。
IP(Intellectual Property)内核模块是一种预先设计好的甚至已经过验证的具有某种确定功能的集成电路、器件或部件。它有几种不同形式。IP内核模块有行为(behavior)、结构(structure)和物理(physical)3级不同程度的设计,对应有主要描述功能行为的“软IP内核(soft IP core)”、完成结构描述的“固IP内核(firm IP core)”和基于物理描述并经过工艺验证的“硬IP内核(hard IP core)”3个层次。这相当于集成电路(器件或部件)的毛坯、半成品和成品的设计技术。
软IP内核通常是用某种HDL文本提交用户,它已经过行为级设计优化和功能验证,但其中不含有任何具体的物理信息。据此,用户可以综合出正确的门电路级网表,并可以进行后续结构设计,具有最大的灵活性,可以很容易地借助于EDA综合工具与其他外部逻辑电路结合成一体,根据各种不同的半导体工艺,设计成具有不同性能的器件。可以商品化的软IP内核一般电路结构总门数都在5000门以上。但是,如果后续设计不当,有可能导致整个结果失败。软IP内核又称作虚拟器件。
硬IP内核是基于某种半导体工艺的物理设计,已有固定的拓扑布局和具体工艺,并已经过工艺验证,具有可保证的性能。其提供给用户的形式是电路物理结构掩模版图和全套工艺文件,是可以拿来就用的全套技术。
固IP内核的设计深度则是介于软IP内核和硬IP内核之间,除了完成硬IP内核所有的设计外,还完成了门电路级综合和时序仿真等设计环节。一般以门电路级网表形式提交用户使用。
TI,Philips和Atmel等厂商就是通过Intel授权,用其MCS51的IP内核模块结合自己的特长开发出有个性的与Intel MCS51兼容的单片机。
常用的IP内核模块有各种不同的CPU(32/64位CISC/RISC结构的CPU或8/16位微控制器/单片机,如8051等)、32/64位 DSP(如320C30)、DRAM、SRAM、EEPROM、Flashmemory、A/D、D/A、MPEG/JPEG、USB、PCI、标准接口、网络单元、编译器、编码/解码器和模拟器件模块等。丰富的IP内核模块库为快速地设计专用集成电路和单片系统以及尽快占领市场提供了基本保证。
软件技术的进步,特别是嵌入式实时操作系统EOS(Embedded Operation System)的推出,为开发复杂嵌入式系统应用软件提供了底层支持和高效率开发平台。EOS是一种功能强大、应用广泛的实时多任务系统软件。它一般都具有操作系统所具有的各种系统资源管理功能,用户可以通过应用程序接口API调用函数形式来实现各种资源管理。用户程序可以在EOS的基础上开发并运行。它与通用系统机中的OS相比,主要有系统内核短小精悍、开销小、实时性强和可靠性高等特点。完善的EOS还提供各种设备的驱动程序。为了适应网络应用和 Internet应用。还可以提供TCP/IP协议支持。目前流行的EOS有3Com公司的Palm OS、Microsoft公司的Windows CE和Windows NT Embedded4.0、日本东京大学的Tron和各种开放源代码的嵌入式Linux以及国内开发成功的凯思集团的Hopen OS和浙江大学的HBOS。
二、嵌入式系统设计方法的变化
过去擅长于软件设计的编程人员一般对硬件电路设计“敬而远之”,硬件设计和软件设计被认为是性质完全不同的技术。
随着电子信息技术的发展,电子工程出身的设计人员,往往还逐步涉足软件编程。其主要形式是通过微控制器(国内习惯称作单片机)的应用,学会相应的汇编语言编程。在设计规模更大的集散控制系统时,必然要用到已普及的PC机,以其为上端机,从而进一步学习使用Quick BASIC,C,C++,VC和VB等高级语言编程作系统程序,设计系统界面,通过与单片机控制的前端机进行多机通信构成集中分布控制系统。
软件编程出身的设计人员则很少有兴趣去学习应用电路设计。但是,随着计算机技术的飞速发展,特别是硬件描述语言HDL的发明,系统硬件设计方法发生了变化,数字系统的硬件组成及其行为完全可以用HDL来描述和仿真。在这种情况下,设计硬件电路不再是硬件设计工程师的专利,擅长软件编程的设计人员可以借助于HDL工具来描述硬件电路的行为、功能、结构、数据流、信号连接关系和定时关系,设计出满足各种要求的硬件系统。
EDA工具允许有两种设计输入工具,分别适应硬件电路设计人员和软件编程人员两种不同背景的需要。让具有硬件背景的设计人员用已习惯的原理图输入方式,而让具有软件背景的设计人员用硬件描述语言输入方式。由于用HDL描述进行输入,因而与系统行为描述更接近,且更便于综合、时域传递和修改,还能建立独立于工艺的设计文件,所以,擅长软件编程的人一旦掌握了HDL和一些必要的硬件知识,往往可以比习惯于传统设计的工程师设计出更好的硬件电路和系统。所以,习惯于传统设计的工程师应该学会用HDL来描述和编程。
三、嵌入式系统设计的3个层次
嵌入式系统设计有3个不同层次:
1. 第1层次:以PCB CAD软件和ICE为主要工具的设计方法。
这是过去直至现在我国单片机应用系统设计人员一直沿用的方法,其步骤是先抽象后具体。
抽象设计主要是根据嵌入式应用系统要实现的功能要求,对系统功能细化,分成若干功能模块,画出系统功能框图,再对功能模块进行硬件和软件功能实现的分配。
具体设计包括硬件设计和软件设计。硬件设计主要是根据性能参数要求对各功能模块所需要使用的元器件进行选择和组合,其选择的基本原则就是市场上可以购买到的性价比最高的通用元器件。必要时,须分别对各个没有把握的部分进行搭试、功能检验和性能测试,从模块到系统找到相对优化的方案,画出电路原理图。硬件设计的关键一步就是利用印制板(PCB)计算机辅助设计(CAD)软件对系统的元器件进行布局和布线,接着是印制板加工、装配和硬件调试。
工作量最大的部分是软件设计。软件设计贯穿整个系统的设计过程,主要包括任务分析、资源分配、模块划分、流程设计和细化、编码调试等。软件设计的工作量主要集中在程序调试,所以软件调试工具就是关键。最常用和最有效的工具是在线仿真器(ICE)。
2. 第2层次:以EDA工具软件和EOS为开发平台的设计方法。
随着微电子工艺技术的发展,各种通用的可编程半定制逻辑器件应运而生。在硬件设计时,设计师可以利用这些半定制器件,逐步把原先要通过印制板线路互连的若干标准逻辑器件自制成专用集成电路(ASIC)使用,这样,就把印制板布局和布线的复杂性转换成半定制器件内配置的复杂性。然而,半定制器件的设计并不需要设计人员有半导体工艺和片内集成电路布局和布线的知识和经验。随着半定制器件的规模越来越大,可集成的器件越来越多,使印制板上互连器件的线路、装配和调试费用越来越少,不仅大大减少了印制板的面积和接插件的数量,降低了系统综合成本,增加了可编程应用的灵活性,更重要的是降低了系统功耗,提高了系统工作速度,大大提高了系统的可靠性和安全性。
这样,硬件设计人员从过去选择和使用标准通用集成电路器件,逐步转向自己设计和制作部分专用的集成电路器件,而这些技术是由各种EDA工具软件提供支持的。
半定制逻辑器件经历了可编程逻辑阵列PLA、可编程阵列逻辑PAL、通用阵列逻辑GAL、复杂可编程逻辑器件CPLD和现场可编程门阵列FPGA的发展过程。其趋势是集成度和速度不断提高,功能不断增强,结构趋于更合理,使用变得更灵活和方便。
设计人员可以利用各种EDA工具和标准的CPLD和FPGA等,设计和自制用户专用的大规模集成电路。然后再通过自下而上的设计方法,把用半定制器件设计自制的集成电路、可编程外围器件、所选择的ASIC与嵌入式微处理器或微控制器在印制板上布局、布线构成系统。
3. 第3层次:以IP内核库为设计基础,用软硬件协同设计技术的设计方法。
20世纪90年代后,进一步开始了从“集成电路”级设计不断转向“集成系统”级设计。目前已进入单片系统SOC(System o-n a chip)设计阶段,并开始进入实用阶段。这种设计方法不是把系统所需要用到的所有集成电路简单地二次集成到1个芯片上,如果这样实现单片系统,是不可能达到单片系统所要求的高密度、高速度、高性能、小体积、低电压、低功耗等指标的,特别是低功耗要求。单片系统设计要从整个系统性能要求出发,把微处理器、模型算法、芯片结构、外围器件各层次电路直至器件的设计紧密结合起来,并通过建立在全新理念上的系统软件和硬件的协同设计,在单个芯片上完成整个系统的功能。有时也可能把系统做在几个芯片上。因为,实际上并不是所有的系统都能在一个芯片上实现的;还可能因为实现某种单片系统的工艺成本太高,以至于失去商业价值。目前,进入实用的单片系统还属简单的单片系统,如智能IC卡等。但几个着名的半导体厂商正在紧锣密鼓地研制和开发像单片PC这样的复杂单片系统。
单片系统的设计如果从零开始,这既不现实也无必要。因为除了设计不成熟、未经过时间考验,其系统性能和质量得不到保证外,还会因为设计周期太长而失去商业价值。
为了加快单片系统设计周期和提高系统的可靠性,目前最有效的一个途径就是通过授权,使用成熟优化的IP内核模块来进行设计集成和二次开发,利用胶粘逻辑技术GLT(Glue Logic Technology),把这些IP内核模块嵌入到SOC中。IP内核模块是单片系统设计的基础,究竟购买哪一级IP内核模块,要根据现有基础、时间、资金和其他条件权衡确定。购买硬IP内核模块风险最小,但付出最大,这是必然的。但总的来说,通过购买IP内核模块不仅可以降低开发风险,还能节省开发费用,因为一般购买IP内核模块的费用要低于自己单独设计和验证的费用。当然,并不是所需要的IP内核模块都可以从市场上买得到。为了垄断市场,有一些公司开发出来的关键IP内核模块(至少暂时)是不愿意授权转让使用的。像这样的IP内核模块就不得不自己组织力量来开发。
这3个层次各有各的应用范围。从应用开发角度看,在相当长的一段时间内,都是采用前2种方法。第3层次设计方法对一般具体应用人员来说,只能用来设计简单的单片系统。而复杂的单片系统则是某些大的半导体厂商才能设计和实现的,并且用这种方法实现的单片系统,只可能是那些广泛使用、具有一定规模的应用系统才值得投入研制。还有些应用系统,因为技术问题或商业价值问题并不适宜用单片实现。当它们以商品形式推出相应单片系统后,应用人员只要会选用即可。所以,3个层次的设计方法会并存,并不会简单地用后者取代前者。 初级应用设计人员会以第1种方法为主;富有经验的设计人员会以第2种方法为主;很专业的设计人员会用第3种方法进行简单单片系统的设计和应用。但所有的设计人员都可以应用半导体大厂商推出的用第3种方法设计的专用单片系统。