DSP原理与应用实验讲义1_第1页
DSP原理与应用实验讲义1_第2页
DSP原理与应用实验讲义1_第3页
DSP原理与应用实验讲义1_第4页
DSP原理与应用实验讲义1_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

st___i__

刖s

随着数字电子技术不断发展,人们对数字信号处理的要求也越来越高,传统意

义上的微处理器已不能满足现代数字电子技术发展的要求,而数字信号处理器

(DSP)在近20多年的发展与普及后,应用领域几乎涵盖了所有的行业:通信、

信息处理、自动控制、雷达、航空航天、医疗、日常消费品等。目前大多数学校都

是理论结合实验进行教学,围绕该课程所开的实验课程皆为阶段性理论的验证实

验,实验设备也仅是为验证某些算法和理论所使用,实验的项目相对来说比较单一

和固定,实验设备的利用效率低下,其实验设备缺少研发和形成一个数字信号处理

产品的能力。目前,我校的通信工程专业开设了《数字信号处理》、《语音信号处

理》、《数字图像处理》等信号处理相关课程,但尚缺乏一个动手实践和灵活应用

的实验平台。数字信号处理器由于其优异的运算能力和独特的硬件结构,是一个理

想的选择。结合当前的情况,本实验讲义从培养应用型人才的角度出发,并充分借

鉴各大高校的先进试验教学管理技术,开发并设计了相应的DSP实验项目。

本实验讲义将实验分为三个模块,即基础实验、应用实验、扩展实验,以满足

不同能力和需求的学生的需要。本实验讲义在《DSP原理及应用实验教学改革课

题》支持下编写完成。不足之处,请广大师生指正。

目录

基础实验1CCS软件的使用-5-基础实验2:简单

应用程序的调试-17-应用实验1:DSP数据存取实

验-21-应用实验2:GPIO控制实

验-24-应用程序3:定时器控制实

验-27-应用实验4:DMA读写实

验-31-应用实验5:UART控制实

验-36-应用实验6:A/D采样实

验-41-应用实验7:有限冲击响应滤波器(FIR算法实

验-44-应用实验8:快速傅立叶变换(FFT算法实

验-49-扩展实验1:语音回声实验-55

-扩展实验2:语音和声实验-57-扩展实验3:交通灯

实验-60-附录A-

64-附录B-73-

基础实验1CCS软件的使用

1.实验目的:

1.熟悉CCS集成开发环境,掌握工程的生成方法;

2.熟悉SEED-DEC5502实验环境;

3.掌握CCS集成开发环境的调试方法。

2.实验内容:

1.DSP源文件的建立;

2.DSP程序工程文件的建立;

3.学习使用CCS集成开发工具的调试工具。

3.实验背景知识:

3.1CCS简介

CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入

式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。CCS提供

了基本的代码生成工具,它们具有一系列的调试、分析能力。CCS支持如下所示

的开发周期的所有阶段

分析

实时调试

统计

跟踪

CCS构成及接口见下图

菜单备・

[编辑工具条,工作区中图

形显示窗口

ta・|x>「(•5iFfl.l.殂b'<«:»*:•VMS

;勺;土”镇泽工具条

"0

后“0OfliQSBd

・2”

♦»«•«•00394:

->,:5.£H•c)ltv004f20OO52X:

・0•

,.gR.fltcOOM41oosm:MOW

-JI-jiIXJUFSUl0052”:0067

UN»/Vmc«4i«

Kr:f'.14OOS^At0H3

«Me”4ta».

」《《"nIS017A

•u,.cu»OKJtC:

XKoo$mt0101

・j!3«—12f—»f

FF99

/r0052M):

*w|oe8mH(E)

n»oe

/pmijnaor.

n»F5

0067Q1DA

8”0414

046t04M

011SDIM

“99r»M

1111i>rwlfeiatFMTFAW

'()1'l«r«aiR1・LFAItrxM

l|;rmFDCA

OT)t|rat2>:00”02TA

octput)):0SMMCC

、)C1.SV?.OMQK07S24

工作区中c3

程序编辑窗口变量双硒口•

CCS窗口介绍:

工作区中图

形显示窗口,

t*uT«”b-

03。

"OQMQBId

HSSSDHHl

「,,::MUMfOUt,_“fl34

OOSM4:0000OOM

|<2O82f1MCM430009M2A

^NUFSLIiOOUWi0M7OOM

no«^5OW214001MA:0113OIK

gem0M215aos^c:OITAQtSC

眄,1*4*4«faos^।0W1OOM

i«J0®2TlWM9fOOS7AQ;rrwFEM

KQOXl0*M?0aapA?;roc)FDM

M|2Mtrooert>M

0(l2A6.FDf$FPM

MIMtiOM?OIM

M。中0414

046*0414

0)11OIM

rt»x

rtcrFAVO

FAlt,AR

mifDEA

15tL0067om

qx,z.s5t0S»MCC

中LEOwtpt0":OMV

工作区中数变量艰烹窗口•

据显示第口•

毋隹运行结n工作区中反汇

姆调试窗口,

3.2使用CCS常遇见文件简介:

1.program.c:C程序源文件

2.program.asm:汇编程序源文件

3.filename.h:C程序的头文件,包含DSP/BIOSAPI模块的头文件

4.filename.lib:库文件

5.project.cmd:连接命令文件

6.program.obj:由源文件编译或汇编而得的目标文件

7.program.out:经完整的编译、汇编以及连接后生成可执行文件

8.program.map:经完整的编译、汇编以及连接后生成空间分配文件

9.project.wks:存储环境设置信息的工作区文件

保存配置文件时将产生下列文件:

1.programcfg.cmd:连接器命令文件

2.programcfg.h54:汇编头文件

3.programcfg.s54:汇编源文件

(-CMD文件简介

cmd文件用于DSP代码的定位。由3部分组成:

1.输入/输出定义:

.obj文件:链接器要链接的目标文件。

.lib文件:链接器要链接的库文件。

m叩文件:链接器生成的交叉索引文件。

.out文件:链接器生成的可执行代码;链接器选项。

2.MEMORY命令:描述系统实际的硬件资源。

3.SECTIONS命令:描述"段"如何定位。

下面例子则可说明其基本格式:

-0sample.out

-msample.map

-stack100

sample.objmeminit.obj

-1rts.lib

MEMORY

PAGE0:VECT:origin=Oxff8(),length0x80

PAGE0:PROG:origin=0x2000,length0x400

PAGE1:DATA:origin=0x800,length0x400

)

SECTIONS

(

.vectors:{}>PROGPAGE0

.text:{}>PROGPAGE0

.data:{}>PROGPAGE0

.cinit:{}>PROGPAGE0

.bss:{}>DATAPAGE1

)

下面介绍一下CMD文件中常用的程序段名与含义

1..cinit存放C程序中的变量初值和常量;

2..const存放C程序中的字符常量、浮点常量和用const声明的常量;

3..text存放C程序的代码;

4..bss为C程序中的全局和静态变量保留存储空间;

5..far为C程序中用far声明的全局和静态变量保留空间;

6..stack为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参

数传递、存储局部变量和保存中间结果;

.sysmem用于C程序中malloc、calloc和realloc函数动态分配存储空间。

(二vecs.asm文件简介

vecs.asm是DSP的中断向量表文件。中断服务程序的地址(中断向量)要装

载到存储器的合适区域。一般中断向量表文件是采用汇编语言编写;在文件中一般

汇编指令.sect来生成一个表。这个表包含中断向量的地址和跳转指令。因为中断

读物的标志符在汇编语言模块外部使用,所以标志符用.ref或.global。

(三GEL文件简介

GEL文件的功能同cmd文件的功能基本相同,用于初始化DSP。但它的功能

比cmd文件的功能有所增强,GEL在CCS下有一个菜单,可以根据DSP的对象

不同,设置不同的初始化程序。以下面的例子介绍一下GEL文件的构成。

例:

#defineDEC5502_CTL0x6000()〃定义DEC5502_CTL寄存器

#defineDEC5502JNT0x60001//定义DEC55()2_INT寄存器

#defineDEC5502_STA0x60002//定义DEC5502_STA寄存器

StartUp(;开始函数

GEL_MapReset(;;存储空间复位

GEL_MapAdd(0x0000,0,0x7fff,1,1;定义程序空间()()()()-7fff可读写

GEL_MapAdd(()x8()00,0,0x7000,1,1;定义程序空间8000-玲()0可读写

GEL_MapAdd(()x()()()(),1,()x1()0(),1,1;定义数据空间0000-f()()()可读写

GEL_MapAdd(0xffff,2,1,1,1;定义I/O空间Oxffff可读写

GEL_MapOn(;存储空间打开

GEL_MemoryFill(0xffff,2,1,0x40;在I/O空间添入数值40h

)

3.3CCS常用指令简介

1.设置断点。

将光标放置在需要设置断点的程序行前,选择Debug-Breakpoints,即完成可

一个断点的设置。

2.CCS提供3种方法复位目标板

1ResetDSP:Debug-ResetD,初始化所有的寄存器内容并暂停运行中的程

序。使用此命令后,要重新装载out文件后,再执行程序。

2Restart:Debug—Restart,将PC值恢复到当前载入程序的入口地址。

3Gomain:Debug—Gomain,将程序运行到主程序的入口处暂停。

3.CCS提供4种执行操作

1执行执行:Debug-Run,程序运行直到遇到断点为止。

2暂停执行:Debug->Halt,程序停止运行。

3动画执行:Debug-Animate,用户反复运行程序,直到遇到断点为止。

4自由执行:Debug—RunFree,禁止所有断点运行程序。

4.CCS提供4种单步执行操作

1单步进入:快捷键F8,Debug-stepinto,当调试语句不是基本的汇编指

令时,此操作进入语句内部。

2单步执行:Debug—stepOver,此命令将函数或子函数当作一条语句执

行,不进入内部调试。

3单步跳出:Debug—stepOut,此命令作用为从子程序中跳出

4执行到光标处:快捷键crtl+F10,Debug—RuntoCursor,此命令作用为

将程序运行到光标处。

5.内存、寄存器与变量的操作

1查看变量:使用view—WatchWindow命令

2查看寄存器:使用view—Registers—*CPURegisters命令

3查看内存:使用view—memory命令

6.Graph的设置即图形显示

1选择View—Graph—>Time/Frequencyo

2在弹出的GraphPropertyDialog对话窗中,将GraphTitle,StartAddress,

AcquisitionBufferSize,DisplayDataSize,DSPDataType等的属性可改变为

如下图所示(也可根据具体需要设置属性)。向下滚动右侧的滚动条或调整dialog

框的大小可看到所有的属性。

示例(A将起始地址为0x2c28的数组进行图形显示

3点击OK,将出现所设的图形窗口。如:在滤波实验中,用以上方法设定的

形窗口,在运行滤波程序后,最终的显示结果如下图所示

4可以在图形上单击右键,选择“FloatInMainTable",这时图形将浮现在主窗

中,以便观察。

4.实验准备:

1.将DSP仿真器与计算机连接好;

2.将DSP仿真器的JTAG插头与SEED-DEC5502单元的J1相连接;

3.启动计算机,当计算机启动后,打开SEED-DTK5502的电源。观察

SEED-DTK_MBoard单元的+5V,+3.3V,+15V,-15V的电源指示灯灯

以及SEED-DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电

源,检查电源。

下面按照原文件、工程文件以及编译条件的设置来分别介绍一下CCS的使

用。

5.实验步骤:5.1创建源文件

1.双击

图标进入CCS环境。

CCS2CC5000).

2.打开CCS选择File—New-SourceFile命令

CCS2

3.编写源代码并保存

CCS2CC5000)

4.保存源程序名为math.c,选择File—Save

5.创建其他源程序(如.cmd)可重复上述步骤。

5.2创建工程文件

1.打开CCS,点击Project->New,创建一个新工程,其中工程名及路径可任意

指定

弹出如下对话框:

*1CodeComposer

FileEditViewProjectDebugProfilerGELOptionToolsDSP/BIOSWindowHelp

三]|赭取喻聃Ie

矗后I起码I袅爽

2.在Project中填入工程名,Location中输入工程路径;其余按照默认选项,

点击完

成即可完成工程创建;

3.点击Project选择addfilestoproject,添加工程所需文件;

4.在弹出的对话框中的下拉菜单中分别选择.c点击打开,即可添加源程序

math.c添

加到工程中;

5.同样的方法可以添加文件math.cmd、rts.lib到工程中;在下面窗口中可以

看到

math.c、math.cmd、rts.lib文件已经力口至ij工程文件中。

5.3设置编译与连接选项

I.点击Project选择BuildOpitions;

2,在弹出的对话框中设置相应的编译参数,一般情况下,按默认值就可以;

....

BuildOptionsformath,pjt

[>ath.pjt

卬而a0a:

JFiles

♦-JOELfile

_jProjects

-哥sath.:

Ip

De

c网p

nn

lGel

In

ulcb

-.J国

」r

so

因ffiuln

!it

CPUHALTED

3.在弹出的对话框中选择连接的参数设置,设置输出文件名(可执行文件与空

间分配

文件),堆栈的大小以及初始化的方式。

5.4工程编译与调试

1.点击Project-Buildall,对工程进行编译,如正确则生成out文件;若是修

改程序,

可以使用Project-Build命令,进行编译连接,它只对修改部分做编译连接工

作。可节省编译与连接的时间。编译通过,生成.out文件;

2.点击FileToadprogram,在弹出的对话框中载入debug文件夹下的.out可

执行

文件;

eEileEditViewErojectDebugProfilerGELOptionloolsDSP/BIOSttindow

Help-3x

谑小i点

math,pjt▼[Debug▼楞圜搓i|•

息比'(3国感国国画d

-

?!那9Files1

#include<stdio.h>

今?)♦_JGELfiles

(?-1Prolects

#defineQx4

Hv4zJ

HL2J

BuildComplete,

0Errors,0Warningsr0Remarks.

「Build/h11>1

CPUHALTEDQForHelp,pressFlLn

3.装载完毕;

EileEditJiewErojectDebugFtofilerQELOptionToolsDgP/BIOSJindor

Help-占x

图以。FRa%晓昌格能够履

|math.pjt-▼IlDebug~二参四康“❷包|电文

(ftf0图写回回回11

。■3

voidma1n()

停<>k

fixed_add(1556,40);

?>

fixedsub(334r222);

(p?fixed_mul(188,188);_,

fixed_div(188,18);

.floatAridf2..1.:二J

J±Ut2J

1112^

hBuild入Stdout/

CPUHALTEDII@ForHelp,pressFlLn

4.点击debug—GoMain回到C程序的入口;

FileEditViewProjectDebugProfilerGELOptionToolsDSP/BIOSWindow

hJJjT1

|\Build)\Stdout[

CPUHALTEDForHein.DressFlLn

5.打开File—Workspace—>SaveWorkspace保存调试环境,以便下次调试时不

而yata1芟rttj-

重新进行设置。只要File—>Workspace—LoadWorkspace即可恢复当前设置。

6.思考题

1.DSP软件开发与常规的软件开发(如:VC++等)有何区别?

2.仿真器在DSP软件开发中的作用是什么?

基础实验2:简单应用程序的调试

1.实验目的:

1.熟悉CCS集成开发环境,掌握工程的生成方法;

2.熟悉SEED-DEC5502实验环境;

3.掌握CCS集成开发环境的调试方法。

2.实验内容:

1.编译与链接的设置,生成可执行的DSP文件;

2.进行DSP程序的调试与改错;

3.学习使用CCS集成开发工具的调试工具;

3.实验程序,包含文件:

本实验中主要包括以下文件:

l.math.c这个文件中包含了实验中关于DSP运算的主要函数。主要包含有:

fixed_add(intx,inty:定点加法运算;

fixed_sub(intx,inty:定点减法运算;

fixed_mul(intx,inty:定点乘法运算;

fixed_div(intx,inty:定点除法运算;

float_add(doublex,doubley:浮点力口法运算;

float_sub(doublex,doubley:浮点减法运算;

float_mul(doublex,doubley:浮点乘法运算;

float_div(doublex,doubley:浮点除法运算;

float_fixed(doubiex:浮点转定点运算;

fixed_float(intx:定点转浮点运算;

2.math.cmd这是DSP的链接文件。它的主要功能是将DSP的每段的程序链接

到相

应的DSP的存贮区中。

3.rts55x.lib这是一个库文件,主要包含了有关C的运行环境与相应的函数的

代码。

4.实验准备:

首先将光盘下()3.ExamplesofProgram\04.SEED-DTK5502实验程序目录下的

3.1.5Math文件夹拷贝到D:盘根目录下。

1.将DSP仿真器与计算机连接好;

2.将DSP仿真器的JTAG插头与SEED-DEC5502单元的J1相连接;

3.打开SEED-DTK5502的电源。观察SEED-DTK_MBoard单元的+5V,+

3.3V,

+15V,-15V的电源指示灯以及SEED-DEC5502的电源指示灯D2、D4是

否均亮;若有不亮的,请断开电源,检查电源。

5.实验步骤

4.双击

图标进入CCS环境。

CCS2CC5000).

5.点击Project—open命令,在弹出的对话框中添加math.pjt文件;

CCS2CC300Q)

I

..』

6.按照下图所示的方法添加GEL文件,即右键点击工程视窗中的GELfiles,

在弹出的

菜单中选择laodgel命令。

CCS2CC300Q)

7.按照下图所示添加.out文件,即使用File—LoadProgram菜单命令。.out文

件一

般存放在math文件下的debug文件夹中。

fileEditJ[ievErojectDebugProfilerGELOptionloolsD£P/BIOSfindovHelp

Hev

Open...Ctrl+O

LoadErograa...

ReloadProgran

LoadSymbols

ReloadSymbols

UnloadSymbols

Load£EL...

Data

lorkspace

EileI/O...

RecentSourceFiles

RecentWorkspaces

8.使用projiect-Bulid命令编译当前程序。使用projiect—Bulidall命令编译整

个工程

程序。

注意:

在这个实验中,为了加深对CCS的了解,分别在编译与链接过程中设置了的

错误行。这些错误行都是在程序调试中经常遇到的。

□源程序错误:

♦在函数fixed.add()中的z的定义未加“;”号;

♦函数float_add()的{}号缺右边而未完整

□链接错误;

♦DSP的空间分配重叠;

在进行此实验时,只有将上述的程序错误改正后才能正确的编译与链接。产生

MATH.out。

链接错误修改方法如下:

链接错误存在于CMD文件中:

□MMR:origin=OOOOOOOh,length=OOOOOdOh

修改为:

MMR:origin=OOOOOOOh,length=OOOOOcOh

9.点击debug—GoMain回到C程序的入口main(函数处。

囤ElleEditViewErojectDebugProfiler£ELOptionToolsDSF/BIOSJLindovHelp

X

E)6ax公fs|>,5co*1▼1Iw

|»ath.pjt|(Debug▼曲空©R

0Sa!Q]0@d

00BB4C4effAADD#-l.SPA

殳Files00BB4E6c009c97CALL

(T科♦_JGELfiles00BB524e01AADD#1,SP

(?--JProjects▼J30BB544804RET

<>00BB56_abort:

00BB5620NOPV

QJdJ<>

theresultoffixed_oddwas15961一

theresultoffixed_subwas1121

theresultoffixed_mulwas22091

theresultoffixed_divwas1671

theresultoffloat_addwas3.700000e+031

theresultoffloat_subwas-1.000000e+021

theresultoffloat_mulwas6.000000e+041

theresultoffloat_divwas1.000000e+021

theresultoffloat_fixedwas15571

th?呼呼1三off[xedf1ogtwas9・721250e-01.1

|\Build人Stdout人Messages/J业对

CPUHALTED©ForHelp«pressF1[.r127,Cc

10.使用F5快捷键,运行程序,在Stdout观察窗中查看程序运行结果。

回ElleEditViewBroJectDebugProfiler登LOptionToolsDgP/BIOSflndowKelp-

9X

图mx

[math.pjt~~〔Debug~-3出.懒S酉|©之|'g

泉W(3图3!国日回£1

00BB4C4effAADD#-l.SPA

fFiles00BB4E6c009c97CALL_unlink

华(h*JGELfiles00BB524e01AADD#1.SP

年-ProjectsR0BB544804RET

<00BB56_dbort:

100BB5620NOPV

FW一旦⑷>

th©resultfixed_addwas1596!▲

theresultfixed_subwas112!

theresultfixed_mulwas2209I

theresultfixed_divwas167I

theresultfloat_addwas3.700000e+03I

theresultfloat_subwas-1.000000e+02I

theresultfloat_mulwas6.000000G+04I

theresultfloatdivwas1.000000e+02I

theresultfloat-fixedwas1557!

resultfixedfloatwas9.731250❷+01!

小Build入Stdout人Messages/

CPUHALTED

6.思考题

1.当编译或链接过程中出现了错误或告警时,如何利用编译窗口提示的信息来

修改程序?

应用实验1:DSP数据存取实验

1.实验目的:

1.了解TMS320VC5502的内部存储器空间的分配及指令寻址方式;

2.学习用CodeComposerStudio修改、填充DSP内存单元的方法;

3.学习操作TMS320VC5502内存空间的指令。

2.实验内容:

1.读写DSP内存单元数据;

2.复制内存单元的数据。

3.实验背景知识:

TMS320VC55xx系列DSP基于增强的哈佛结构,可以通过三组并行总线访问

多个存储空间。它们分别是:程序地址总线(PAB)、数据读地址总线

(DRAB)和数据写地址总线(DWAB)。由于总线工作是独立的,所以可以同

时访问程序和数据空间。

4.实验程序功能与结构说明:

1.Memory.c:这是实验的主程序,包含了系统初始化,读写、复制DSP内存

单元

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论