关键词:嵌入式系统;设计模型;硬件优先;协同设计
Abstract: With the extension of embedded system application domain and the enhancement of the complexity on embedded system nature; More and more issues occurs in embedded system design which brings more complications. How to choose a proper design model in our practical embedded system design is an important problem which designer needs to consider. In this paper, we describe two type of popular embedded system design model and analyze, compare the distinction of the two type of model.
Keywords: embedded system; design model; hardware precedence; Co-design
1 引 言
当今,在嵌入式领域,嵌入式技术已经成为新的技术热点。嵌入式系统的最典型的特点是它同人们的日常生活紧密相关,小到MP3、PDA等微型数字化设备,大到信息家电、智能电器、车载GPS等形形色色运用了嵌入式技术的电子产品和各种新型嵌入式设备在数量上现已远远超过了通用计算机。在嵌入式设备发展的30多年的历史中,嵌入式技术从来没有像现在这样风靡过,人类也从来没有像现在这样享受嵌入式技术带来的便利。
嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
从整体来看,我们将嵌入式系统分为两个部分;第一个部分是与应用相关的硬件平台,它负责和外部环境进行交互;第二部分是在这个硬件平台上运行的功能软件。在过去的几年里,微电子技术的迅速发展使得硬件部件的花费降低了很多,这使得有很多人将一些原来必须使用软件的部分用硬件实现了出来,软件和硬件的区分也逐渐变得模糊。然而,嵌入式系统的开发者必须在最短的时限内和最低的花费设计出高性能的系统。最重要的步骤是根据具体需求将整个系统分为硬件部分和软件部分。在通用PC平台上作开发,这种软硬件的划分是很轻松的;但是,基于嵌入式平台,需要考虑很多的因素。例如:为了提高运行速度和减少任务切换的花费,必须将某些功能用硬件来实现。本文重点介绍了两种嵌入式系统设计模型,以及对这两种嵌入式系统设计模型进行了分析比较。
2 硬件优先的设计方法
硬件优先的设计方法,即传统的系统设计方法,它是一种依靠顺序控制流的做法。
这种方法首先是对整个系统的需求分析,由于嵌入式系统的特殊性,需要仔细考虑功能性、能耗、成本花费等各个方面。在完成了需求分析以后,下一步要进行的就是软硬件部分的划分,这一步十分重要,从这个时候起,系统将要被分为软件和硬件两个部分:
(1) 硬件部分包括系统的硬件平台以及某些用专用硬件(例如:ASIC和Ip-cores)实现的功能模块;
(2) 软件部分是指经过特殊处理过的操作系统和建立在操作系统之上的一些功能模块。
第二步是相当重要的一个步骤,它通常是由嵌入式系统设计者根据自己的经验和直觉来做的。在这个部分完成以后,就要进行硬件的设计和实现。在硬件部分可用以后,就可以开始软件部分的实现了。在这个序列化的设计方法的最后一步就是整合与测试,即将软件和硬件部分融合到一起来评估整个系统的性能。
图1硬件优先的嵌入式设计模型
尽管硬件优先的设计模型存在有一些问题(在文中第四部分详细说明),但它依然是一种很流行的方案。在一些小型和中型复杂度的系统中,由于硬件的复杂度不高,而且技术也比较成熟,通常都会选择这种方法;但是在一些大型的系统中,这种方法就不是很适宜了,需要更先进的设计模型。
3 软硬件协同设计方法
软硬件协同设计是在系统目标要求的指导下,通过综合分析系统软硬件功能及现有资源,最大限度地挖掘系统软硬件之间的并发性,协同设计软硬件体系结构,以使系统能够工作在最佳工作状态。它的实质就是让软件和硬件体系作为一个整体并行设计、找到软硬件的最佳结合点,使它们能够以最有效的方式相互作用,互相结合,从而使系统工作在最佳状态。
这种方法的第一步需要用形式化的方法对系统的需求进行描述。有几种方法可以采用:Petri网、数据流图以及状态机。这种设计方式试图利用这些数学上的推理方法来对系统行为做一个全面的描述,在对系统进行形式化的描述以后,就可以将系统分解为一些功能模块,每个模块都实现整体功能的一部分。
在第一步中得到的功能模块既可以用硬件也可以用软件来实现。利用形式化的方法,我们可以采用最佳的选择。在软硬件划分的过程中,通过各方面的评估,例如:时间复杂度、花费估计等得到一组最佳的选择。在得到了最优解以后,就是实现各模块了;但是,这里的实现仅仅只是理论上的,例如:硬件模块用VHDL描述,软件模块用C或C++语言表示。
图2 软硬件协同设计模型
最后一步就是系统整合了。在这个过程中,将所有的模块组合到一起,然后验证这些模块的组合是否符合系统的形式化说明;如果不符合,就要重新进行软硬件的划分。当前的研究热点之一是对验证算法的理论研究,利用这些理论算法,完全可以将软硬件的划分和模块的验证发展为自动化的过程。
由于软硬件的划分是基于理论算法的,这在设计中可以尽早的暴露问题,以减少损失。但是这种设计模型也有其局限性(在文中第四部分详细说明)。
4 两种模型的分析与比较
4.1 硬件优先设计模型分析
利用硬件优先这种方法设计的嵌入式系统一直到最后一步才能验证系统设计的正确性。因此,在系统开发过程中通过反复修改、反复试验的方法使产品达到设计要求,这在很大程度上依赖于设计者的经验;而且设计周期长、费用开支大,产品质量难以保证;这是因为在反复修改过程中,常会在某些方面背离原始设计的要求。因此,为了降低设计的风险,设计人员会选择采用己经成熟的模块,而不是自己重新设计;与此同时,这种设计方法还有一个很大的缺点:在硬件部分可用之前是不能实施软件模块。由于以上问题,硬件优先设计方法适用于在一些小型和中型复杂度的系统中;在这些系统中,硬件的复杂度不高,而且技术也相对比较成熟;因此通常都会选择这种方法。
4.2 软硬件协同设计模型分析
在软硬件协同设计模型中,由于软硬件的划分是基于理论算法的,这在设计中可以尽早的暴露问题,以减少损失;但是,这种设计模型也有其局限性,具体表现在:
(1) 可有的信息是否足够。若要采用形式化的方法描述整个系统,并且正确的将系统分解为多个功能模块的组合体;设计者需要知道整个系统中的功能描述;但是,有些第三方开发的模块,设计者是无法知道其内部功能实现的;这种情况可能会导致系统划分过程的不准确。
(2) 软硬件模块互相替换的自由度。在这种设计模型中,将系统分为软硬件模块后,可认为各个模块都是能够互相转换的:即原先被划分为用硬件实现的模块也可以用软件来实现,反之亦然。从理论上来看这是没有问题的,但在实际的应用中是不能达到这么灵活的理论高度的。
4.3 两种模型的综合比较
一般来说,嵌入式系统设计可以分为系统描述、系统设计、系统评价与综合实现四个阶段。上述的两种设计模型在这四个阶段中各有异同:
(1) 在系统描述阶段,虽然两种设计方法都是将系统功能全面表述出来,但软硬件协同设计的方法除了全面描述系统功能外、还深入挖掘软硬件之间的协同性,从而使系统能够稳定、高效地工作。
(2) 在系统设计阶段,两种设计方法都将完成软硬件功能的分配,即确定哪些功能由硬件模块来实现,哪些系统功能由软件模块来实现,以及系统映射,即根据系统描述和功能分配选择确定系统的体系结构。在软硬件功能分配阶段,由于硬件模块的可编程性和嵌入式系统的变异性,软硬件的界限已经不十分清楚;因此,软硬件的功能划分是一个复杂而艰苦的过程;这一方面是由于软硬件划分的研究工作还处在初级阶段;另一方面则是由于这一问题内在的复杂性。在进行软硬件功能分配时,既要考虑市场可以提供的资源状况,又要考虑系统造价、开发周期等因素。硬件优先的设计方法一般根据设计者的经验来确定软硬件的划分,而软硬件协同的设计方法则利用形式化的方法,通过各方面的评估,例如:时间复杂度、花费估计等得到一组最佳的选择。在系统映射阶段,就是要确定系统将采用哪些硬件模块(如微处理器、微控制器、存储器、FPGA、DSP等部件)、软件模块(操作系统、驱动程序等)以及软硬件模块之间的联系媒体(如共享存储器、总线等),在这一阶段,采用硬件优先设计方法的设计者为了降低设计的风险,通常会选择采用己经成熟的硬件模块,而不是自己重新设计;而采用软硬件协同设计方法的设计者则需要将软件和硬件体系作为一个整体并行设计、找到软硬件的最佳结合点;这一过程显然是一个复杂而艰苦的过程,但用这种方法可以使软硬件能够以最有效的方式相互作用,互相结合,从而使系统工作在最佳状态。
(3) 在系统评价阶段,即检查确认系统设计的正确性的过程。采用硬件优先方法的设计者在系统开发过程中通过反复修改、反复试验的方法来对设计结果进行验证评估,这在很大程度上依赖于设计者的经验;而采用软硬件协同的设计者则通过形式化评价技术,通过建立精确的数学模型、利用数学手段检测系统的正确性。因此,对系统中的不确定因素及隐性指标的检查有特殊效果。
(4) 在综合实现阶段,即软件系统、硬件系统的具体制作的过程。硬件优先的设计方法是先进行硬件部分的实现,在硬件部分完成后再进行软件部分的实现;而软硬件协同的设计方法则是将软件和硬件体系作为一个整体并行设计、通过协同设计,深入挖掘软硬件之间的协同性,从而使设计出来的系统能够稳定、高效地工作。
通过上述的分析与比较可以看出硬件优先的设计方法适用于一些小型和中型复杂度的系统中,在这些系统中由于硬件的复杂度不高,而且技术也比较成熟,选择这种方法比较简单易行;但是在一些大型的系统中,这种方法就不是很适宜了,需要更先进的设计模型。软硬件协同的设计模型比较适合在一些大型的系统中运用,在一些大型的系统设计中,设计者的主要任务就是要在系统描述的基础上确定功能模块、分配系统功能、建立模块间的联系、规定模块之间的作用方式。软硬件协同设计模型与硬件优先设计模型相比,更能有效地解决好这些问题。
5 结 论
本文介绍了两种用于嵌入式系统开发的设计模型:硬件优先和软硬件协同设计模型。在硬件优先设计模型中,要求先根据具体的需求设计出硬件平台,然后在这个平台的基础上进行软件开发;通常,硬件平台的开发者还要提供相应的操作系统。在另外一种设计模型中,可以利用一些理论算法对划分的软硬件模块进行验证。当然,这两种模型并非完美,它们都有各自的优缺点,这需要在实际的应用中根据实际需要进行适当的选择以设计出合适的满足需要的嵌入式系统。