打印

一种基于Matlab的DSP调试及直接代码生成方法

[复制链接]
2198|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Jasmines 于 2018-5-6 10:23 编辑

一种基于Matlab的DSP调试及直接代码生成方法

 Matlab作为一种有效的信号处理工具,已经渗透到DSP的设计当中。开发者在将一个新的数字信号处理算法应用于实际前,一般是先用Matlab进行模拟验证,当模拟结果满意时再把算法修改成C或DSP汇编语言通过CCS在目标DSP上实现,并比较实际应用与模拟的结果以发现误差,如此反复进行。在较新版本的Matlab(6.0以上)中提供了Matlab与DSP的统一集成环境后,众多学者对Matlab环境下的DSP调试进行了研究。从CCSLink的角度出发,对Matlab环境下的DSP调试进行了原理及思路上的阐述,但均未涉及到直接代码生成。本文在介绍CCSLink的连接对象、嵌入式对象和RTDX对象的基础上,详细阐述Simulink环境下的直接代码生成。

  1 CCSLink及ETTIC2000概述

  Matlab具有强大的分析、计算和可视化功能,但处理速度慢;DSP具有快速的信号处理能力,但是其CCS的编译环境中数据可编辑和分析能力不如Matlab;CCSLink提供了Matlab和CCS的接口,能把Matlab和TI CCS及目标DSP连接起来。利用此工具可以像操作Matlab变量一样来操作TI DSP的存储器或寄存器。而CCSLink与ETTIC2000的配合使用,可直接由Matlab的Simulink模型生成TIC2000DSP的可执行代码,能在集成、统一的Matlab环境下完成DSP的整个开发过程。

  2 CCSLink环境下的DSP调试

  CCSLink向用户提供了3个组件内容,如图1所示。

  2.1 CCSLink的接口对象

  2.1.1 CCS IDE的连接对象

  该对象支持TI的C2000/50006000系列DSP,利用此对象可创建CCS IDE和Matlab的连接。用户可以编写用于DSP程序的Matlab语言批处理脚本,从Matlab的命令窗中直接运行CCS IDE中的应用程序,向硬件DSP的存储器或寄存器发送或取出数据,检查DSP的状态,停止或启动程序在DSP中的运行。

  2.1.2 与RTDX的连接对象

  该对象提供Matlab和硬件DSP之间的实时通信通道。它允许用户在主机和目标板之间进行实时的数据交换而不用考虑目标程序的运行。RTDX连接对象实际上是CCS连接对象的一个子类,在创建CCS连接对象的同时创建RTDX连接对象,它们不能分别创建。

  2.1.3 嵌入式对象

  在Matlab环境中创建一个可以代表嵌入在目标C程序中的变量的对象。利用嵌入式对象可直接访问嵌入在目标DSP的存储器和寄存器中的变量,即把目标C程序中的变量作为Matlab的一个变量来对待,并把编辑后的信息反返回到DSP程序中。所有这些操作均在Matlab环境下完成。

  2.2 CCS IDE连接对象应用

  CCS IDE连接对象提供Matlab与CCS IDE和目标DSP的连接,利用此连接可以在Matlab环境中控制和操作DSP中的应用程序;利用Matlab中强大的计算、分析和可视化工具来分析和对比目标程序运行过程中的结果;而嵌入式对象则提供Matlab对DSP内存中的变量进行实时访问和控制,这样大大缩短嵌入式应用程序的开发调试周期。

  3 ETTIC2000环境下的直接代码生成

   CCSLink为TI DSP实时应用开发的调试和测试阶段提供了强大的支持,而ETTIC2000则为TI C2000 DSP实时应用开发的整个过程(概念设计、算法仿真、源代码编写、目标代码生成、调试和测试)都提供了支持。利用ETTIC2000能够从Sireulink模型自动生成TI(22000 DSP的可执行代码,并且为TI LF2407 EVM目标板上的I/O设备提供驱动代码,使得MINULINK模型可以直接在LF2407EVM板上进行实时测试,从而在Simulink统一环境下就可以实现整个硬件在线仿真。

  3.1 ETTIC2000应用开发过程

  应用ETTIC2000开发实时DSP处理的过翟如下:

  (1)概念构思和DSP处理算法设计;
  (2)在Simulink环境下,利用DSP BLOCKSET,FIXED-POINT BLOCKSET,C2000 DSPLIB和Simulink等库中的模块构建算法模型,并在Simulink环境下进行仿真;
  (3)如果Simulink仿真效果满意,就可以在模型中加入需要的LF2407 EVM目标板上的I/O模块;
  (4)设置REAL-TIME WORKSHOP中的编译链接(BUILD)选项;
  (5)利用CCS中的调试工具、CCSLink或RTDX来调试目标DSP中的程序;
  REAL-TIME WORKSHOP能够从Simulink模型中自动产生C代码并且插入ADC和DAC模块指定的I/O设备驱动程序。再通过REAL-TIME WORKSHOP面板上的BUILD按钮,REAL-TIME WORKSHOP会自动产生实时可执行代码。

  3.2 建立Simulink模型

  由前述连接对象可知,系统已经正确安装了TIC2000系列DSP目标板。在Matlab命令窗口输入:C2000LIB,打开TIC2000的Simulink模块库,其模型库组成如图2所示。本系统采用2407目标板,因此只用到C2000 Target Preferences和C2400 DSP ChipSupport等模块。本文以脉宽调制中A/D采样控制为例,其建立的Simulink模型如图3所示。




  3.3 REAL-TIME WORKSHOP选项设置

  建立好Simulink模型后,设置其属性,生成CCS可执行的工程文件。
  在Simulink模型窗口选择Simulation下拉菜单中选择Configuration Parameters,弹出如图4所示对话框。在属性对话框中单击Real-Time Workshop选项卡,在Category栏中选中Target configuration修改System target file和Template make file文件名。其他选择默认值,单击Generate Code,就可以将Simulink模型自动生成CCS IDE的工程文件,并自动调入CCSIDE中,则该工程文件就可以在CCS IDE中编译下载运行。




相关帖子

沙发
10299823| | 2018-5-6 16:51 | 只看该作者
这个以后简单多了。

使用特权

评论回复
板凳
jimmhu| | 2018-5-6 16:51 | 只看该作者
Simulink用的还是少

使用特权

评论回复
地板
lihuami| | 2018-5-6 16:51 | 只看该作者

使用特权

评论回复
5
xiaoyaozt| | 2018-5-6 16:52 | 只看该作者
Matlab还有这个功能。

使用特权

评论回复
6
uptown| | 2018-5-6 16:52 | 只看该作者
仿真验证的程序也可以吗?

使用特权

评论回复
7
cehuafan| | 2018-5-6 16:52 | 只看该作者
数字信号处理算法移植确实很麻烦。

使用特权

评论回复
8
usysm| | 2018-5-6 16:53 | 只看该作者
是开发所有的芯片吗

使用特权

评论回复
9
typeof| | 2018-5-6 16:54 | 只看该作者
C语言转换吗

使用特权

评论回复
10
yujielun| | 2018-5-6 16:54 | 只看该作者
没有验证的结果吗?

使用特权

评论回复
11
pl202| | 2018-5-6 16:55 | 只看该作者
这个CCS有限制吗?

使用特权

评论回复
12
uptown| | 2018-5-6 16:55 | 只看该作者
Matlab不是有验证的代码吗?

使用特权

评论回复
13
xiaoyaozt| | 2018-5-6 16:55 | 只看该作者
CCSLink是做什么的?

使用特权

评论回复
14
lihuami| | 2018-5-6 16:55 | 只看该作者
跟着多多学习一下。

使用特权

评论回复
15
jimmhu| | 2018-5-6 16:55 | 只看该作者
以前使用FPGA直接生产代码的。

使用特权

评论回复
16
10299823| | 2018-5-6 16:55 | 只看该作者
是直接生产C语言代码吗?

使用特权

评论回复
17
pl202| | 2018-5-6 16:55 | 只看该作者
不是代码直接生成,而不是搭建的吗?

使用特权

评论回复
18
yujielun| | 2018-5-6 16:55 | 只看该作者
楼主测试的代码呢

使用特权

评论回复
19
typeof| | 2018-5-6 16:55 | 只看该作者
Matlab直接转换C语言厉害了。

使用特权

评论回复
20
usysm| | 2018-5-6 16:55 | 只看该作者
支持C6000的DSP吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

745

主题

1077

帖子

10

粉丝