DSP实验指导书文档格式.docx

上传人:b****5 文档编号:20848696 上传时间:2023-01-26 格式:DOCX 页数:24 大小:476.52KB
下载 相关 举报
DSP实验指导书文档格式.docx_第1页
第1页 / 共24页
DSP实验指导书文档格式.docx_第2页
第2页 / 共24页
DSP实验指导书文档格式.docx_第3页
第3页 / 共24页
DSP实验指导书文档格式.docx_第4页
第4页 / 共24页
DSP实验指导书文档格式.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

DSP实验指导书文档格式.docx

《DSP实验指导书文档格式.docx》由会员分享,可在线阅读,更多相关《DSP实验指导书文档格式.docx(24页珍藏版)》请在冰豆网上搜索。

DSP实验指导书文档格式.docx

CCS既可以生成可执行工程文件,也可以生成库文件。

(5)内存映射文件(*.map):

CCS编译连接后,生成的内存映射文件,开发人员可以根据此文件掌握内存的使用状况。

(6)可执行文件(*.out):

可以在DSP上运行的可执行文件。

在调试的时候,用CCS的Loadprogram功能把此文件灌入到DSP芯片中。

四、实验内容

本实验主要是软件仿真,即完全用CCS软件运行用户程序。

软件仿真是在实验条件有限的环境下,如没有EVM或DSK、目标板等硬件设备。

软件仿真通常用于调试纯软件的算法和进行效率分析等。

由CCS软件在PC机内存中构造一个虚拟的DSP环境,可以调试、运行程序。

在某种程度上,软件仿真是可信的。

但是在有些情况下,如使用了外设DMA或算法非常复杂等,则软件仿真的结果就不可信了,甚至结果错误,因为一般软件无法构造DSP中的外设。

在使用软件仿真方式工作时,无需连接板卡和仿真器等硬件。

1、配置CCS工作环境:

(1)双击桌面上的

,进入CCS设置窗口,“ImportConfiguration”。

(2)在出现的窗口中按标号顺序进行如下设置:

图2CCS初始化配置窗口

接着在下面出现的窗口中选择“否(N)”。

此时CCS已经被设置成Simulator方式(软件仿真TMS320VC5509A器件的方式),如果一直使用这一方式就不需要重新进行以上设置操作了。

(3)启动CCS:

启动软件仿真Simulator方式,双击桌面上的图标:

2、启动CCS后的窗口

为方便介绍CCS各个功能,这里截取了一个实用工程的开发界面,若按照以上步骤操作的话,界面要简单的多。

图3为CCS工作环境,图4为一个典型开发工程的开发界面。

图3CCS工作环境

图4典型实用开发工程CCS界面

3、创建工程

(1)创建新的工程文件:

选择菜单“Project”的“New…”项。

图5建立新工程操作

弹出下图,按编号顺序操作建立volume.pjt工程文件:

③单击完成设置

图6创建新工程步骤

展开主窗口左侧工程管理窗口中“Projects”下新建立的“volume.pjt”,其中各项均为空。

(2)在工程文件中添加程序文件:

选择菜单“Project”的“AddFilestoProject…”项;

在“AddFilestoProject”对话框中选择文件目录为D:

\5509\program\UseCCS,改变文件类型为“CSourceFiles(*.c)”,选择显示出来的文件“volum.c”;

重复上述各步骤,添加volume.cmd文件到volume工程中;

添加C:

\ti\C5500\cgtools\lib\rts55.lib文件到工程中。

(3)编译链接工程:

选择菜单“Project”的“RebuildAll”项,或单击工具条中的

按钮;

注意编译过程中CCS主窗口下部的“Build”提示窗中显示编译信息,最后将给出错误和警告的统计数。

4、编辑修改工程中的文件:

(1)查看工程文件:

展开CCS主窗口左侧工程管理窗中的工程各分支,可以看到“volume.pjt”工程中包含“volume.h”、“rts55.lib”、“volume.c”和“volume.cmd”文件,其中第一个“volume.h”为程序在编译时根据程序中的“include”语句自动加入的。

(2)查看源文件:

Ø

双击工程管理窗中的“volume.c”文件,可以查看程序内容。

可以看到,用标准C语言编制的程序,大致分成几个功能块:

-头文件。

描述标准库程序的调用规则和用户自定义数据、函数头、数据类型等。

具体包含哪一个头文件,需要根据程序中使用了哪些函数或数据而定。

比如:

如果程序中使用了printf函数,它是个标准C提供的输入/输出库函数,选中“printf”关键字,按Shift+F1会启动关于此关键字的帮助,在帮助信息中可发现其头函数为stdio.h,那么在此部分程序中需要增加一条语句:

#include“stdio.h”。

-工作变量定义。

定义全局变量。

-子程序调用规则。

这部分描述用户编制的子程序的调用规则。

也可以写到用户自己编制的.h文件中去。

-主程序。

即main()函数。

它可分为两部分:

变量定义和初始化部分、主循环部分。

主循环部分完成程序的主要功能。

-用户自定义函数。

这个程序是一个音频信号采集、处理输出的程序。

程序的主循环中调用自定义的函数read_signals来获得音频数据并存入输入缓存inp_buffer数组;

再调用自定义函数write_buffer来处理音频数据并存入输出缓存;

output_signals将输出缓冲区的数据送输出设备;

最后调用标准C的显示信息的函数printf显示进度提示信息。

整个系统可以完成将输入的音频数据扩大volume倍后再输出的功能。

read_signals()子程序中首先应有从外接AD设备获得音频数据的程序设计,但此例中由于未采用实际AD设备,就未写相应控制程序。

此例打算用读文件的方式获得数据,模拟代替实际的AD输入信号数据。

write_buffer()子程序中首先将输入缓冲区的数据进行放大处理,即乘以系数volume,然后放入输出缓冲区。

output_signals()函数完成将处理后的设备输出的功能,由于此例未具体操作硬件输出设备,所以函数中未写具体操作语句。

双击工程管理窗中的“volume.h”文件,打开此文件显示,可以看到其中有主程序中要用到的一些宏定义如“BUF_SIZE”等。

volume.cmd文件定义程序所放置的位置,此例中描述了CSDSPVC5509A评估板的存储器资源,指定了程序和数据在内存中的位置。

它首先将CSDSPVC5509A评估板的可用存储器分为五个部分,每个区给定起始地址和长度(区域地址空间不允许重叠);

然后指定经编译器编译后产生的各模块放到哪个区。

这些区域需要根据评估板硬件的具体情况来确定。

(3)编辑修改源文件及编译程序:

打开“volume.c”,找到“main()”主函数,将语句“input=inp_buffer;

”最后的分号去掉,这样程序中就出现了一个语法错误;

重新编译连接工程,可以发现编译信息窗口出现发现错误的提示;

双击红色错误提示,CCS自动转到程序中出错的地方;

将语句修改正确(将语句末尾的分号加上);

重新编译;

注意,重新编译时修改过的文件被CCS自动保存。

(4)修改工程文件的设置:

图7BuildOptions对话框

通过以上设置操作,重新编译后,程序中的用户堆栈的尺寸被设置成1024个字。

5、基本调试功能:

(1)下载程序:

执行FileLoadProgram,在随后打开的对话框中选择刚刚建立的C:

\ti\myprojects\UseCCS\Debug\volume.out文件。

(2)设置软件调试断点:

在项目浏览窗口中,双击volume.c激活这个文件,移动光标到main()行上,单击鼠标右键选择ToggleBreakpoint或按F9设置断点(另外,双击此行左边的灰色控制条也可以设置或删除断点标记)。

(3)利用断点调试程序:

选择DebugRun或按F5运行程序,程序会自动停在main()函数上。

①按F10执行到write_buffer()函数。

②再按F8,程序将转到write_buffer函数中运行。

③此时,为了返回主函数,按shift-F7完成write_buffer函数的执行。

④再次执行到write_buffer一行,按F10执行程序,对比与F8执行的不同。

提示:

在执行C语言的程序时,为了快速的运行到主函数调试自己的代码,可以使用DebugGomain命令,上述实验中的使用的是较为繁琐的一种方法。

6、使用观察窗口:

(1)执行ViewWatchWindow打开观察窗口。

(2)在volume.c中,用鼠标双击一个变量(比如num),再单击鼠标右键,选择“QuickWatch”,CCS将打开QuickWatch窗口并显示选中的变量。

(3)在volume.c中,选中变量num,单击鼠标右键,选择“AddtoWatchWindow”,CCS将把变量添加到观察窗口并显示选中的变量值。

(4)在观察窗口中双击变量,则可以在这个窗口中改变变量的值。

(5)把str变量加到观察窗口中,点击变量左边的”+”,观察窗口可以展开结构变量,并且显示结构变量的每个元素的值。

(6)把str变量加到观察窗口中;

执行程序进入write_buffer函数,此时num变量超出了作用范围,可以利用CallStack窗口察看在其他函数中的变量:

①选择菜单ViewCallStack打开堆栈窗口。

②双击堆栈窗口的main()选项,此时可以察看num变量的值。

7、文件输入/输出:

下面介绍如何从PC机上加载数据到DSP上。

用于利用已知的数据流测试算法。

在完成下面的操作以前,先介绍CodeComposerStudio的Probe(探针)断点,这种断点允许用户在指定位置提取/注入数据。

Probe断点可以设置在程序的任何位置,当程序运行到Probe断点时,与Probe断点相关的事件将会被触发,当事件结束后,程序会继续执行。

在这一节里,Probe断点触发的事件是:

将PC机存储的数据文件中的一段数据加载到DSP的缓冲区中。

(1)在真实的系统中,read_signals函数用于读取A/D模块的数据并放到DSP缓冲区中。

在这里,代替A/D模块完成这个工作的是Probe断点。

当执行到函数read_signals时,Probe断点完成这个工作。

①在程序行read_signals(input)上单击鼠标右键,选择“Togglebreakpoint”,设置软件断点。

②再在同一行上单击鼠标右键,选择“ToggleProbePoint”,设置Probe断点。

(2)执行以下操作:

图8设置探点

此时,已经配置好了Probe断点和与之关联的事件。

进一步的结果在下面实验中显示。

8、图形功能简介:

下面我们使用CCS的图形功能检验上一节的结果。

首先进行下面设置操作:

-在弹出的图形窗口中单击鼠标右键,选择“ClearDisplay”。

-按F12运行程序。

观察Input窗口的内容。

-退出CCS。

五、实验报告要求

1、实验报告中不能和实验内容中的文字雷同,用自己的话描述;

2、总结CCS软件应用的体会;

3、画图说明Input和Output的图形为什么看到的不同,和断点有关吗?

4、画出CCS的结果波形。

六、思考题

1、报告中阐述软件仿真和硬件仿真的区别、工作过程等;

2、阐述配置和启动CCS的几个重要过程;

3、阐述探点的使用过程;

4、看到的波形是连续的,则程序中的数据是模拟信号吗?

七、注意事项

1、自己建立的工程和文件不要放置在C或D盘的目录下;

2、运行CCS前,必须先配置SetupCCS;

3、在观察波形的时候,注意变量地址的引用:

&

4、加探点的时候须小心,确保探点设置成功。

 

实验二混合编程设计

1、在了解纯C语言程序工程和汇编语言程序工程结构的基础上,学习在C工程中加入汇编编程的混合编程方法;

2、了解混合编程的注意事项;

3、掌握混合编程的调试方法。

三、实验内容

1、启动CCS,配置为软件仿真工作环境。

2、运行CCS,建立一个工程,取名exp3a,并保存到c:

\ti\myprojects\exp3a\目录下。

3、编辑如下C文件,取名exp3a.c并保存到c:

/*Assemblyroutine*/

externintsum(int*);

/*definex[]、sasglobalarray*/

intx[2]={0x1234,0x4321};

ints;

main()

{

s=sum(x);

}

4、编辑如下汇编文件,取名exp3a_sum.asm并保存到c:

\ti\myprojects\exp3a\目录。

*****************************

*exp3a_sum.asmSUMsubroutine

*calledbyexp3a.c

*Input:

Arraypointer

*Output:

ReturnsumresultinT0

.global_sum

_sum

MOV*AR0+,AC0;

AC0=x[1]

ADD*AR0+,AC0;

AC0=x[1]+x[2]

MOVAC0,T0

RET;

ReturnT0

.end

5、编辑如下链接命令文件,取名link.cmd并保存到c:

MEMORY

{

DARAM:

o=0x100,l=0x7f00

VECT:

o=0x8000,l=0x100

DARAM2:

o=0x8100,l=0x7f00

SARAM:

o=0x10000,l=0x30000

SDRAM:

o=0x40000,l=0x3e0000

}

SECTIONS

.text:

{}>

DARAM

.vectors:

VECT

.trcinit:

.gblinit:

frt:

.cinit:

.pinit:

.sysinit:

.bss:

DARAM2

.far:

.const:

.switch:

.sysmem:

.cio:

.MEM$obj:

.sysheap:

.sysstack:

.stack:

}

6、选择Project-Options-Linker-Library标签,添加实时支持库rts55.lib。

7、编译并链接工程,下载exp3a.out,并选择Go-Main命令。

8、观察并记录CPU寄存器窗口中AC0、AR0、T0的值,观察memory中s和x的内容,并记录s的值。

9、重新单步执行C代码和汇编代码,观察C编译器产生的汇编代码exp3a.asm,注意汇编程序的返回值是如何被传递到C调用程序的。

四、实验报告要求

1、记录实验内容中要求的观察结果;

2、简述C和汇编混合编程中的参数是如何传递的;

3、若将exp3a中的s定义放入main()函数中,应到哪个位置观看其内容?

为什么?

4、对本次实验作出小结。

五、思考题

使用混合编程法完成计算

六、注意事项

1、汇编程序在被C语言程序调用时的文件命名要求。

2、混合编程的接口考虑。

实验三FIR滤波器设计

1、熟悉FIR滤波器工作原理及其编程。

2、熟悉线性相位FIR数字滤波器特性。

1、有限冲击响应数字滤波器的基础理论(请参考相关书籍)。

2、模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。

3、数字滤波器系数的确定方法。

4、根据要求设计低通FIR滤波器。

要求:

通带边缘频率10kHz,阻带边缘频率22kHz,阻带衰减75dB,采样频率50kHz。

设计:

(1)过渡带宽度=阻带边缘频率-通带边缘频率=22-10=12kHz

(2)采样频率:

f1=通带边缘频率+(过渡带宽度)/2=10000+12000/2=16kHz

Ω1=2πf1/fs=0.64π

(3)理想低通滤波器脉冲响应:

h1[n]=sin(nΩ1)/n/π=sin(0.64πn)/n/π

(4)根据要求,选择布莱克曼窗,窗函数长度为:

N=5.98fs/过渡带宽度=5.98*50/12=24.9

(5)选择N=25,窗函数为:

w[n]=0.42+0.5cos(2πn/24)+0.8cos(4πn/24)

(6)滤波器脉冲响应为:

h[n]=h1[n]w[n]|n|≤12

h[n]=0|n|>12

(7)根据上面计算,各式计算出h[n],然后将脉冲响应值移位为因果序列。

(8)完成的滤波器的差分方程为:

y[n]=-0.001x[n-2]-0.002x[n-3]-0.002x[n-4]+0.01x[n-5]-0.009x[n-6]-0.018x[n-7]-0.049x[n-8]-0.02x[n-9]+0.11x[n-10]+0.28x[n-11]+0.64x[n-12]+0.28x[n-13]-0.11x[n-14]-0.02x[n-15]+0.049x[n-16]-0.018x[n-17]-0.009x[n-18]+0.01x[n-19]-0.002x[n-20]-0.002x[n-21]+0.001x[n-22]

5、程序流程图:

参数选取:

实验程序采用64阶滤波参数,低通滤波,汉明窗(HammingWindow)函数,截止频率为2400Hz,采样频率为48000Hz,增益40dB。

四、实验步骤

1、实验准备:

-设置软件仿真模式,

-启动CCS,选择菜单Debug→ResetCPU。

2、打开工程,c:

\ti\myprojects\FIR55\Fir.pjt。

3、编译并下载程序。

4、设置断点:

在有注释“breakpoint”的语句设置软件断点。

5、打开观察窗口,观察滤波效果显示:

*选择菜单View->

Graph->

Time/Frequency…,进行如下设置:

(1)选择“Debug”菜单的“Animate”项,或按F12键运行程序。

(2)观察窗口中各波形的时域波形。

(3)将各观察窗口参数中“DisplayType”项分别改成“FFTMagnitude”。

(4)观察窗口中各波形的频域波形。

(5)理解滤波效果。

6、退出CCS:

1、报告中的内容阐述不得和上述内容雷同;

2、画出FIR滤波算法的流程图;

3、给出滤波算法的主观效果评价。

1、自己编写FIR滤波算法如何?

2、dsplib中的FIR用到了哪些优化技术?

3、FIR滤波效果明显吗?

还有没有效果更好的算法?

请举例。

实验四定时器使用实验

1、通过实验掌握和熟悉VC5509A的定时器的工作原理;

2、掌握VC5509A定时器的控制方法、寄存器的配置;

3、掌握VC5509A的中断结构和对中断的处理流程;

4、学会C语言中断程序设计,以及运用中断程序控制程序流程;

5、掌握实验箱的工作配置过程、仿真器的连接和配置等。

计算机;

DSP硬件仿真器;

CS-DSP5509A实验开发系统。

在做实验之前,需要接通该实验所需的硬件电路,先连接仿真器,再给核心板供电,

然后打开实验箱的电源开关,实验中不要再按复位键,以免实验由于DSP复位而失败。

1、通用定时器介绍及其控制方法(详见spru595b.pdf):

TMS320VC5509A内部有两个20位通用定时器(GP),每个通用定时器包括:

(1)一个16位的减计数的计数器TIM;

(2)一个16位的定时器周期寄存器PRD;

(3)一个16位的定时器控制寄存器TCR;

(4)一个16位的定时器预定标寄存器PRSC;

PRSC寄存器说明:

PSC:

4位的预定标值,与TIM共同组成20位的定时计数器.

TDDR:

预定标周期寄存器(在需要时重装入PSC的值)

TCR寄存器说明(详见spru595b.pdf)

2、中断响应过程(详见spru595b.pdf):

外设事件要引起CPU中断,必须保证:

IER中相应使能位被使能,IFR相应中断也被

使能。

在软件中,当设置好相应中断标志后,开中断,进入等待中断发生的状态;

外设(如定时器)中断发生时,首先跳转到相应中断高级的服务程序中(如:

定时器1会引起TINT中断),程序在进行服务操作之后,应将本外设的中断标志位清除以便能继续中断,然后返回。

3、中断

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1