Copyright2014FUJITSULIMITEDSimulink及基于模型设计的嵌入式应用FNST第三事业部第一开发部主任工程师孙忠潇Simulink基础版主及代码生成版主:hyowinner2014年5月24日2Copyright2014FUJITSULIMITED目录@Simulink是什么各家释意用户群分析学习难度分析@Simulink能够做什么视频处理音频处理工业流程模拟发动机控制自定义娱乐工具箱TargetSupportPackage目标芯片的驱动工具箱@基于模型的嵌入式设计及应用MBD(ModelbasedDesign)代码自动生成相关知识MBDdemo——滤波器建模,生成代码以及验证3Copyright2014FUJITSULIMITEDSimulink是什么@百度:Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。@Matlab2013b:simulinkopenstheSimulink®LibraryBrowser.@Hyowinner:Simulink=Simu+LinkSimu-Simulation-仿真-具象化逻辑及结果Link-连接-模块与库连接-设计与需求连接-模型与代码连接-你我与Matlab/Simulink连接4Copyright2014FUJITSULIMITEDSimulink是什么模块库模型波形从SimulinkBrowser里选择模块,建立模型并且进行仿真。普遍认识5Copyright2014FUJITSULIMITEDSimulink是什么根据论坛回帖数统计判断,大概只有Matlab的1/8粉丝Simulink的使用者较多都有着坚实的Matlab技术基础阶段Simulink的使用者较多都有耐心,入门门槛较高特点Simulink的使用者都期待其功能更加强大,能快速实现想要做的事期待6Copyright2014FUJITSULIMITEDSimulink是什么要求整体把握,理有点难度,一开始就要面对整个系统Simulink上手容易,一般从调用简单的绘图函数或矩阵创建开始Matlab学科分支多,理论深度达,后期依靠的是学术理论造诣MatlabSimulink运行机制与流程的理解,会加速应用的熟练度Simulink7Copyright2014FUJITSULIMITEDSimulink能够做什么跟Matlab一样功能强大,具有动态系统仿真的功能,包含信号处理,图像视频处理,数值运算,控制系统等等各个方面。视频处理视频帧差分使能录像仿真8Copyright2014FUJITSULIMITEDSimulink能够做什么Simulink作为功能强大的动态仿真工具,通过模型建立,运行仿真,甚至自定义模块应用于信号处理音频处理,数值运算,控制系统等等各个方面。音乐播放器使用自带模块搭建音频解析器,方便快捷。稍作加工即可实现:播放开始后进行音量调节、暂停、继续以及播放停止等动作。构成音乐播放器9Copyright2014FUJITSULIMITEDSimulink能够做什么跟GUI结合开发工业仿真软件,具有动态系统仿真的功能,包含信号处理,图像视频处理,流程模拟,数值计算,控制系统,等各个方面。工业仿真工业乙醇连续发酵仿真01002003004000100200300stepsconcentration(kg/m3)01002003004000100200300stepsconcentration(kg/m3)01002003004000100200300stepsconcentration(kg/m3)01002003004000100200300stepsconcentration(kg/m3)01002003004000100200300stepsconcentration(kg/m3)01002003004000100200300stepsconcentration(kg/m3)01002003004000100200300stepsconcentration(kg/m3)10Copyright2014FUJITSULIMITEDSimulink能够做什么使用Simulink进行汽车发动机控制规格设计,采用基于模型设计的嵌入式软件开发流程,经过代码自动生成和各个阶段的严格测试,实现汽车发动机控制代码的量产。发动机控制11Copyright2014FUJITSULIMITEDSimulink能够做什么SFunction是SimulinkEngine运行的机理体现,同时也给予用户自定义模块的功能甚至可以自己定义工具箱加入到SimulinkBrowser中,让你随心所欲!自定义功能自定义娱乐工具箱Simulink能够做什么TargetSupportPackage是针对某一系列MCU/DSP芯片的驱动代码配置与自动生成工具箱,给MBD嵌入式开发者提供快速算法验证环境,FM4TSP主要有以下优点:1.无需编写驱动代码:使用者通过简单的对话框设置即可生成驱动代码2.生成代码有效:错误的不合理的驱动配置模型会通过错误提示让使用者改正3.流程自动化:从模型代码生成,IDE启动,工程创建,编译,下载一键完成TSP12Copyright2014FUJITSULIMITED13Copyright2014FUJITSULIMITED基于模型的嵌入式设计及应用ModelBasedDesign,基于模型设计是一种流程,较之传统软件开发流程而言,使开发者能够更快捷、以更少的成本花费进行开发。适用范围包括信号处理,控制系统,通信行业。表述系统的模型是整个开发流程的中心,贯穿需求,设计,实施与测试。模型本身就是一个可执行的规格书,开发者修改优化模型就是对设计的修缮,无需到实施之后通过测试再进行系统验证,可以通过仿真在早期设计时期就及时进行正确性验证,并且在实施阶段,特别是对于嵌入式软件,代码由模型生成。基于模型设计14Copyright2014FUJITSULIMITED基于模型的嵌入式设计及应用以一个简单的滤波器设计作为需求,通过基于模型设计简化流程将需求与算法设计绑定起来,以保证所有需求都被覆盖,最终实现需求与设计的一致性。需求15Copyright2014FUJITSULIMITED基于模型的嵌入式设计及应用根据滤波器的数学表达关系进行模型建立模型,并设计输入输出进行仿真,以验证模型计算的正确性。模型输入包括滤波系数和需要滤波的信号(带噪声的正弦波)仿真时,选择合适的算法至关重要。模型建立与仿真模型建立与仿真16Copyright2014FUJITSULIMITED基于模型的嵌入式设计及应用应用于嵌入式开发的模型往往需要选择固定步长的解算器,而不选用变步长的解算器这是因为微控制器的时钟信号是以固定频率的周期工作,虽然可以实现倍频和分频,往往在一个应用的过程中每个基础时钟信号是保持不变的。解算器的选择解算器的选择17Copyright2014FUJITSULIMITED基于模型的嵌入式设计及应用SystemTargetFile是Simulink生成代码不可或缺的起到总领作用的文件。它决定了自身被选择时模型配置的动作,自定义GUI的追加,模型生成代码的类型,以及主函数main的生成与否,生成方式等等。grt.tlc:快速原型ert.tlc:嵌入式C代码,通常使用此项或在此之上进行自定义硬件目标TSP工具的定制custom:往往都是以ert.tlc为基础,追加自定义硬件对应的配置或功能系统目标文件所谓tlc即TargetLanguageCompiler的缩写是一种解释性编程语言,可以将模型编译出来的rtw文件按照block级tlc程序转化为目标代码。联编文件联编文件,即makefile文件(mk),在make_rtw指令下以系统模板联编文件(SystemTemplateMakefile即system.tmf)为基础,生成model.mk联编程序,主要负责将模型产生的程序,附件的库文件和自定义的模块进行编译和链接。系统模板联编文件(tmf)允许用户指定编译器,编译选项,以及可执行文件生成时所附带的信息。基于模型的嵌入式设计及应用18Copyright2014FUJITSULIMITED通过rmisetup注册Active-Xcontrols后SimulinkModel菜单栏增加了需求追踪功能追加了链接之后,文档中出现Simulink的小图标,能够从需求文档链接到模型;每当需求出现了变更可以通过链接检查是否及时反映到所设计的模型中,以保持一致性需求与模型关联基于模型的嵌入式设计及应用19Copyright2014FUJITSULIMITED随着模型复杂度的提高,人工检查模型属性,配置以及对于MAAB标准的遵守度逐渐成为负担,使用Simulink工具栏中的ModelAdvisor工具可以自动进行标准以及模型配置和属性的检查,并产生检查报告。检查的内容:1.是否会导致系统仿真出错2.是否会导致生成的代码无效(SimulinkCoder&EmbeddedCoder)3.生成的代码是否符合安全标准(SimulinkCoder&EmbeddedCoder&SimulinkV&V)模型检查与验证基于模型的嵌入式设计及应用20Copyright2014FUJITSULIMITED使用ProfilerReport来了解模型每个环节的时间消耗和调用次数。报告中会提示模型执行时间,调用函数清单和每个函数调用的详细效率分析信息使用注意:1.如果算法模型使用ModelReferrence引用,那么需要使该模型在Normal模式2.在进行Profiler时并不分析ModelReferrence内部,需要单独分析模型效率分析基于模型的嵌入式设计及应用21Copyright2014FUJITSULIMITED初次尝试,先使用ert.tlc作为系统目标文件生成嵌入式C代码ert.tlc会启动代码生成过程,将模块转化为C代码未经过任何优化的代码可读性不强代码自动生成初次尝试,先使用ert.tlc作为系统目标文件生成嵌入式C代码ert.tlc会启动代码生成过程,将模块转化为C代码未经过任何优化的代码可读性不强代码自动生成基于模型的嵌入式设计及应用代码自动生成—提高可读性22Copyright2014FUJITSULIMITED1.为模型增加信号名2.通过信号线属性配置存储数据类型代码自动生成—提高可读性1基于模型的嵌入式设计及应用1.为模型增加信号名2.通过M代码在BaseWorkspace创建信号数据对象3.关联数据对象与模型信号disableimplicitsignalresolution(gcs)命令可自动关联代码自动生成—提高可读性2代码自动生成—提高可读性223Copyright2014FUJITSULIMITED基于模型的嵌入式设计及应用1.将模型转换为子系统2.在BlockParameter中配置为原子子系统3.CodeGeneration页面定义函数名与文件名代码自动生成—结构化24Copyright2014FUJITSULIMITED基于模型的嵌入式设计及应用最终目的是将通过模型生成的代码下载到目标硬件中去使用,那么模型生成的代码能不能如实地反映仿真过程是必须要去验证的。模型与代码的一致性验证可以通过处理器在环仿真(ProcessorIntheLoop,PIL)来验证。代码的有效性验证25Copyright2014FUJITSULIMITEDMoreaboutSimulink:tobecontinued26Copyright2014FUJITSULIMITED