首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
DSP技术
» MATLAB与DSP使用RTDX的实时数据交换
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
MATLAB与DSP使用RTDX的实时数据交换
发短消息
加为好友
yuchengze
当前离线
UID
1062083
帖子
5837
精华
0
积分
2921
阅读权限
70
在线时间
222 小时
注册时间
2016-6-30
最后登录
2018-9-9
金牌会员
UID
1062083
性别
男
1
#
打印
字体大小:
t
T
yuchengze
发表于 2016-11-15 21:27
|
只看该作者
MATLAB与DSP使用RTDX的实时数据交换
解决方案
,
工作原理
摘要:采用
MATLAB
辅助
DSP
程序的开发和调试,能加快DSP应用程序的开发。
实时数据交换
(RTDX)为设计、验证DSP算法提供了一个快速、方便的解决方案。本文对RTDX的工作原理进行了分析,讨论了MATLAB与DSP使用RTDX插件实现双向数据传输的实现方式,并通过一个简单的实例说明RTDX的具体实现过程。
引言
在传统的DSP(Digital Signal Processor)应用程序开发过程中,涉及的算法一般先用MATLAB语言进行仿真,仿真结果满意后,再进入产品的实现阶段。仿真实现后的算法用 C/C++或汇编语言实现,首先在硬件DSP目标板上调试,将中间结果通过DSP开发工具保存到PC机的硬盘上,然后调用到MATLAB工作空间,与 MATLAB仿真算法的中间结果进行比较,以发现DSP程序中由于设计或精度导致的结果偏差。如此反复进行,应用程序开发十分不便。
鉴于DSP应用开发的传统设计方法十分不便,Math Works公司和TI公司联合开发了MATLAB Link for CCS Development Tools(简称CCSLink)。CCSLink将MATLAB、CCS(TI DSP集成开发环境)和目标DSP三者连接起来,开发人员可以在MATLAB环境中像操作MATLAB变量一样操作TI公司DSP的存储器和寄存器,实现对CCS的控制,极大地方便了TI DSP应用程序的开发。
本文所做的研究是以MATLAB2010b、CCS3.3以及基于TMS320VC5509A的开发板进行的。目前大多数书籍就CCSLink的描述主要是基于MATLAB6.5的,而后续的MATLAB版本对CCSLink做了一定的修改和完善。RTDX插件作为CCSLink的重要组成部分之一,有其独特的优势。在接下来的内容中将对RTDX做详细介绍,旨在向DSP研发人员提供一种更快捷的RTDX使用方式。
1 CCSLink的构成
CCSLink由3部分组成:
①与CCS IDE的连接对象。利用此对象可以创建CCS与MATLAB的连接,执行相应的MATLAB命令就可以运行CCS中的应用程序,与目标DSP的存储器和寄存器进行双向数据交换。其优点在于:
(a)用户可以利用MATLAB强大的数据分析和可视化功能,节省设计和调试程序的时间。
(b)可以编写用于调试
数字信号处理
程序的MATLAB语言批处理脚本,实现调试和分析的自动化。
②与RTDX的连接对象。提供了MATLAB与目标DSP之间的实时通信通道,利用此通道可以实时地与目标DSP进行数据交换而不用停止DSP上正在执行的程序。Link for RTDX实现了对实时数据的自动化高级分析和可视化,同时也实现了对复杂DSP程序的有效验证。
RTDX包括主机和目标DSP两部分,如图1所示。在DSP上有一个小的RTDX库(RTDX Target Library),其使用一个基于扫描的仿真器,通过增强型JTAG接口在主机和DSP之间传输数据。DSP应用程序则通过调用RTDX库的API函数来完成主机和DSP之间的通信。主机方运行CCS软件,CCS软件同样带有一个RTDX库(RTDX Host Library),通过一个COM接口将实时数据在主机上显示。这样,MATLAB中设计的参数可以通过RTDX输入通道写入DSP的存储单元,而算法的最后结果也可以通过RTDX的输出通道上传到MATLAB中,通过编写MATLAB程序来显示、分析信号处理的结果。
③嵌入对象。在MATLAB环境中能够创建一个代表嵌入在目标C程序中的变量对象,利用
嵌入式
对象可以像处理MATLAB的变量那样直接访问嵌入在目标DSP的存储器和寄存器中的变量。
上述3种连接对象的实现方式略有不同,与CCS IDE的连接对象和嵌入式对象在数据的传递时可以不在目标DSP程序中添加额外的语句,而与RTDX的连接对象在进行数据传递时则需要在目标DSP程序中添加操纵RTDX通道的语句。
2 RTDX的工作原理
实现MATLAB和目标DSP之间的实时数据交换,既需要在目标DSP程序中添加特定的语句,又需要MATLAB使用特定的语句实现与目标DSP的数据传递。
2.1 DSP对RTDX的配置使用
2.1.1 设置RTDX输入输出通道
首先向工程文件中添加头文件“rtdx.h”、主程序文件“main.c”和其他使用到RTDX的文件。
基于工程是否有与主机通信的需要,在“main.c”中添加输入或输出通道。通道的声明采用
全局变量
的形式,不得包括在任何函数之中。
RTDX_CreateInputChannel(ichan);
/*创建名为ichan的输入通道*/
RTDX_CreateOutputChannel(ochan);
/*创建名为ochan的输出通道*/
默认情况下,这些通道是不能在DSP中直接使用的,但可以在函数体内使能这些RTDX通道。
RTDX_enableInput(&ichan); /*使能ichan通道*/
RTDX_enableOutput(&ochan); /*使能ochan通道*/
如果要在同一工程的其他C文件中使用已经声明过的RTDX通道,必须再次声明。
Extern RTDX_input_channel ichan;
Extern RTDX_output_channel ochan;
最后,单击CCS软件Tools->RTDX->Configuration Control,在弹出的窗口中选择“Enable RTDX”,手动使能RTDX接口。
2.1.2 使用RTDX读写数据
DSP中的RTDX目标库提供了一些C函数发送和接收数据:
①RTDX_readNB()读数据函数包括3个参数:第1个是输入通道的指针,第2个是存储数据的数组指针,第3个是数据字长。这是非连续读,即如果没有数据可读将直接返回。
②RTDX_read()函数的3个参数和RTDX_readNB()一样,不同的是RTDX_read()是连续读,即它将不返回直到读完数据。如果通道忙或未使能,它将返回RTDX_READ_ERROR。
③RTDX_write()写数据函数也包括3个参数:第1个是输出通道的指针,第2个是要传输的数组指针,第3个是数据字长。执行后会返回一个整数,非0代表成功。
④RTDX_sizeofInput()包含输入通道指针的一个参数,并返回从缓冲器中读取的字长,一般在RTDX_read NB()完成一次读操作后使用它。
⑤RTDX_channelBLasy()包含输入通道指针的一个参数,并返回一个整数指示通道状态,0表示通道不忙。
它通常与RTDX_readNB()结合使用,用于检查是否有其他读数据请求。
2.2 MATLAB对RTDX的配置使用
2.2.1 发送数据
在传输数据之前,MATLAB需要知道目标DSP板的信息,完成MATLAB和CCS以及目标DSP的连接,使用下面这条指令实现:
h=actxserver(‘RTDX’);
此指令要在DSP加载了可执行文件并使能RTDX接口之后才能使用,使用这条指令还创建了与RTDX的连接对象,h为连接对象的句柄。
在MATLAB中打开并使能RTDX输入通道之前,必须在DSP目标程序中已经创建了该输入通道,调用下面这条指令实现:
invoke(h,‘open’,‘ichan’,‘W’);
传输数据用下面这条指令实现:
invoke(h,‘Write’,intl6(v));
数据通过最近打开的输入通道由MATLAB向DSP写数据,intl6(v)表示对数据v做强制数据类型转换,因为使用的TMS320VC5509A是16位定点DSP。
在完成数据传输或读数据之前,应该将此接口关闭,使用下面这条指令实现:
invoke(h,‘close’);
2.2.2 接收数据
在MATLAB接收数据部分并没有采用发送数据使用的那种最新的RTDX实现方式,因为新方法的实现难度较大,这里介绍通用的实现方法,具体步骤如下:
①cc=ticcs()实现MATLAB和CCS以及DSP三者的连接,并创建连接对象,对象句柄为cc。
②打开并使能RTDX通道:
cc.rtdx.open(‘ochan’,‘r’);%打开名为ochan的RTDX读通道(MATLAB从DSP读)
cc.rtdx.enable(‘ochan’);%使能通道ochan
cc.rtdx.enable;%使能RTDX接口
③读取数据:
cc.rtdx.readmsg(‘ochan’,‘intl6’);%读取16位字的数据
3 应用实例
列举一个简单的求和运算来说明RTDX的具体实现方法,旨在让读者掌握如何使用RTDX实现MATLAB和DSP之间的双向数据传递。整个程序的实现思路是:首先MATLAB通过RTDX输入通道向DSP中写入10个数据,然后DSP对这10个数据求和,最后将这个和值经RTDX输出通道传递给MATLAB。整个过程的实现流程如图2所示。
3.1 DSP程序实现
3. 2 MATLAB程序实现
MATLAB向DSP写数据
结语
RTDX技术巧妙地实现了MATLAB和目标DSP之间的数据交换,使开发者能够在算法仿真和实时处理之间进行多次反复,以确定最佳算法和参数,极大地方便了DSP应用程序的设计,缩短了开发周期。
关键字:
MATLAB
DSP
实时数据交换
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议