从MATLAB到嵌入式C代码的实现.doc

从MATLAB到嵌入式C代码的实现.doc

ID:58669402

大小:17.50 KB

页数:8页

时间:2020-10-15

从MATLAB到嵌入式C代码的实现.doc_第1页
从MATLAB到嵌入式C代码的实现.doc_第2页
从MATLAB到嵌入式C代码的实现.doc_第3页
从MATLAB到嵌入式C代码的实现.doc_第4页
从MATLAB到嵌入式C代码的实现.doc_第5页
资源描述:

《从MATLAB到嵌入式C代码的实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、从MATLAB到嵌入式C代码的实现  从设想到硬件实现的鸿沟是许多从事嵌入式开发的工程师们都熟悉的问题。鉴于MATLAB本身的语言特点、强大的函数库和灵活性,算法开发人员经常在算法的概念设计阶段使用它。  随着设计发展到嵌入式应用阶段,真实环境下的实际限制就需要考虑。这往往需要手工地把MATLAB指令翻译成c代码。手工翻译就涉及将MATLAB中方便易行的矩阵计算用c重新实现,这最终导致了同样算法的不同语言版本。在这一阶段,用户需要在多次循环设计时面临验证不同版本的等效性这一额外负担。验证所花费的精力很快就超出开发人员的承受范

2、围,导致设计不是过快固化就是偏离了最初的定义。  最近TheMathWorks公司提供了解决该问题的工具。这个工具能够把一种已明确定义的MATLAB语言子集自动转化为嵌入式c代码,有效减少了MATLAB语言向c代码进行手工翻译的开发和验证成本。  在本篇文章中,我们首先回顾MATLAB在早期设计过程中一些有用的特点。接下来我们要检验从MATLAB“概念”代码人工编译到C代码的低效性,之后会介绍一种不同的工作流程,即直接在MATLAB而不是使用c语言对嵌入式系统进行确切描述。    MATLAB和C代码特点比较    表1比较

3、了MATLAB和c代码在前期开发中的特点。  把一段典型的MATLAB算法转化成嵌入式c代码,要涉及几个相关实现的要求:  ?数据类型管理一在执行前必须定义数据类型。例如在图像处理中,一般用8位无符号整数表示像素值,在音频处理时,一般用16位符号整数表示采样值。而MATLAB中默认使用的64位双精度变量显然没有有效地利用内存。  ?内存静态分配-MATLAB在运行时无缝处理变量大小的动态变化。然而在嵌入式系统实际应用中,我们尽量避免动态内存分配,而是在使用之前给内存分配固定的大小和数据类型。  ?降低计算复杂性和内存占用空间

4、,在把高层算法映射到有限内存和计算资源的硬件上,嵌入式软件设计者会耗费大量精力,同时要保证程序的有效运行。这是一个把设计算法转化成目标处理器中的指令集合和数据定义的过程。  ?支持定点在嵌入式软件或硬件上运行程序,需要整个算法全部严格定义成定点数据类型。  工程师们一般会在把MATLAB算法改写成c代码的时候做这些调整,从而产生了我们前面所说的设计鸿沟。软件工程师在两者间进行翻译的时候,有可能会人工引入一些错误和数值上的改变。如果这些变动目的在于优化程序,算法的设计者就需要更改MATLAB程序从而使两者保持一致。但这个过程引

5、入了不必要的工作量和产生错误的可能性。一种为嵌入式系统设计的基于嵌入式MATLAB的工作流程解决了这个问题。      由MATLAB程序生成嵌入式C代码    不同于其他MATLAB程序,嵌入式MATLAB语言不是对设计的抽象数学表述,它包含了高效嵌入式c指令所需要的所有细节。任何按照嵌入式MATLAB子集要求编写的MATLAB程序都能生成嵌入式c代码。  为确保MATLAB算法与嵌入式MATLAB子集的一致性,需要用户遵守MATLAB子集规定的过程:  ?设置变量的数据类型一可以在MATLAB主程序或编译过程中设定数据类

6、型。因为它允许一个单独的MATLAB函数产生多个使用不同的数据类型、维度和复杂度的c函数变量,因此在编译过程中设置数据类型更为方便。由于用户在函数接口已定义了数据类型和大小,在函数主体中数据类型和大小的变化就可以被自动推断了。  ?设置数列大小变化避免动态数据分配一在MATLAB中,在循环迭代中变量的大小也是可以改变的。用户可以通过使用固定最大值的缓存并对分部寻址的方法来解决嵌入式系统数列大小变化的问题。  ?编写适应于嵌入式MATLAB的函数一不是所有的MATLAB工具箱函数都适用于嵌入式MATLAB子集。这些工具箱函数可

7、以作为模板或者参考,为用户使用嵌入式MATLAB子集在有限计算和存储资源的情况下实现类似功能的高效嵌入式c语言提供帮助。之后我们想要的c代码就可以从嵌入式MATLAB代码中自动生成了。  ?把浮点计算转化为定点计算一用户可以使用FixedPointToolbox中的datalogging和data-typeoverride工具来观察MATLAB算法中变量动态变化范围。这些工具箱帮助用户在MATLAB中把算法转化成优化的定点计算形式。由于这个算法是在MATLAB中编写的,用户可以直接对比定点计算和浮点计算的结果,以保证两者之间

8、的差距在一个可接受的范围内。    嵌入式MATLAB例子    下面我们来举例说明在嵌入式MATLAB中进行算法的语言转换的过程。  首先编写算法的概念程序并加入嵌入式系统的限制,保证程序服从于嵌入式MATALB的要求并在功能上与原程序保持一致。然后从MATLAB桌面自动生成c代码。  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。