找回密码
 注册
关于网站域名变更的通知
查看: 547|回复: 2
打印 上一主题 下一主题

MATLAB与DSP使用RTDX的实时数据交换

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-5-20 10:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
摘要:采用MATLAB辅助DSP程序的开发和调试,能加快DSP应用程序的开发。实时数据交换(RTDX)为设计、验证DSP算法提供了一个快速、方便的解决方案。本文对RTDX的工作原理进行了分析,讨论了MATLAB与DSP使用RTDX插件实现双向数据传输的实现方式,并通过一个简单的实例说明RTDX的具体实现过程。

1 _) L4 d# s% t4 ], {
引言
在传统的DSP(DigitalSignalProcessor)应用程序开发过程中,涉及的算法一般先用MATLAB语言进行仿真,仿真结果满意后,再进入产品的实现阶段。仿真实现后的算法用xa0C/C++或汇编语言实现,首先在硬件DSP目标板上调试,将中间结果通过DSP开发工具保存到PC机的硬盘上,然后调用到MATLAB工作空间,与xa0MATLAB仿真算法的中间结果进行比较,以发现DSP程序中由于设计或精度导致的结果偏差。如此反复进行,应用程序开发十分不便。
鉴于DSP应用开发的传统设计方法十分不便,MathWorks公司和TI公司联合开发了MATLABLinkforCCSDevelopmentTools(简称CCSLink)。CCSLink将MATLAB、CCS(TIDSP集成开发环境)和目标DSP三者连接起来,开发人员可以在MATLAB环境中像操作MATLAB变量一样操作TI公司DSP的存储器和寄存器,实现对CCS的控制,极大地方便了TIDSP应用程序的开发。
本文所做的研究是以MATLAB2010b、CCS3.3以及基于TMS320VC5509A的开发板进行的。目前大多数书籍就CCSLink的描述主要是基于MATLAB6.5的,而后续的MATLAB版本对CCSLink做了一定的修改和完善。RTDX插件作为CCSLink的重要组成部分之一,有其独特的优势。在接下来的内容中将对RTDX做详细介绍,旨在向DSP研发人员提供一种更快捷的RTDX使用方式。
1xa0CCSLink的构成
CCSLink由3部分组成:
①与CCSIDE的连接对象。利用此对象可以创建CCS与MATLAB的连接,执行相应的MATLAB命令就可以运行CCS中的应用程序,与目标DSP的存储器和寄存器进行双向数据交换。其优点在于:
(a)用户可以利用MATLAB强大的数据分析和可视化功能,节省设计和调试程序的时间。
(b)可以编写用于调试数字信号处理程序的MATLAB语言批处理脚本,实现调试和分析的自动化。
②与RTDX的连接对象。提供了MATLAB与目标DSP之间的实时通信通道,利用此通道可以实时地与目标DSP进行数据交换而不用停止DSP上正在执行的程序。LinkforRTDX实现了对实时数据的自动化高级分析和可视化,同时也实现了对复杂DSP程序的有效验证。
RTDX包括主机和目标DSP两部分,如图1所示。在DSP上有一个小的RTDX库(RTDXTargetLibrary),其使用一个基于扫描的仿真器,通过增强型JTAG接口在主机和DSP之间传输数据。DSP应用程序则通过调用RTDX库的API函数来完成主机和DSP之间的通信。主机方运行CCS软件,CCS软件同样带有一个RTDX库(RTDXHostLibrary),通过一个COM接口将实时数据在主机上显示。这样,MATLAB中设计的参数可以通过RTDX输入通道写入DSP的存储单元,而算法的最后结果也可以通过RTDX的输出通道上传到MATLAB中,通过编写MATLAB程序来显示、分析信号处理的结果。

% Z9 A; {1 d6 s, K

# S8 V) u: R' d4 L
③嵌入对象。在MATLAB环境中能够创建一个代表嵌入在目标C程序中的变量对象,利用嵌入式对象可以像处理MATLAB的变量那样直接访问嵌入在目标DSP的存储器和寄存器中的变量。
上述3种连接对象的实现方式略有不同,与CCSxa0IDE的连接对象和嵌入式对象在数据的传递时可以不在目标DSP程序中添加额外的语句,而与RTDX的连接对象在进行数据传递时则需要在目标DSP程序中添加操纵RTDX通道的语句。
2RTDX的工作原理
实现MATLAB和目标DSP之间的实时数据交换,既需要在目标DSP程序中添加特定的语句,又需要MATLAB使用特定的语句实现与目标DSP的数据传递。
2.1DSP对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);xa0/*使能ichan通道*/
RTDX_enableOutput(&ochan);xa0/*使能ochan通道*/
如果要在同一工程的其他C文件中使用已经声明过的RTDX通道,必须再次声明。
Externxa0RTDX_input_channelxa0ichan;
Externxa0RTDX_output_channelxa0ochan;
最后,单击CCS软件Tools->RTDX->Configurationxa0Control,在弹出的窗口中选择“Enablexa0RTDX”,手动使能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_readxa0NB()完成一次读操作后使用它。
⑤RTDX_channelBLasy()包含输入通道指针的一个参数,并返回一个整数指示通道状态,0表示通道不忙。
它通常与RTDX_readNB()结合使用,用于检查是否有其他读数据请求。
2.2MATLAB对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所示。

5 L1 g5 w# i# }! a6 \
1 {' x7 s9 X3 B+ C
3.1DSP程序实现
1 U: }+ [# S+ }- ^5 X

' \1 |5 ?6 W, p9 O& K
( L$ H5 |8 |5 T' Z+ {5 p
3.2 MATLAB程序实现
MATLAB向DSP写数据
6 N. q, i9 k! O. B

" x& X# G* ?( ~- D) ^

8 B. S5 ?( k" t& t& t
结语
RTDX技术巧妙地实现了MATLAB和目标DSP之间的数据交换,使开发者能够在算法仿真和实时处理之间进行多次反复,以确定最佳算法和参数,极大地方便了DSP应用程序的设计,缩短了开发周期。
, }8 b2 l+ I  z
  • TA的每日心情
    开心
    2022-12-5 15:37
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2021-5-20 13:15 | 只看该作者
    先用MATLAB语言进行仿真,仿真结果满意后,再进入产品的实现阶段
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-14 06:45 , Processed in 0.109375 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表