大家好,今天来为大家分享2812个网站源码分享的一些知识点,和网站源码 免费下载的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
摘要:随着数字芯片速度的提高和数字信号技术的发展,DSP被广泛应用于工业控制等领域,系统开发的效率得到普遍的关注,传统的MATLAB仿真与产品硬件实现相分隔的方式已经无法满足设计的需求。提出一种基于MATLAB的DSP实时控制软件自动生成方案,并通过Simulink模型自动生成TIC2812DSP的目标代码的应用实例,验证了代码自动生成的可执行性。
0引言
传统的DSP软件设计开发一般分为两个阶段:设计仿真和源代码开发实现[1]。设计仿真阶段根据系统开发的需要,以DSP算法研究与仿真验证为主,这阶段可以利用MATLAB的Simulink模块仿真来实现;源代码开发通常采用汇编指令或C语言编写源代码,由汇编器和连接器进行链接后生成目标可执行代码。源代码开发完成后,功能的实现主要在硬件电路板上来验证设计方案的正确性,对于软件开发者关于DSP数字芯片与硬件电路的原理有一定程度的要求,特别是各个寄存器的作用和存储空间的特性和扩展。这两个部分通常是在不同阶段相互独立地完成,因此大大增加了系统开发的时间,系统设计的实时性也不能得到保证。本文介绍了MATLAB中的MATLAB与CCS的接口和EmbededTargetforTIC2000DSP,提出了一种基于TIC2812的软件设计思路,实现将设计仿真和源代码开发在同一平台下开展,从而有效地将开发过程中的两大阶段有机地结合在一起,大大缩短了开发周期,并通过应用实例进行验证。
1ETTIC2000概述
EmbeddedTargetfortheTITMS320C2000TM为TIC2000DSP实时控制软件的自动生成的模型仿真、源代码开发、目标代码自动生成、实时调试等各个环节都提供了技术方面的支持[2]。
1.1ETTIC2000的功能和特点
ETTIC2000首先利用Real-TimeWorkshop从Simulink模型生成标准C语言程序代码,然后通过MATLABLinkforCCSDevelopmentTools调用CCS开发工具,编译链接Simulink所生成的程序,自动生成目标板(C2812Simulator)的可执行代码(.out文件),最后把生成的可执行代码加载到目标板中,并利用嵌入式对象对程序运行进行实时监控和调试。
EmbeddedTargetfortheTIC2000DSP、Simulink、Real-TimeWorkshop、CCS和TI目标之间的关系如图1所示。
1.2C281×DSP模块库
ETTIC2000提供了多个Simulink模块,以支持不同型号的DSP,在MATLAB窗口中执行命令C2000lib,就会显示对应型号的DSP芯片模块。其中,本文使用的C281×的各模块如图2所示。
2MATLAB与TICCS的接口
2.1CCSLink的功能及特点
MATLABLinkforCCSDevelopmentTools作为MATLAB的一个工具箱被集成在MATLAB中,可以支持CCS能够识别的任何目标板。利用此工具箱,将调用函数、读写存储器或寄存器中的数据、实时测试等工作统一在MATLAB平台下进行,把MATLAB和TICCS及目标DSP连接起来。其功能图如图3所示。
2.2CCSLink的连接方式
利用CCSLink提供的MATLAB函数可以完成MATLAB与TICCS、目标板的存储器或寄存器的数据及信息的交换。
CCSIDE的连接对象用于创建CCS与MATLAB的连接。从MATLAB的命令窗中可以运行CCSIDE中的程序,向目标板的存储器或寄存器读取数据,检查DSP的运行状态,而且可以控制DSP上运行程序的起止。
在MATLAB环境中可以创建一个嵌入式对象访问目标板的存储器或寄存器中的变量,即把C语言代码中的变量作为MATLAB的一个变量处理。转变数据类型,创建函数声明,改变变量值,读取DSP中的数据与信息,所有这些操作都在MATLAB平台下进行。
在MATLAB中,对所有对象的操作方式是一样的,只是对应的属性及属性值不同而已。
3应用实例
32位的TMS320C281×系列芯片融合了DSP和微控制器的最佳特性,能够完成64位的数据处理,专门的分支硬件减少了条件指令执行的反应时间,使该处理器能够实现更高精度的处理任务[3]。
在TMS320F281×DSP中,ADC模块是一个12位带流水线的模/数转换器,由16个结果寄存器ADCResult存放ADC的转换结果,转换的计算过程为:
本系统搭建的是一个由AD模块采集来的数字信号量来控制PWM输出的占空比的模型。通过读取AD转换的数据与信息,同时,利用示波器显示的PWM输出波形,分析由CCS实时控制的DSP代码自动生成的效果。
具体步骤如下:
(1)在MATLAB中的Simulink环境搭建模型如图4所示,选用ADC模块中A0通道,由PWM1通道输出结果,设置参数并进行仿真。
(2)配置CCSLink。验证CCS是否在PC上安装并配置好,在MATLAB命令窗中输入命令:ccsboardinfo,则MATLAB命令窗中会返回图5所示的板卡信息。
图5证明CCS已经安装并配置好。CCSLink工作时CCS将自动启动。
(3)在Real-TimeWorkshop中设置编译链接(Build)选项。
指定ti_c2000.tlc作为系统目标文件(systemtargetfile)。设置好Build选项后,通过编译链接选项,Real-TimeWorkshop会自动产生实时可执行代码,同时,可通过设置将可执行代码自动加载到指定的目标板上并且开始运行。图6为MATLAB命令窗口显示。
(4)实时代码调试。
在MATLAB环境下编辑m文件,并运行以下代码:
cc=ccsdsp(′boardnum′,0,′procnum′,0)
//创建一个连接对象
visible(cc,1)//CCSIDE窗口在桌面上可见
linkinfo=info(cc)//测试DSP目标板的状态信息
projfile=fullfile(matlabroot,′work′,…);
projpath=fileparts(projfile);
open(cc,projfile)//加载工程文件
build(cc)//编译文件
load(cc,′.out′)//可执行文件加载到DSP中
run(cc)//运行
halt(cc)//停止
ddatv=read(cc,address(cc,′ddat′),′double′,2)
//访问嵌入在目标DSP存储器中的值
在MATLAB环境下完成了对工程文件的调入、编译,生成可执行文件并将其加载到DSP目标板。切换到已经打开的CCS界面,可以看到在MATLAB环境下已经完成了对CCS的各种操作。
(5)运行结果。
当由变位器给定模拟电压输入为1V时,加载自动生成代码到DSP后,读取DSP寄存器的值如图7所示。
自动生成代码F2812.ADC=(AdcRegs.ADCRESULT0)>>4;之所以右移4位,是因为在级联序列发生器模式中,读取时,ADCRESULTn寄存器为左对齐,应向右平移4位后读取[4]。结果寄存器存放的数字量与计算得出的理论值1355非常接近,如图8所示,验证目标板AD转换有效。
程序的目标板输出波形比较如图9所示。
图9证明了由MATLAB模型生成的代码是有效的,运行结果也与理论输出占空比近似,进而证明这种设计方法快捷、高效。
4结论
应用MATLAB自动生成DSP代码的方案,有效地克服了传统DSP代码设计方法效率低、难度大等缺点,快速生成了标准化的C语言代码和DSP可执行文件,极大地缩短了代码的开发时间。实验结果表明,自动生成的代码运行效果良好,可以应用于项目的设计与实现,体现了方案的实用性与可行性。
参考文献
[1]李利.DSP原理及应用[M].北京:中国水利水电出版社,2004.
[2]李真芳,苏涛,黄小宇.DSP程序开发:MATLAB调试及直接目标代码生成[M].西安:西安电子科技大学出版社,2003.
[3]苏奎峰,吕强,常天庆,等.TMS320281×DSP原理及C程序开发[M].北京:北京航空航天大学出版社,2008.
[4]张雄伟,陈亮,徐光辉.DSP芯片的原理与开发应用[M].北京:电子工业出版社,2003.
关于2812个网站源码分享的内容到此结束,希望对大家有所帮助。