摘要:选用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运用程序的规划,缩短了开发周期。