基于DSP模型的快速代码的生成

电脑硬件知识  点击:   2019-10-03

  摘  要: TMS320F2812DSP是控制系统开发中很好的硬件设计平台,但传统的TI DSP代码开发方法周期较长,效率不高。为了在实际控制系统开发中缩短控制算法的设计周期,提高控制器的可靠性,并简化在调试过程中对控制算法的修改,设计与开发了基于DSP 的快速原型控制系统。该系统包括基于TI F2812DSP 的硬件控制器和基于Matlab/ Simulink 的软件开发环境。用户可以在Simulink 环境中利用RTW 功能直接从Simulink 模型自动生成可执行代码并下载到目标板,直接运行程序,从而简化DSP系统开发过程,提高开发效率。通过闪烁灯实验实时控制实验,验证了系统的有效性。

  关键词: TMS320F2812; TI DSP; Matlab/Simulink; 自动代码生成
  中图分类号: TN710?34; TP311              文献标识码: A                       文章编号: 1004?373X(2015)06?0142?03
  Fast code generation based on DSP model
  DENG Pan, HOU Zhi?min
  (Chengdu University of Information Technology, Chengdu 610225, China)
  Abstract: TMS320F2812DSP is a very good hardware design platform in control system development, but the traditional method of TI DSP code development has long cycle, and its efficiency is not high. In order to shorten the control algorithm design cycle in actual control system development, improve the reliability of the controller and simplify the control algorithm modifications during commissioning, a control system of rapid prototype based on DSP was designed and developed. The system includes TI F2812DSP?based hardware controllers and Matlab/Simulink?based software development environment. Users can take advantage of RTW functions in the Simulink environment to automatically generate executable code directly from Simulink models and download it to the target board for running the program directly. Therefore, the development process of DSP system was simplified, and the development efficiency was improved. The effectiveness of the system was verified by real?time control experiments of flashing lights.
  Keywords: TMS320F2812; TI DSP; Matlab/Simulink; automatic code generation
  0  引  言
  随着现代电力电子技术的迅猛发展,兼有高运算速度和强控制能力的DSP(Digital Signal Processor)在逆变器、电机等电力电子设备的控制领域得到了广泛应用[1]。传统的通用DSP源代码开发一般可采用两个方法:一种是直接利用其提供的汇编指令编写源代码,然后经汇编器和链接器进行汇编链接后生成目标可执行代码;另一种方法是利用标准C++语言编写源代码,经C/C++编译器、汇编器和链接器进行编译链接,最后生成目标可执行代码[2]。这两种代码开发方法都使得开发人员不得不花费大量的时间用于代码的编写,从而增大开发产品难度,延长产品开发周期,影响开发效率。可以直接由Matlab的Simulink模型生成DSP的可执行代码,即在集成的、统一的Matlab环境下可完成DSP开发的整个过程[3]。
  DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器,主要由中央处理器、存储器和片内外设三部分组成,具有强大的数据处理能力和高运行速度,加上具有可编程性,所以被广泛应用于控制系统[4]。但是随着DSP的不断更新换代,硬件结构和代码的编写也越来越复杂,利用DSP的不断更新换代,硬件结构和代码的编写也越来越复杂,利用DSP进行开发时要求对DSP硬件性能和各种端口有足够的了解,开发门槛高,这样很不利于系统的快速开发[5]。用户可以在Matlab中调用这些图形化的功能模块及Simulink中的其他模块建立数字信号处理的模型,并可以对模型进行仿真验证,然后生成TMS320C2000的C语言代码及CCS的工程项目文件,在CCS中经修改、编译后就可以下载到DSP目标板中运行[6]。   1  搭建闪烁灯功能模型
  可以利用模型输出一个高/低交替变换的电平来实现闪烁。在Matlab菜单栏中选择FILE NEW Model,建立一个新模型,命名为led_28207,并保存,在模块浏览器中找到Simulink Sources Constant 模块、Simulink Logic and Bit Operations Logical Operator 模块、Simulink Discrete Unit Delay模块,并添加到模型中,双击打开Logical Operator 模块,将Operator 项选择为XOR,选中Unit Delay 模块并按下“Ctrl+I”键翻转该模块,在模块浏览器中找到Simulink Sinks Scope模块,然后按图所示连接这些模块,按下仿真按钮后,添加On Off Gauges模块,可以更清晰直观地看到仿真结果,现将模型做如下修改。在模块浏览器中找到Simulink Port Subsystems For Iterator Subsystem,添加到模型中,双击打开For Iterator Subsystem模块,双击打开For Iterator 模块的设置对话框,将Iteration variable data type 项设置为int32型,在Iteration limit项中写入3000000,作为循环次数,用以延长每个状态的持续时间。在模块浏览器中找到Simulink Sinks Terminator,添加到子系统中,并与For Iterator连接,删除In1、Out1模块,可以看到,子系统的输入/输出端口已经删去,将其命名为delay,删去原模型中的Scope模块,在模块浏览器中找到Gauges Blockset Global Majic Active X Library On Off Gauges On Off Readout 模块,并将输出数据类型设置为double,修改完毕后单击“仿真”按钮,可见On  Off  Readout模块不停地闪烁(见图1)。
  <E:\王芳\现代电子技术201506\现代电子技术15年38卷第6期\Image\47T1.tif>
  图1 功能模型仿真
  2  代码模型
  验证模型的功能后,将进一步把功能模型转化为代码模型,以便后期的自动代码生成工作。打开led_28027模型,在模型库中找到Embedded  IDE Link  Common  Target Preferences模块和Target Support Package  Supported Processors Texas InstrumentsC2000 C281x Digital Output 模块并添加到模型中,删除Add、Scope、delay子系统和SIL模块,双击打开Target Preferences 模块,在IDE/Tool Chain 项中选择Texas Instruments Code Composer Studio ,在Board项中选择TI C281x,双击打开Digital Output模块,在GPIO Group 项中选择GPIOA~ GPIOC,然后选中GPIOB复选框,如图2所示。             <E:\王芳\现代电子技术201506\现代电子技术15年38卷第6期\Image\47T2.tif>
  图2 配置Digital Output模块
  3  自动代码生成
  按上述步骤设置完毕后将目标板连接到主机上,然后单击模型工具栏的编译按钮,生成代码的报告如图3所示。
  <E:\王芳\现代电子技术201506\现代电子技术15年38卷第6期\Image\47T3.tif>
  图3 代码生成报告
  代码生成完毕后将自动启动CCS软件,建立工程并对代码进行编译,如图4所示。
  4  硬件测试
  编译完成后会自动下载.out文件并执行,led灯不停闪烁(见图5),与功能模型中的仿真结果一致,这说明自动生成的代码完全实现了在模型中设计的各项功能。
  5  结  语
  用Matlab快速建立DSP模型及直接生成C语言程序的方法,简化了DSP软件的开发。本文所提出的快速控制原型系统由于其控制性能优越且成本低,在控制实验系统中有着非常广泛的应用前景。
  <E:\王芳\现代电子技术201506\现代电子技术15年38卷第6期\Image\47T4.tif>
  图4 编译信息
  <E:\王芳\现代电子技术201506\现代电子技术15年38卷第6期\Image\47T5.tif>
  图5 硬件仿真结果
  采用这种开发方法,开发人员不需写一行代码就可实现DSP系统的代码开发,极大地减轻了开发人员的工作负担,提高工作效率。学习使用该开发方法对广大DSP应用开发人员具有较大的实用意义。
  参考文献
  [1] 张祥,杨志刚.Matlab/Simulink模型到C/C++代码的自动实现[J].重庆工学院学报:自然科学版,2006(11):111?113.
  [2] 冷斌,李学勇,刘建华.一种基于Matlab的DSP调试及直接代码生成方法[J].现代电子技术,2008,31(20):68?70.
  [3] 方正,张淇淳,齐玉成.基于DSP 的快速控制原型系统[J].东北大学学报:自然科学版,2009(8):1069?1073.
  [4] 王子剑,孔峰.一种基于DSP的数字电子负载设计方法[J].广西工学院学报:自然科学版,2009(6):241?244.
  [5] 卢小锦,曾岳南.基于Matlab/Simulink的TMS320F2812代码开发[J].广东工业大学学报,2009(6):79?81.
  [6] 杜磊,薛重德,任志国.基于DSP的自动代码生成及应用[J].南京航空航天大学学报:自然科学版,2010(4):93?96.
  [7] 赵秀玲,张利,武玉强.Matlab辅助DSP实现FIR数字滤波器[J].现代电子技术,2007,30(9):38?40.
  [8] 王康佳,刘诗伟,孙番典.基于Matlab/DSP Builder任意波形信号发生器的两种设计[J].现代电子技术,2011,34(3):179?181.

相关文章
推荐内容
上一篇:【基于单片机的音乐彩灯控制器】基于单片机的音乐彩灯控制器设计
下一篇:2019小吃创业好项目|2019创业好项目推荐
Copyright 我能学习网_免费的学习网站 版权所有 All Rights Reserved