在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2536|回复: 1

[讨论] 回答:版主关于看了这个贴子你还用老掉牙的方法,开发FPGA很二的回帖

[复制链接]
发表于 2010-7-11 09:27:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
原贴:转平湖秋月的贴子
××××××××××××××××××××××××××××××××××
××××××××××××××××××××××××××××××××××
其实,现在无论TI也好、Xilinx、Altera、微星,ADI、飞思卡尔等世界级大公司都将自己生产的设备用inlined wraper s-function或代码继承工具写成了一个个的simulink模块,还有一些经过实践验证的常用算法MathWorks也用这些工具把他们变成了算法模型,如卡尔曼滤波器,HMM,等。
      有些人用RTW自动生成过DSP或单片机、ARM、FPGA等代码,觉得效率很低?why?主要是国内没一本这方面的书,不过,市面上到处充斥这些垃圾,好像有几本书是关于自动代码产生的,不过,这些书基本上没什么参考价值,这里我无意贬低别人,不过书中的确是连最基本的东西都没搞清楚,如果哪位朋友真正要搞清楚基于模型的设计,你不看30000页以上的外文是绝对做不到的我想除了几个“250”以外,在国内是没什么人会这么做的,所以“基于模型的设计”在国内几乎没什么人知道,这家伙到底是个啥玩应?
      目前一台高档汽车的控制代码就已经超过500万行代码,诺-马的联合攻击机F-35(这是大家比较关心的下一代老美的战机)软件代码超过1500万行,大家想想,如果这些工作让人手工编写C代码,即使上万人要花多少时间,即使这里面一个变量定义有bug查找有多困难?所以,这些新生事物,老美一般采用基于模型的设计方法,一个节约开发成本,二、节约开发时间,三、生成代码的可靠性、一致性等都大为提高。开发这些所需话费的时间只有原来的一半~三分之一,开发费用大概也是这个数字。
    什么是inlined wraper s-function?我想这个没几个人知道的,这样说吧,我们在单片机软件开发的时候,经常要用C代码加汇编的混合编程方法,大家知道,代码中的汇编代码在生成.obj(目标代码)时,是原封不动的传递到下一级的同样,用inlined wraper s-function生成的simulink模型就是把经过验证的现存C代码打包成simulink模型,在代码生成时,
自动释放这些C代码无缝链接到自动生成的C代码中,那些原来inlined wraper s-function中的C代码不会发生任何改变,这样效率和用手写的C代码完全一样。大家understand没有!你同样可以把你常用的C代码打包成inlined wraper ,所以嵌入式开发就变得很简单了。大家主要需要做的事,就是如何建模,如何测试与验证,如何做到模型与代码的跟踪,处理器在还测试模型在还测试,硬件在还测试等,经过这一系列测试与验证,你得到的C代码就是高效的嵌入式实时代码了,我想各位没几个知道还有这样的开发嵌入式系统的方法。
      很多人只知道代码的自动生成,即RTW,他可能连该用RTW-Embedded coder都不知道,那结果是:生成代码的效率相当的糟糕。
就是你用RTW-EC那生成的代码效率也不会高多少,因为你没经过一系列的优化与测试,这些MathWorks公司都给你考虑到了。
       对于大型项目,用基于模型的设计产生的C代码,超过手写代码的例子也比比皆是。好了!各位不会再骂俺了吧,俺至少阅读过10万的英文文档,做过N个实验,包括DSP、dpj 、FPGA、ARM,那天本人高兴了,再给各位做一个汇报!
 楼主| 发表于 2010-7-11 09:28:24 | 显示全部楼层
我转贴“平湖秋月的贴子”
×××××××××××××××××××××××××××
×××××××××××××××××××××××××××
基于模型设计的简介与预计的内容
第一、简介
在目前的市场上,已经很难找到一款不带有嵌入式控制器件的电子、机电产品了,含有嵌入式系统的产品已深入到了我们工作、生活的方方面面。同时,人们对于产品的安全性、实时性、可操作性、特定功能等的要求也越来越高,这就大大增加了嵌入式系统的复杂性和开发难度。
为了在日趋激烈的市场竞争中占据有利地位,开发出高质量的产品,传统的项目开发方法已很难满足这些需求。这是因为,传统项目开发的方法一般分为四个步骤:
① 需求分析与技术规范阶段:一般用纸质文档或电子word文档写成,系统工程师团队以此进行概念和算法研究,评估技术规范的可行性。对于厚厚的技术文档,每个系统工程师对需求和技术规范的理解难免存在偏差。NASA的研究报告指出:“在需求分析阶段产生的错误占整个开发错误的50%以上”,这给后期的项目开发带来了诸多隐患。
② 设计阶段:硬件开发工程师团队根据系统工程师的评估报告,设计制作原型样机(如汽车、航空航天器、电路板等),项目的前期投入巨大、开发周期长,并且不能保证所制作的原型样机一定能满足技术规范要求的技术指标。
③ 实现阶段:软件开发工程师团队根据需求与技术规范,在原型样机上,手工编写C代码或汇编代码,实现技术规范所要求的技术指标。这一阶段需要精通软件的编程人员,花费大量时间编制程序、查错、调试、验证。这明显增加了工作量,延长了研制周期。此外,手工编制的代码良莠不齐,降低了软件运行的可靠度,增加了代码错误的可能性,给新产品上市带来风险。
④ 测试与验证阶段:原型样机制造完成后,才能对产品进行测试与验证,只要上述任何一个过程出现偏差都会导致产品开发的失败,这也是传统项目开发最大的弊病。因此,传统的项目开发方法难免重复多次才能成功,开发风险巨大。

为了解决这些问题,工程师必须找到一种以更快速度、更有效率的开发产品的方法。基于模型的设计就是解决该问题的一种选择。它始于20世纪90年代初的汽车制造和航空航天工业。这些行业需要使用大量的微处理器单元,因此工程师们最先发现了采用建模与仿真的方法来开发嵌入式系统的巨大优势。到了90年代中期,控制算法仿真技术的发展催生了自动代码生成技术。模型仿真和自动代码生成技术在这些行业得到了成功应用,人们清楚地认识到了它在嵌入式系统开发中的经济和高效。这样,基于模型的设计为工程师们提供了一种通用的开发与测试平台,使具有不同工程背景的工程师之间建立起更好的联系,使开发高集成度的复杂系统成为可能。
目前国际上流行的基于模型设计的软件主要有SCADE和MATLAB,它们都成功的应用于大型项目的开发上,例如,欧洲的空客380、美国的GM混合动力车、诺-马公司的联合攻击机等项目。由于MATLAB已经成为一种近乎完美的高度集成化的开放式开发平台,在科学计算与建模方面处于不可替代的领先地位,加之拥有国内众多的用户,因此,本书选用MATLAB软件为例来讲述基于模型设计的方法。
Mathworks公司的Simulink / Stateflow / Embedded MATLAB等工具使得工程师可以在一个可视化的交互开发测试平台上,进行基于模型的设计,工程师还可以利用直观的模块图对系统模型和子系统设计进行可视化处理。
基于模型的设计对应传统的设计方法同样分为四个步骤:
① 可执行、可跟踪的技术规范
在基于模型的设计方法中,系统工程师首先要建立一个系统模型,即通过数学模型来精确、无歧义地描述用户的需求,创建一个可执行、可跟踪的技术规范。工程师可以通过这个系统模型,动态地确认系统性能。
这相对于传统的纸质和电子word文档描述的需求与技术规范有明显的优势。它使得开发团队中的每个成员都能够无歧义地理解并运行该模型,从而可以更加专注于开发主要模型的各个部分,不会因理解的不同造成需求的丢失、冗余或冲突。
② 生成定点模型
系统模型与需求之间可建立双向链接,在整个开发过程中,软件工程师可以对模型进行需求追踪和测试,将产品的缺点暴露在产品开发的初期。根据具体的嵌入式器件和实现条件,对系统模型进行细化与功能重分区,此后重新进行系统测试、设计测试和模型助手测试,验证是否满足需求与技术规范,判断是否还存在缺失的需求,验证是否符合特殊的行业标准(如DO-178B、IEC-61508、MAAB等)。之后再对模型作定点转换,形成简洁、高效的定点模型。
③ 嵌入式代码的自动生成
Mathworks公司的Real-Time Workshop® Embedded Coder™可以将Simulink / Stateflow中的模型自动转换为嵌入式C代码,大大降低嵌入式系统的开发门槛,毕竟不是每个工程师都是编写代码的高手。开发人员可以在Simulink / Stateflow、Embedded MATLAB中建立系统模型、构思解决方案,然后使用RTW-EC自动生成优化的、可移植的、自定义的产品级C代码,并根据特定的目标配置,自动生成嵌入式系统实时应用程序。这就缩短了开发周期,同时避免了人为引入的错误。
④ 连续的测试和验证
基于模型的设计在整个设计过程中都在不断地进行测试和验证,工程师利用测试用例追踪系统级模型和需求,检测设计变更导致的系统输出变化,并快速追踪到变更的来源,通过测试用例还能够了解系统模型的功能覆盖度。
对于嵌入式系统,还需测试其实时性。工程师可以使用硬件在环测试,检测嵌入式代码的实时性。通过测试,收集实时数据、修改代码参数。硬件在环检测能确保在开发早期就完成嵌入式软件的测试。在系统整合时,嵌入式软件测试就可以比传统方法检测得更彻底、更全面,这样可以及早地发现问题,大大降低了解决问题的成本。

本书分为三个部分,第一章至第四章为第一部分,主要介绍了Simulink / Stateflow模型的建立、调试与验证,是基于模型设计的基础。
第一章主要包括:MATLAB部分新功能、基于cell的M-code快速编写、M-Lint实时代码验证器的使用、基于R2010a的Embedded MATLAB编程规范等;
第二章主要包括:Simulink建模与调试、创建模型测试用例、模型的验证与覆盖度分析、基于采样与基于帧的信号分析等;
第三章主要包括:Stateflow建模与调试、简单的应用实例等;
第四章设备驱动模块的创建,主要包括:编写S-function(C MEX S-function、level-2 M S-funcion)、生成S-function builder用户模块、编写Embedded MATLAB模块、利用代码继承工具集成现存C代码到Simulink模型的方法、编写TLC文件等。
第五章为第二部分,介绍了CCS 3.3集成开发环境的使用、讨论了嵌入式代码的快速生成、MATLAB与CCS的交互式开发、8051单片机、ARM7等的嵌入式代码快速生成,传统滤波器设计与基于模型设计的比较等。
第六章为第三部分,包括:传统项目开发方法与基于模型设计的比较;DO-178b航空电子规范的简介、符合DO-178b规范的基于模型设计工作流程;需求与模型间的双向跟踪、模型的系统测试与验证、模型的设计测试、模型覆盖度分析;浮点模型到定点模型的转换;代码的自动生成;生成代码的验证;模型与生成代码的双向跟踪;代码的实时性分析;硬件在环测试等。
本书从筹划到完成经历了三年的时间,得到了两家公司的资助(TI和合众达),书中使用的实验设备大多由他们提供,在此表示感谢。撰写过程中,作者阅读了近10万页的外文资料和技术文档,做了大量的验证实验,有些例子是作者开发实例的总结,可以直接用于生产实践。
书中很多内容为作者所著,不少内容比较新颖,也是首次在国内的公开出版物中出现。由于基于模型的设计涉及的知识太多,无法在短短的500多页的书中得到充分论述,加之时间紧、作者的水平有限,书中的错误或遗漏在所难免,请读者批评指正,或许本书只能起到从中国制造到中国创造的抛砖引玉的效果。欢迎读者参加对基于模型设计技术的讨论。
                                                     作者 :平湖秋月
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-27 21:14 , Processed in 0.026402 second(s), 9 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表