Matlab-Simulink的DSP代码生成

更新时间:2024-06-01 14:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

短线自考毕业论文

题 目: 基于Matlab/Simulink的

DSP代码生成

学生姓名: 龙文韬 学 号: 2201004 指导教师: 郭杰荣 专业班级: 电信00101班

完成时间: 2004年5月20日

目 录

引 言 ·························· 2 1 MATLAB/SIMULINK介绍 ·················2 DSP芯片介绍 ·····················2.1 什么是DSP芯片 ···················2.2 DSP芯片的开发 ···················3 系统级开发设计 ····················3.1 原理介绍 ······················3.2 开发工具 ······················3.2.1 TMS320C6701 EVM介绍 ···············3.2.2 MATLAB/SIMULINK中的C6701 EVM ···········4 应用举例 ·······················4.1 应用步骤 ······················4.2 实例说明 ······················结束语 ························参考文献 ······················· 2 2 2 3 4 4 8 8 8 9 9 9 13 13

基于Matlab/Simulink的DSP代码生成

基于Matlab/Simulink的DSP代码生成

电子信息科学与技术专业学生:龙文韬

指导教师:郭杰荣

摘要: 本文研究了基于Matlab/Simulink的DSP代码生成的方法。介绍了基于Matlab/Simulink的DSP系统级设计方法、Matlab与CCS系统对于DSP的各自特点及相互连接,论述了面向TI DSP芯片的系统设计。传统的DSP设计开发流程分为开发设计和产品实现两个环节。这样的开发流程存在许多问题,基于Matlab/Simulink的系统级设计方法,完成了从概念设计、软件仿真、硬件测试全过程。在软件算法仿真测试后直接生成面向数字信号处理(DSP)芯片的代码,有利发现系统设计的错误。

关键词: Matlab Simulink 数字信号处理 C6701评估板 代码编译系统

The Generation

of DSP Code Built on Matlab/Simulink

Electronic Information Science and Technology

Long Wen-tao Advisor: Guo Jie-rong

ABSTRACT: This paper discusses the Digital Signal Processor(DSP)code generation built on Matlab/Simulink system。The system design method with Matlab/Simulink , characteristic and contact of DSP about Matlab and CCS system are described。The system design is based on TI DSP chip。Traditional DSP design has two parts:developing design and product achievement。There has many problems in this process。The system design method built on Matlba/Simulink can accomplish the full course from concept design, software emulate to hardware achieve, the method is in favor of finding out mistakes in the system design by direct DSP chip’s code generation after software arithmetic emulate test。

KEYWORD:Matlab Simulink DSP C6701EVM CCS

1

基于Matlab/Simulink的DSP代码生成

引 言

近年来,伴随着高科技日新月异的发展,对数字信号处理(DSP)芯片的研发也潜移默化地发生了深刻的变革。但现在研发公司或实验室的硬件多采用美国TI公司的系列芯片,开发软件多采用CCS系统等,设计语言为汇编或C,不同层次的科研成员完成一项验证或设计需使用多种语言和开发平台,这就增大了产品开发的风险,延长了产品的上市时间。基于MATLAB/Simulink自带的DSP工具箱可以完成概念设计、软件仿真、硬件测试全过程,Matlab语言易学易用,不要求使用者具备高深的数学知识和编程技巧,现已成为大学教学和科研中最常见的工具。如果能够将DSP开发过程在同一平台上完成将能方便的建立系统模型、实现从系统设计到实现的完美过渡,对DSP的应用开发也能提供一条便利的途径。

1 Matlab/Simulink介绍

Matlab是一种面向科学与工程计算的高级语言,它集科学计算、自动控制、信号处理、神经网络和图像处理等学科的处理功能于一体,具有极高的编程效率。Matlab是一个高度集中的系统,Matlab提供的Simulink是一个用来对动态系统进行建模、仿真和分析的软件包,它支持线性和非线性系统,能够在连续时间域、离散时间域或者两者的混合时间域里进行建模,它同样支持具有多种采样速率的系统。

整体上而言,Simulink是一个系统级的设计和仿真工具,它可以为各种各样的系统建立模型。使用Simulink很容易创建系统的模型,设置仿真参数,然后对模型进行仿真。Simulink和Matlab是高度集成的,用户可以借助Matlab强大的数据分析和可视化功能来分析系统仿真结果。

目前Matlab的最新版本是6.5,对应的Simulink版本是5.0。

2 DSP芯片介绍

2.1 什么是DSP芯片

DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。DSP芯片的内部

2

基于Matlab/Simulink的DSP代码生成

采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP 指令,可以用来快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下的一些主要特点:

(1) 在一个指令周期内可完成一次乘法和一次加法。 (2) 程序和数据空间分开,可以同时访问指令和数据。

(3) 片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问。 (4) 具有低开销或无开销循环及跳转的硬件支持。 (5) 快速的中断处理和硬件I/O支持。

(6) 具有在单周期内操作的多个硬件地址产生器。 (7) 可以并行执行多个操作。

(8) 支持流水线操作,使取指、译码和执行等操作可以重叠执行。 与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。

2.2 DSP芯片的开发

目前,对于DSP工程师来说,除了必须了解和熟悉DSP本身的结构(包括软件指令系统和硬件结构)和技术指标外,还必须熟悉和掌握其开发工具和环境。

TI DSP的开发工具和环境主要包括以下三个部分:

? 代码生成工具(编译器、连接器、优化C编译器、转换工具等) ? 系统集成及调试环境与工具 ? 实时操作系统

图1为TI的TMS320系列DSP软件开发流程图:

3

基于Matlab/Simulink的DSP代码生成

C Source Files C Source Files C Compiler Archiver Assembler Source Macro Library Assembler COFF Object Runtime Support Library Computer Archiver Library of Object Files Linker EVM With Debugger XDS Emulator With Debugger Simulator Hex Conversion Utility EPROM ProgrammAbsolute Lister Executable COFF File TMS320 DSP 图1 TI TMS320 系列DSP软件开发过程

3 系统级开发设计

3.1 原理介绍

系统级设计的核心是将算法设计和系统设计仿真在统一的开发环境中进行,从而有效地将开发流程的两个部分结合在一起。

4

基于Matlab/Simulink的DSP代码生成

进行系统级设计需要一个统一的开发环境,且在该开发环境中可以对系统机构、算法进行描述,还能够对系统不同的层次,不同组件和不同数据类型进行建模;同时要有良好的移植性能。Simulink提供了这样一个很好的开发环境,他是基于图块的系统级仿真环境。分级系统的描述方式,提供了真正的自顶向下的设计方法,并且通过图块的方式实现移植。

由美国TI与Math公司联合开发的面向TI TMS320C6000 DSP开发平台的嵌入式对象,使MATLAB\\ Simulink与TI高速DSP工具结合成为一体。这套软件使设计者能够利用Matlab平台在C6701或C6711评估板上,经概念设计到代码及自动高速模型生成,对所设计的数字信号处理系统进行开发、验证。开发过程利用Matlab实时工作平台(Real-Time Workshop)以自动生成一个C语言的CCS工程。CCS平台的所有特性,包括编辑工具、编译链接、调试工具、代码压缩以及工程管理等等,都可以调用,帮助设计者随意地使用MATLB、Simulink、Real-Time Workshop以及硬件,利用CCS工程自动地编译、链接,将生成的可执行文件下载到C67XX芯片。一般设计流程如图2所示。

Developer’s Kit for Ti DSP是MathWorks公司和Texas Instruments(TI)公司合作开发的一个基于Simulink和Real-Time Workshop的开发工具箱,有了这个开发工具箱,用户可以在Simulink的环境中搭建数字信号处理的算法,然后通过Real-Time Workshop生成面向TMS320C6701 Evaluation Module(C6701EVM)或者Texas Instruments Code Composer Studio Integrated Development Enviroment(CCS IDE)的ANSI C 代码。Developer’s Kit for Ti DSP可以利用TI的编译工具将生成的代码编译成面向C6701EVM的机器码,并可将该机器码直接下载到C6701EVM上执行。为了支持面向C6701EVM的代码生成,Developer’s Kit for Ti DSP提供了一个基于Real-Time Workshop的目标Target for C6701 EVM。使用这个目标,用户可以从Simulink模型生成C6701EVM的可执行文件或者生成一个针对C6701EVM的CCS IDE工程文件。用户可以在CCS IDE环境中修改该工程文件,

5

测试并调整设计 编译链接模型到目标板 使用Simulink或其他模块库中的模块建立模型 添加TI 对象模块完成模型与目标板的通信 完成系统设计 设置仿真对象参数(包括simulink与Real-Time ) 图2 基于Simulink与C6000的设计流程图

基于Matlab/Simulink的DSP代码生成

然后再编译下载。

TI(Texas Instruments)公司可向用户提供C6701EVM,帮助用户开发针对TMS320C6701的数字信号处理程序。一方面,C6701EVM上为TMS320C6701 DSP提供了输入端口、输出端口、时钟电路、内存单元和电源;另一方面,MathWorks公司和TI公司为Windows用户提供了集成的开发环境,方便用户开发、编译、下载和调试在C6701EVM上运行的算法程序。

除了能够产生面向C6701EVM的代码,Developer’s Kit for Ti DSP还提供了使用CCS IDE和TI Real-Time Date Exchange(RTDX)的两个接口。 3.1.1 Developer’s Kit for TI DSP 三种接口

Developer’s Kit for TI DSP向用户提供的三种接口,如图3所示:

3.1.1.1 Target for CCS IDE/C6701 EVM

Target for CCS IDE/6701 EVM可让用户从数字信号处理的Simulink模型自动生成面向C6701 EVM的CCS IDE工程文件,并可进一步自动编译下载到C6701 EVM上执行。设计人员可以快速地将数字信号的算法模型下载到实时硬件平台上执行,用以评估算法的性能,或

6

MATLAB Product-Family SIMULINK Product-Family Developer’s Kit for Texas Instruments DSP Link for RTDX Link for CCS IDE Target for CCSIDE/C6701EVM/C6711DSK Real-time Program control Data Data CCS project/C code Code Composer Studio RTDX

Any C5000/C6000 target CCS project file C6701EVM/C6711DSK 图3 集成开发工具的三种接口

基于Matlab/Simulink的DSP代码生成

者转换成一个CCS IDE工程文件,实现从Simulink环境到CCS IDE环境的无缝连接。通过Target for CCS IDE/6701 EVM,用户可以方便地利用MathWorks公司提供的DSP、通信和数学算法库,将主要的精力放在设计而不是在DSP编程上,进行反复的迭代设计,直到算法满足系统性能要求。Target for CCS IDE/6701 EVM对用户的价值在于: ? 有助于实现DSP算法原型; ? 系统级的算法验证;

? 从Simulink模型到CCS IDE工程的无缝转换; ? 降低编写DSP代码的难度和工作量。 3.1.1.2 Link for CCS IDE

Link for CCS IDE接口实现了CCS IDE和Matlab之间的连接,允许用户在Matlab命令窗口下载运行CCS IDE中的程序,与目标内存之间(非实时地)交换数据,检测处理器的状态,停止或者启动程序在DSP中的运行。Link for CCS IDE对用户的价值在于: ? 用户可以利用MATLAB强大的数据分析和可视话功能,节省设计和调试程序的时间; ? 可以编写用于调试数字信号处理程序的m语言批处理脚本,实现调试和分析的自动化; ? 支持TI的C5000/6000系列DSP。 3.1.1.3 Link for RTDX

Link for RTDX接口提供了MATLAB和支持RTDX的TI DSP上运行的程序之间实时交换数据的一种方式。通过Developer’s kit for TI DSP 提供的MATLAB ActiveX对象CCSDSP,可以建立MATLAB和DSP之间的通信通道,在MATLAB命令窗口和DSP处理程序之间实时地发送和接收数据,而不必中断目标程序的运行。Link for RTDX对用户的价值在于:

? 可以实现对实时数据的自动的高级分析和可视化; ? 实现对复杂DSP程序的有效验证; ? 支持TI的C5000/6000系列DSP。

7

基于Matlab/Simulink的DSP代码生成

3.2 开发工具

3.2.1 TMS320C6701 EVM介绍

C6701 EVM是TI公司推出的TMS320C6701 DSP芯片的评估板,它可用于有线/无线宽带

网络、语音识别、图象处理、雷达等对运算能力和存储量有较高要求的场合。它包含的硬件有:(1)32位浮点DSP芯片TMS320C6701/167MHz,1GPS;(2)64K×32bit SRAM,2M×32bit SDRAM;(3)标准JTAG接口,与XDS510/560连接方便调试;(4)CPLD,实现板上逻辑、时序控制;另外有PCI接口,电源模块,音频接口等。

3.2.2 Matlab/Simulink中的C6701 EVM

安装了Developer’s Kit for TI DSP模块之后,在Simulink Library Brower中会出现一个支持C6701 EVM的模块库.

在搭建面向C6701EVM的工程文件的Simulink模型时,可选用该模块库中的模块。下面分别介绍这几个模块:

C6701 EVM ADC模块

这个模块用于采样和量化,给C6701 EVM板提供外部信源,如信号发生器、频率发生器和音频设备。将C6701 EVM ADC模块放在Simulink模块中可以让用户使用C6701 EVM上的多媒体语音编码和解码模块(codec),用以将从Line In或者Mic In端口输入的模拟信号转换为数字信号,供C6701 EVM上的DSP TMS320C6701处理。

C6701 EVM DAC模块

将C6701 EVM DAC模块放在Simulink模块中后,C6701 EVM上的codec模块会将接收到的处理后的数字信号转换成模拟信号向LINE OUT端口输出。

C6701 EVM LED模块

Simulink模型中的C6701 EVM LED模块可用于触发C6701 EVM的外部状态指示灯(User Status LED1)。

Reset C6701 EVM模块

双击Simulink模块中的Reset C6701 EVM模块,可将正在运行从该模型自动生成的可

8

基于Matlab/Simulink的DSP代码生成

执行文件的C6701 EVM复位。只要用户双击这个模块,它就运行一个MS-DOS函数来复位C6701 EVM上的处理器。程序停止运行,DSP TMS320C6701返回初始状态。

4 应用举例

4.1 应用步骤

Developer's Kit for TI DSP的中心点在于系统级开发C6701 EVM/C6711 DSK的数字信号处理的应用系统,下面举例介绍其用法。

Developer's Kit for TI DSP开发C6701 EVM应用系统的步骤:

(1) 安装C6701 EVM板,将TI提供的相关软件CCS IDE也安装在同一台PC机上。 (2) 运行MATLAB,在命令栏键入:C6701EVMLIB,打开C6701EVMLIB的Simulink模块库。

该库包含四个模块C6701 EVM ADC(模数转换模块)、C6701 EVM DAC(数模转换模块)、C6701 EVM LED(指示用户状态的LED)、Reset C6701 EVM(复位模块)。

(3) 建立Simulink仿真模型,如果需要,可以为Simulink仿真模型添加上述的EVM I/O

设备。设置其属性,在属性对话框中单击Real-Time Workshop选项卡,Category栏里选中Target configuration,修改System target file和Template make file文件名。 (4) 在Real-Time Workshop选项卡中选中TI C6701 EVM runtime 其它位默认值,单击Make

Project按钮,就可将Simulink模型自动生成CCS IDE的工程文件,并自动调入CCS IDE中,那么该工程文件就可以在CCS IDE中编译下载运行了。若现在生成工程文件后,自动地编译下载到C6701 EVM上执行,要改Build action 选项为Build_and_execute。这时单击Build&Run按钮,可实现自动的编译下载并运行。

4.2 实例说明

下面以建立数字音频回放系统模型为例详细说明:

(1) 打开Matlab,在命令行内输入Simulink 回车进入Simulink界面。 (2) 通过File->New model新建一个模型。 (3) 用Simulink模块建立下图所示模型:

9

基于Matlab/Simulink的DSP代码生成

图4 Simulink下建立的简单系统模型

在DSP模块的信号运行库内查找Integer Delay模块。此时,不需要加入输入、输出信号线。在以后的步骤中当加入C6701 EVM模块时,再给SUM模块加入输入输出。 (4) 用一个恰当的名字保存模型。 (5) 为模型加入C6701 EVM模块

在Matlab命令提示行内键入c6701evmlib调出C6701 EVM库模块。

图5 c6701evmlib

(6) 在Simulink库浏览器内双击Developer’s Kit for TI DSP,打开c6000lib模块。 (7) 点击EVM模块库为C6701 EVM找到可利用的模块。

(8) 拖拽C6701 EVM ADC与C6701 EVM DAC模块到所建模型中。 (9) 在下图所示模型中连接好新的信号线

10

基于Matlab/Simulink的DSP代码生成

反馈放大

模数转换 整数延迟

延迟混和

数模转换

图6 可在C6701 EVM上执行的数字语音回放系统模型

配制与设定Developer’s Kit模块

(1) 点击选中C6701 EVM ADC模块。

(2) 从Simulink编辑目录中选择“模块参数”(Block Parameters)

为选中模块设置以下参数: ? 清除”立体声”(Stereo)复选框 ? 选择+20 dB mic gain boost复选框

? 从下拉列表中设置”取样率”(Sample rate)为8000 ? 设置多媒体数字信号编解码器(codec)数据格式为16-bit ? 将输出数据类型设置为”Double” ? 设置”Scaling”为规格化(Normalize) ? 设置源激励为0.0 ? 将采样设为64每帧

(3) 将C6701 EVM ADC设置为”Mic In”,点击”OK”关闭C6701 EVM对话框 (4) 设置C6701 EVM DAC block

? 设置多媒体数字信号编解码器(codec)数据格式为16-bit ? 设置”Scaling”为规格化(Normalize) ? 在DAC衰减一栏填入0.0

? 设置溢出模式(Overflow mode)为饱和(Saturate)

11

基于Matlab/Simulink的DSP代码生成

(5) 点击”OK”退出对话框

接下来设置Simulink仿真参数(Simulation Parameters)

(1) 打开仿真参数对话框,在Solver窗格内为模型和Developer’s Kit设置适

当的功能

? 设置开始时间为0.0结束时间为inf(模型不停的运行) ? 在Solver选项下,从列表中选择固定的步幅和不连续的设置 ? 设置固定步幅大小为自动、模式为信号作业

(2) 在仿真参数对话框中取消Workspace I/O,Diagnostics(诊断)与高级窗

格。此模型可以采用默认的设置。 设置Real-Time Workshop Target Build选项

(1) 点击Real-Time Workshop标签,为Category选择目标配制

(2) 在配制下,点击Browse(浏览)为C6000 targets选择系统目标文件 (3) 在系统目标文件浏览下,选择系统目标文件ti_c6000.tlc,点击OK关

闭浏览窗口

(4) 从代码发生目标类型列表中,选择C6701_EVM (5) 在Category中,选择TI C6000编译器 (6) 在对话框中设置以下选项

? 字节命令(Byte order)应为Little endian ? 设置编译器冗长为Quiet (7) 为TI C6000连接器改变种类

? 选择Retain.obj文件

? 为连接器命令文件选择整个内存图(map) (8) 改变TI C6000类的运行时间

? CPU clock:133MHz ? Overrun action:Halt

? Build action:Build_and_execute 在C6701 EVM上建立执行该系统模型

(1) 点击Build为C6701 EVM产生与建立可执行目标文件

(2) 通过点击C6701 EVM Reset模块或用CCS内的Halt功能可以结束执

12

基于Matlab/Simulink的DSP代码生成

行,也可以在Matlab命令行内键入halt。

最后,测试该数字音频回放系统模型。

在C6701EVM的Mic In插孔上插入麦克风,LineOut插孔上扬声器和示波器,测试时,对麦克风讲话,可以从扬声器中听到声音和从示波器中看到波形,证明回放系统工作正常。

结束语

本文系统而简略的介绍了用MATLAB/SIMULINK进行DSP代码生成,介绍了Developer’s Kit for TI DSP工具箱,结合实例介绍了MATLAB/SIMULINK建模、DSP代码生成的过程,并对数字语音回放系统模型进行了有层次的仿真,这对DSP代码生成步骤作了十分详细的介绍。利用MATLAB/SIMULINK生成DSP代码,模型直观,不用编程,易于使用,为以后验证设计思想、并进行高效成功的设计打下良好的基础。

答谢:在撰写此论文的过程中,导师郭杰荣老师给予我很大的帮助,对我的论文提出了很多宝贵的意见与建议,在此表示由衷的感谢。

参考文献

[1] 陈永春.从Matlab/Simulink模型到代码实现.北京:清华大学出版社.2002(10) [2] 范影乐、杨胜天、李轶.Matlab仿真应用详解.北京:人民邮电出版社.2001(7)

[3] Developer's Kit for Texas Instruments DSP User's Guide. MathWorks Inc. February 2001 [4] TMS320C6701 Evaluation Module User's Guide. Texas Instruments Inc., August 2002

13

本文来源:https://www.bwwdw.com/article/29n6.html

Top