控制模型的构建
2004年5月A版
高级图形建模工具已在电子业使用了相当长的时间,问题在于框图只在设计的初始阶段起作用,之后就深藏不露了。然而,软件工具却利用框图来完成差不多全部的算法建模,甚至系统的图形建模,然后生成可自动实现该系统的代码。
航天和汽车等工业已在控制和信号处理系统中充分利用软件工具,它们采用工具作系统建模和产生原型硬件的代码,有些甚至使用工具来生成适合生产系统的软件。最初,自动生成的代码用于原型机平台或者PC,近年来的代码生成变成一种更实用的为嵌入式硬件生成产品质量代码的方法。现在,几十万辆汽车的量产借助于这种方法生成的生产代码。
除了汽车业,航天应用亦获得成功的佐证。在这些工业部门内,安全因素处于绝对优先的地位。有了机器生成代码的保证,才有可能在从每行C或Ada语言的翻译过程中避免软件编程人员的人为影响。
目前使用的这类工具有Mathworks公司的Matlab和国家仪器(NI)公司的Matrixx等。它们为开发人员提供一种使用互连函数块构建系统图形模型的方法。每个函数块可代表一项数学运算,例如乘法或加法,或者更复杂的函数例如快速傅里叶变换,甚至一种由某些结构组成的许多低级块构建的函数。这种环境支持各种类型的框图,某些框图在动态模拟物理系统和机械系统时处理连续时间的建模,而在数字控制设计中用分立时间建模。在这类工具中还有一种Stateflow工具,可让用户综合各种状态的机械框图。
面向控制的系统需要来自实际环境的数据,它有助于在单一环境下处理算法推导和系统建模时的数据,甚至这是一个可执行的规范。Mathworks公司的发言人认为,这正是使用这些工具的最积极因素。
使用带有代码生长的高级建模工具在设计控制系统时往往遵循一种常用方法。典型地,开发过程先从高级模型的脱机模拟开始,接着是在特殊原型化硬件上开发原型,并且由有关供应商提供软件,例如dSpace公司提供这种支持,而Mathworks公司允许在实际环境数据下对模型作微调。在某种情况下,还可在运行过程中对取样率和控制参数等作调整。
开发队伍下一步要处理目标硬件的问题,往往它在存储器和处理器功耗方面,具有比原型硬件更多的限制。在此阶段应该将高级模型交给工程师进行代码手编,或者采用dSpace公司的TargetLink、Mathwork公司的或NI公司的代码发生器等工具来自动生成生产质量的代码。
dspace公司认为这种生产代码的质量与正规软件工程师编写的相同。
由Visual Solutions公司提供的VisSim是另一种建模和模拟环境,它的概念与Simulink相类似,但着重不同的市场范围,主要面向工业控制。该公司认为,自动生成的代码容易安装到工业控制用的DSP中容量有限的片上存储器中。对于采用脉宽调制(PWM)技术的马达用定点闭环控制器的实例,一个正交编码的位置读出系统代码量,只占TI公司的TM320F2812工业控制DSP内1.8KB指令存储器空间和1.4KB数据空间。还有,控制器可在几分钟内移植到F243或F2407芯片内,只有PWM的I/O块,编码器和数字I/O需要变动。
总的来说,自动代码生长只用到应用层,对于操作系统和硬件抽象层要用手编代码。此外,用户界面和协议栈等单元往往留作手编代码或使用其它工具。然而,生成的代码与操作系统的交互是一种需要留意或要有经验的作业。dSpace公司的工作很有效,可将生成的代码与遵从OSEK汽车标准的任何商业操作系统的集成量减至最小。工具供应商Sheet Dynamics公司的DSP开发工具,提供自行设计的操作系统来运行RTW(Real Time Workshop)工具生成的代码,RTW是Mathworks公司的代码发生器,用于Simulink模型以及Analog Devices公司的Sharc系列DSP。
生产代码自动生成对一个项目的贡献,同样跟设计所需的安全性级别有关。NI公司的Greg Wempe称“当您进入安全性很重要的部分时,您必须有更多的胶粘代码来固定全部可能出现的问题”。
NI公司的Matrixx工具库与Matlab有许多相似的地方,它广泛用于美国国防项目。洛克希德马丁公司用它开发概念演示飞机X35的飞行控制算法和自动代码生成,X35联合攻击歼击机是美、英两国空军共同合作的几十亿美元歼击机项目。NI作为数据采集的专业公司,打算将Matrixx扩展到数据采集和过程控制系统的客户,该公司的虚拟仪器工具在这方面不能满足客户的要求。据称LabVIEW目前可处理许多PID控制,但是当你要解决宇航控制器或过程控制的多路输入和输出系统时,就需要Matrixx。
当降低性能和算法复杂性所要求的规模时,就有更多机会将高级模型与目标平台特性配合,从而生成更有效的高性能代码。例如,TargetLink工具库与编译器,扩充专用处理器语言、以及专为现今使用的多种处理器作优化的汇编宏功能一起,即可使问题迎刃而解。有专家称:跨平台独立性只要简单选择所需的目标优化模块和结合目标的处理器编译器即可获得。
人们一直努力为各种DSP定义最佳的软件库,以便代码的生成。结果是,这些工具通常产生可移植的C代码,而不是通用的代码,并称它为人工优化的特定平台的汇编代码函数工具库,绰号叫做“本征代码”。例如,几家模型工具供应商的代码生成工具组成专为TI公司的C6X DSP开发的本征代码工具库。
与DSP相似,使用FPGA作信号处理也越来越多,因为FPGA的速度要比DSP快得多,而且对于某种类型的算法FPGA更快且效率更高。由于信号处理的工程技术人员并不熟悉Verilog和VHDL等硬件描述语言,从高级模型自动生成这种代码就十分重要了。
跨平台方案
当试图在同一系统内的不同硬件平台之间扩大算法模型的实现时,往往会出现问题。例如,软件无线电系统经常由多种FPGA、DSP和通用处理器构成。设计流程需要先从统一的高级模型再进入完全分散的环境,它们每个都是特定的平台。应该注意,除非建立物理协议,完成系统测试是不可能的,而且费用昂贵。一种由Mathworks提供的解决方案是对不同硬件单元的定时和同步特性进行建模,包括嵌入式处理器和数字逻辑等单元的高级系统模型。此外,还要充分利用芯片或板卡供应商提供的接口规范,它们是总线I/O定时和其它特性、并且可‘包装’入系统模型的方块内用作模拟和生成代码的自动调用。
Sheet Dynamics公司认为,不同类型目标之间的分区需要工程判断和反复尝试,特别是系统芯片(SoC)目标。目前的办法几乎都是在对硬件和软件采用独立的设计流程前借助“纸上”分区。它对单一环境下的代码生成、测试和验证人工硬件和软件分区的价值,大于对该过程自动化的价值。下一步是用能够生成代码和具有验证接口的系统级模型代替纸上规范。Sheet Dynamics公司正着手解决此问题,有关分区的主要办法将在DSP开发者的新版本提出,特点是让开发人员对每个Simulink块指定一个电子数据表,它将包含每个块内所需的资源模型,如存储器需求、执行速度等的详细数据,以便估计硬件的需求。
一种还不够完善的可能解决办法是:在系统级模型的环境下允许构建和维护有关验证和评估的工具。结果是对于任何自动生成的代码都具有相似的可信度。这种概念是“顶级”的参考设计,同样含有“顶级”的测试基准。现今,不少供应商提供可再用的模型级测试基准工具来解决该问题,工具可验证在目标平台上生成的代码,甚至验证其它方法开发的代码。
从事建模和代码生成的公司正在审视汽车和航天以外的业界。还有不少面临复杂竞争的部门,它们需要注意带有代码生成功能的系统级建模工具。取得的效果取决于代码生成技术是否符合应用所要求的性能。需要把它看成是连续的统一体,因为我们不断改进使代码达到“足够”好。当程序达到几十万行C语言时,工程师不能继续手写代码了,需要去接受C编译器和硬件综合。■(马诗,李奥)
评论