微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MATLAB与DSP使用RTDX的实时数据交换

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

时间:02-06 来源:互联网 点击:

摘要:采用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通道,必须再次声

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top