0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在Matlab环境下实现DSP的实时调试和代码生成方法研究

电子设计 来源:郭婷 作者:电子设计 2019-01-08 09:24 次阅读

Matlab作为一种有效的信号处理工具,已经渗透到DSP的设计当中。开发者在将一个新的数字信号处理算法应用于实际前,一般是先用Matlab进行模拟验证,当模拟结果满意时再把算法修改成C或DSP汇编语言通过CCS在目标DSP上实现,并比较实际应用与模拟的结果以发现误差,如此反复进行。在较新版本的Matlab(6.0以上)中提供了Matlab与DSP的统一集成环境后,众多学者对Matlab环境下的DSP调试进行了研究。从CCSLink的角度出发,对Matlab环境下的DSP调试进行了原理及思路上的阐述,但均未涉及到直接代码生成。本文在介绍CCSLink的连接对象、嵌入式对象和RTDX对象的基础上,详细阐述Simulink环境下的直接代码生成。

1 CCSLink及ETTIC2000概述

Matlab具有强大的分析、计算和可视化功能,但处理速度慢;DSP具有快速的信号处理能力,但是其CCS的编译环境中数据可编辑和分析能力不如Matlab;而MathWorks公司和TI公司联合开发的Matlab Linkfor CCS Development Tools(CCSLink)和EmbeddedTarget for the TI TMS320C2000 DSP Platform(ETTIC2000),CCSLink提供了Matlab和CCS的接口,能把Matlab和TI CCS及目标DSP连接起来。利用此工具可以像操作Matlab变量一样来操作TI DSP的存储器或寄存器。CCSLink支持CCS能够识别的任何目标板(C200,C5000,C600),此工具用于DSP程序的调试过程。而CCSLink与ETTIC2000的配合使用,可直接由Matlab的Simulink模型生成TIC2000DSP的可执行代码,能在集成、统一的Matlab环境下完成DSP的整个开发过程。

2 CCSLink环境下的DSP调试

CCSLink向用户提供了3个组件内容,如图1所示。

在Matlab环境下实现DSP的实时调试和代码生成方法研究

2.1 CCSLink的接口对象

2.1.1 CCS IDE的连接对象

该对象支持TI的C2000/5000/6000系列DSP,利用此对象可创建CCS IDE和Matlab的连接。用户可以编写用于DSP程序的Matlab语言批处理脚本,从Matlab的命令窗中直接运行CCS IDE中的应用程序,向硬件DSP的存储器或寄存器发送或取出数据,检查DSP的状态,停止或启动程序在DSP中的运行。

2.1.2 与RTDX的连接对象

该对象提供Matlab和硬件DSP之间的实时通信通道。它允许用户在主机和目标板之间进行实时的数据交换而不用考虑目标程序的运行。RTDX连接对象实际上是CCS连接对象的一个子类,在创建CCS连接对象的同时创建RTDX连接对象,它们不能分别创建。

2.1.3 嵌入式对象

在Matlab环境中创建一个可以代表嵌入在目标C程序中的变量的对象。利用嵌入式对象可直接访问嵌入在目标DSP的存储器和寄存器中的变量,即把目标C程序中的变量作为Matlab的一个变量来对待,并把编辑后的信息反返回到DSP程序中。所有这些操作均在Matlab环境下完成。

2.2 CCS IDE连接对象应用

CCS IDE连接对象提供Matlab与CCS IDE和目标DSP的连接,利用此连接可以在Matlab环境中控制和操作DSP中的应用程序;利用Matlab中强大的计算、分析和可视化工具来分析和对比目标程序运行过程中的结果;而嵌入式对象则提供Matlab对DSP内存中的变量进行实时访问和控制,这样大大缩短嵌入式应用程序的开发调试周期。本文以运行具体程序说明调试过程。源程序PWM.pjt保存在Matlab根目录下的project文件下。

在Matlab环境下实现DSP的实时调试和代码生成方法研究
在Matlab环境下实现DSP的实时调试和代码生成方法研究

从上述程序可知,在Matlab环境下可以完成对CCS工程文件的调入、编译,生成可执行文件并将其加载到DSP目标板。并且可以通过相应的连接对象和嵌入式对象操作函数,实现在DSP硬件不停止执行程序的情况下对DSP的C语言程序中数据结构变量的读写修改。

3 ETTIC2000环境下的直接代码生成

由第2节中可知,CCSLink为TI DSP实时应用开发的调试和测试阶段提供了强大的支持,而ETTIC2000则为TI C2000 DSP实时应用开发的整个过程(概念设计、算法仿真、源代码编写、目标代码生成、调试和测试)都提供了支持。利用ETTIC2000能够从Sireulink模型自动生成TI(22000 DSP的可执行代码,并且为TI LF2407 EVM目标板上的I/O设备提供驱动代码,使得MINULINK模型可以直接在LF2407EVM板上进行实时测试,从而在Simulink统一环境下就可以实现整个硬件在线仿真。

3.1 ETTIC2000应用开发过程

应用ETTIC2000开发实时DSP处理的过翟如下:

(1)概念构思和DSP处理算法设计;

(2)在Simulink环境下,利用DSP BLOCKSET,FIXED-POINT BLOCKSET,C2000 DSPLIB和Simulink等库中的模块构建算法模型,并在Simulink环境下进行仿真;

(3)如果Simulink仿真效果满意,就可以在模型中加入需要的LF2407 EVM目标板上的I/O模块;

(4)设置REAL-TIME WORKSHOP中的编译链接(BUILD)选项;

(5)利用CCS中的调试工具、CCSLink或RTDX来调试目标DSP中的程序;

REAL-TIME WORKSHOP能够从Simulink模型中自动产生C代码并且插入ADCDAC模块指定的I/O设备驱动程序。再通过REAL-TIME WORKSHOP面板上的BUILD按钮,REAL-TIME WORKSHOP会自动产生实时可执行代码。

3.2 建立Simulink模型

由前述连接对象可知,系统已经正确安装了TIC2000系列DSP目标板。在Matlab命令窗口输入:C2000LIB,打开TIC2000的Simulink模块库,其模型库组成如图2所示。本系统采用2407目标板,因此只用到C2000 Target Preferences和C2400 DSP ChipSupport等模块。本文以脉宽调制中A/D采样控制为例,其建立的Simulink模型如图3所示。

在Matlab环境下实现DSP的实时调试和代码生成方法研究
在Matlab环境下实现DSP的实时调试和代码生成方法研究

3.3 REAL-TIME WORKSHOP选项设置

建立好Simulink模型后,设置其属性,生成CCS可执行的工程文件。

在Simulink模型窗口选择Simulation下拉菜单中选择Configuration Parameters,弹出如图4所示对话框。在属性对话框中单击Real-Time Workshop选项卡,在Category栏中选中Target configuration修改System target file和Template make file文件名。其他选择默认值,单击Generate Code,就可以将Simulink模型自动生成CCS IDE的工程文件,并自动调入CCSIDE中,则该工程文件就可以在CCS IDE中编译下载运行。其生成的工程文件在CCS IDE环境下的载人情况如图5所示。

在直接代码生成时,Matlab命令窗口返回信息如下:

在Matlab环境下实现DSP的实时调试和代码生成方法研究

至此,代码生成并在CCS IDE中编译完毕。

4 结 语

本文基于Matlab环境对DSP的实时调试及直接代码生成过程做了详细的阐述,并结合实例给予演示。实验证明,应用Matlab对DSP进行实时调试和代码生成,有效地改变了传统的设计方法。Matlab的易于操作性有助于在设计早期发现错误并进行实时更改。而CCSLINK与ETTIC2000的结合,使得在集成、统一的Matlab环境下完成DSP开发的整个过程。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    544

    文章

    7682

    浏览量

    344357
  • matlab
    +关注

    关注

    175

    文章

    2922

    浏览量

    228440
  • 调试
    +关注

    关注

    7

    文章

    527

    浏览量

    33625
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66764
收藏 人收藏

    评论

    相关推荐

    请问STM32CubeIDE能否生成MDK代码

    虽然我知道CubeIDE是集成开发环境代码生成、编辑、编译下载调试都OK,但是想问一,能否像STM32CubeMX那样,
    发表于 03-13 08:02

    DC2100B/A能不能支持MATLAB/simulink自动代码生成

    1、硬件方面,微控制器是主要有几种,计算能力如何,可以支持类似MPC的算法吗?能不能扩展DSP的控制器? 2、软件方面,能不能支持MATLAB/simulink自动代码生成
    发表于 01-11 06:56

    计算机快速全息生成技术研究

    快速全息生成技术依赖于计算机生成的全息影像 (CGH) 的快速创建。目前,基于光线追踪的计算机生成全息图的快速生成方法仍基于非物理光线追踪方法
    的头像 发表于 12-12 11:15 246次阅读
    计算机快速全息<b class='flag-5'>生成</b>技术<b class='flag-5'>研究</b>

    基于 TouchGFX 生成代码中添加触摸功能的方法

    基于 TouchGFX 生成代码中添加触摸功能的方法
    的头像 发表于 10-27 09:21 570次阅读
    基于 TouchGFX <b class='flag-5'>生成</b>的<b class='flag-5'>代码</b>中添加触摸功能的<b class='flag-5'>方法</b>

    闪烁噪声代码实现方法

    闪烁噪声代码实现方法 闪烁噪声是指由不规则交替的明暗点所组成的噪声,在各种应用中都有着非常广泛的应用。闪烁噪声可以用于视频的特效处理、图像的模糊处理等领域中。本文将介绍闪烁噪声的生成
    的头像 发表于 09-19 16:39 459次阅读

    使用NucleiStudio环境进行,代码导入调试时无法连接到开发板的原因?

    使用非官方开发板平头哥200t开发板,完成E203综合,以及xdc约束文件修改。但是使用NucleiStudio环境进行,代码导入调试
    发表于 08-12 06:44

    MATLAB语言编程方法 MATLAB实现信号通过系统的仿真

      实验目的:  1、 学习MATLAB语言的编程方法及熟悉MATLAB指令;  2、 深刻理解卷积运算,利用离散卷积实现连续卷积运算;  3、 深刻理解信号与系统的关系,学习
    发表于 07-18 16:51 0次下载

    MBD的Simulink使用技巧:Simulink代码生成的基本概念(1)

    MATLAB/Simulink中一共提供三个代码生成的工具
    的头像 发表于 07-13 15:11 1402次阅读
    MBD的Simulink使用技巧:Simulink<b class='flag-5'>代码</b><b class='flag-5'>生成</b>的基本概念(1)

    S32K144的MBD工具箱,使用Simulink进行仿真时调用的库与生成嵌入式代码时调用的静态库不同?

    使用NXP的MBDT时,不仅可以Simulink中使用它的模块进行仿真,还可以生成S32K的代码,然后MBDT的安装目录下看到三个库
    发表于 06-01 06:55

    MIMO-OFDM无线通信技术(Matlab代码实现

    概述 本代码为MIMO-OFDM无线通信技术及MATLAB实现。分为十章,
    发表于 05-30 10:39 21次下载
    MIMO-OFDM无线通信技术(<b class='flag-5'>Matlab</b><b class='flag-5'>代码</b><b class='flag-5'>实现</b>)

    手把手教你无感FOC电机控制,MATLAB代码生成

    华夏电子工作室:2023年6月8日下午3点(15:00)电机控制MATLAB代码生成系列课程直播第一季。邀请各位工程师准时来直播间讨论和观看。届时代码全开源。 下面我们来说一
    发表于 05-29 10:12

    手把手教你MATLAB无感FOC电机看着代码生成,付赠资料。

    华夏电子工作室:2023年6月8日下午3点(15:00)电机控制MATLAB代码生成系列课程直播第一季。邀请各位工程师准时来直播间讨论和观看。届时代码全开源。 下面我们来说一
    发表于 05-29 10:11

    手把手教你MATLAB,Sumlink代码生成。无感FOC算法从零到生成代码的过程。附上MATLAB代码生成仿真模型。

    华夏电子工作室:2023年6月8日下午3点(15:00)电机控制MATLAB代码生成系列课程直播第一季。邀请各位工程师准时来直播间讨论和观看。届时代码全开源。 下面我们来说一
    发表于 05-28 12:33

    是否有生成方波的音调函数?

    的程序,带有中断以捕获 GPIO 切换按钮并在触摸按钮时结束电子邮件。该程序运行完美,它的名称为 default.bas。即使参数中打勾,程序也不会单独启动。我需要按 RUN 才能让它工作。 第二个问题:是否有生成方波的音调函数?喜欢
    发表于 05-10 13:15

    代码生成器配置和软件UART的实现

    (RL78)上的具体的实现方法,这里略去工程的建立过程,相应的驱动程序细节可以参考代码生成生成代码
    的头像 发表于 05-09 09:25 907次阅读
    <b class='flag-5'>代码</b><b class='flag-5'>生成</b>器配置和软件UART的<b class='flag-5'>实现</b>