微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Matlab和VC混合编程的DSP数据采集系统

基于Matlab和VC混合编程的DSP数据采集系统

时间:05-06 来源:3721RD 点击:

和DSP程序中定义同名的一条RTDX通道,数据通过该通道在PC主机和DSP目标板之间传输。PC主机程序和目标板上的DSP程序需要严格的配合,PC主机的读操作和DSP目标板的写操作通过定义一个"写RTDX"通道实现:而PC主机的写操作与DSP目标板的读操作通过定义一个"读RTDX"通道实现.必须一一对应,这样才能实现主机与DSP目标板的数据交换。

2.2 Matlab与Visual C++的接口

Matlab作为一种工具软件.通常是不能直接控制DSP目标板。但是Matlab软件为了扩充自身软件的功能,提供了一种与其它开发工具或开发语言进行交互的应用程序接口 (API)。其中.MEX文件就是MATLAB软件提供的一种与Visual c++沟通的接口文件。

在MEX文件中使用c语言编写以mexFunction (int nlhs,mxArray *nlhs[ ],int nrhs,const mxArray * plhs[ ])函数为主函数的动态连接库程序(*.dll).然后只需在Matlab命令提示符下键入此MEX文件名(*.dll)即可完成调用.这与Matlab的内建函数的调用方式完全相同。mexFunction函数中的参数说明如下:

①int nlhs是左边输出参数的个数,即visual c++向Matlab传递的参数个数;

②mxArray *nlhs [ ]是左边参数的数组。它是一个mxArray结构体类型的指针数组.这个数组的元素按顺序(nlhs[0].nlhs[1]?)指向所有的输出参数:

③int nrhs是右边输入参数的个数,即Matlab向VisualC++传递的参数个数;

④const mxArray *plhs [ ]是右边参数的数组,它是一个mxArray结构体类型的指针数组,这个数组的元素按顺序(plhs[0],plhs[1]??)指向所有的输入参数。

在MEX文件中.利用DSP目标板提供的动态连接库函数,编写对目标板进行操作的动态连接库程序.然后在Matlab平台上调用这些动态连接库函数既町实现Matlab和底层DSP目标板的无缝连接。


图4系统测试结果

具体过程是:在Matlab平台上.以传递参数的形式调用动态连接库程序。把需要传送给DSP目标板处理的数据,通过mexFunction函数的右边参数数组先传送给动态连接库程序。然后通过Visual C++程序和DSP程序共同定义的"写RTDX通道"把数据传送给DSP目标板:需要上传到Matlab平台的数据,首先被DSP应用程序写入到"读RTDX通道"中.然后在Visual C++中的动态连接库程序读取该R31DX通道中的数据,再经过MexFunction函数的左边参数数组把数据上传到Matlab平台。这样.就实现了在Matlab平台上控制和操作DSP目标板,并与之进行数据交换。

图4是按照上述方法编写的软件界面和对系统进行测试所得到的结果。

3 结束语

基于Matlab平台的DSP数据采集和处理系统,在Matlab强大的数据分析和绘图功能的基础上,结合了Visual c++易于实现操作和控制的性能。改善了Matlab在控制底层板卡方面的不足。该系统的研究不仅是把Matlab应用于DSP数据采集和处理系统的一次尝试.也为一些半实物仿真系统提供了新的思路。Matlab/Simulink本身就是一种功能强大的系统仿真工具,因此,如果能在该系统的基础上把Matlat/Simulink的仿真功能添加上来。则可实现硬件在环的半实物仿真。相信Matlab丰富的函数库和众多的专业工具箱.必会为今后系统的完善以及扩展提供充分的条件。

本文作者创新点:通过在Matlab平台上直接控制DSP数据采集系统.把Matlab的优良算法应用于系统中。简化了系统的数据处理过程。提高了,系统数据处理速度,缩短了系统设计周期,具有广泛的应用前景。

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

网站地图

Top