+ Matlab与DSP程序开发
时间:10-02
整理:3721RD
点击:
Matlab具有强大的分析、计算和可视化功能,利用Matlab提供的数十个专业工具箱,可以方便、灵活地实现对自动控制、信号处理、通信系统等的算法分析和仿真,是算法设计人员和工程技术人员必不可少的软件工具。 数字信号处理器(DSP)作为一种可编程专用芯片,是数字信号处理理论实用化过程的重要技术工具,在语言处理、图像处理等技术领域得到了广泛的应用。但对算法设计人员来讲,利用汇编语言或C语言进行DSP功能开发,对于具有周期长、效率低的缺点,不利于算法验证和产品的快速开发。
由MathWorks公司和TI公司联合开发的Matlab Link for CCS Development Tools(CCSLink)是Matlab6.5版本(Release13)中增加的一个全新的工作箱,它提供了Matlab、CCS和DSP目标板的接口,利用此工具箱可以像操作Matlab变量一样来操作DSP器件的存储器和寄存器,使开发人员在Matlab环境下完成对DSP的操作,从而极大提高DSP应用系统的开发进程。
1 安装Matlab
安装流程与常见的Windows下的软件安装没有什么不同,需要注意的是请安装完整版本或者在组件选择的时候安装Matlab Coder组件。安装完成后可在Matlab应用程序标签找到Matlab Coder组件
如下图:
2 编写函数 M文件
在Matlab下有两种常用的M文件--脚本及函数,需要注意的是函数M文件才是能够生成C/C++代码。所以,第一步是讲我们写的算法写成函数形式的M文件。
这里我以 y = 2x + 5 这个一次函数为例。
新建函数 M文件
3 印证算法
在命令窗口输入 y = fun(5),理论上我们会得到结果 y = 15.
在Matlab命令行窗口,除了可以执行内置函数,M文件等,还可以执行一些命令,例如在Windows版本下,可以使用md、cd、dir 等命令,也可以通过这些命令却换工作状态。
在Matlab中我们不需要申明变量,但是在C/C++ 中必须显示制定变量类型。在我们的函数M文件fun.m中只有一个输入变量,在这里制定它的类型为32-bit 无符号类型变量。
选择输出类型为C/C++静态库,并勾选只生成代码复选框,因为在这里我们只需要得到生成的原文件,不需要Matlab为我们编译成可执行文件。
接着点击编译开始生成文件,编译文件后还可以查看报告,在报告窗口中可以获取更为详细的信息。
至此我们就用Matlab Coder 组件,将我们编写的Matlab程序代码生成C/C++程序代码。可以简单看一下Matlab Coder生成的主要代码(位于fun.c),可以发现生成的代码还是比较注重效率的,比如乘法计算使用移位来提高效率(左移一位等同于数值乘以二,右移一位等同于数值除以二,不过对于DSP来说支持硬件乘法运算,效率还是很高的)。
下面附上DSP与Matlab相关代码
由MathWorks公司和TI公司联合开发的Matlab Link for CCS Development Tools(CCSLink)是Matlab6.5版本(Release13)中增加的一个全新的工作箱,它提供了Matlab、CCS和DSP目标板的接口,利用此工具箱可以像操作Matlab变量一样来操作DSP器件的存储器和寄存器,使开发人员在Matlab环境下完成对DSP的操作,从而极大提高DSP应用系统的开发进程。
1 安装Matlab
安装流程与常见的Windows下的软件安装没有什么不同,需要注意的是请安装完整版本或者在组件选择的时候安装Matlab Coder组件。安装完成后可在Matlab应用程序标签找到Matlab Coder组件
如下图:
2 编写函数 M文件
在Matlab下有两种常用的M文件--脚本及函数,需要注意的是函数M文件才是能够生成C/C++代码。所以,第一步是讲我们写的算法写成函数形式的M文件。
这里我以 y = 2x + 5 这个一次函数为例。
新建函数 M文件
3 印证算法
在命令窗口输入 y = fun(5),理论上我们会得到结果 y = 15.
在Matlab命令行窗口,除了可以执行内置函数,M文件等,还可以执行一些命令,例如在Windows版本下,可以使用md、cd、dir 等命令,也可以通过这些命令却换工作状态。
在Matlab中我们不需要申明变量,但是在C/C++ 中必须显示制定变量类型。在我们的函数M文件fun.m中只有一个输入变量,在这里制定它的类型为32-bit 无符号类型变量。
选择输出类型为C/C++静态库,并勾选只生成代码复选框,因为在这里我们只需要得到生成的原文件,不需要Matlab为我们编译成可执行文件。
接着点击编译开始生成文件,编译文件后还可以查看报告,在报告窗口中可以获取更为详细的信息。
至此我们就用Matlab Coder 组件,将我们编写的Matlab程序代码生成C/C++程序代码。可以简单看一下Matlab Coder生成的主要代码(位于fun.c),可以发现生成的代码还是比较注重效率的,比如乘法计算使用移位来提高效率(左移一位等同于数值乘以二,右移一位等同于数值除以二,不过对于DSP来说支持硬件乘法运算,效率还是很高的)。
下面附上DSP与Matlab相关代码
- #include
- #include
- #include "fun.h"
- #include "fun_initialize.h"
- #include "fun_terminate.h"
- int main(void)
- {
- fun_initialize();
- fun(5);
- // 打印计算结果
- // 注意:一定不要忘记加上 "\n"
- printf("y = %d\n", fun(5));
- printf("y = %d\n", fun(50));
- printf("y = %d\n", fun(500));
- printf("y = %d\n", fun(5000));
- printf("y = %d\n", fun(50000));
- // 断点
- // 防止出现找不到出口错误
- asm(" SWBP 0 ");
-
- return 0;
- }
学习了 感谢小编分享
不知,支持simlink?
把光盘里的资料用来发帖真的好吗?
这个真是不怎么样啊