DSP实验指导书.docx

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

DSP实验指导书.docx

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

DSP实验指导书.docx

DSP实验指导书

 

目录

实验一DSP系统软硬件熟悉

实验二数据存储、汇编程序实验

实验三I/O、定时器实验

 

实验一DSP系统软硬件熟悉

一、实验目的

1、了解DSP开发系统的组成和结构;

2、熟悉DSP开发系统的连接;

3、熟悉CCS的开发界面;

二、实验设备

计算机,CCS2.0版软件,DSP仿真器,实验箱。

三、实验步骤与内容、

项目一:

熟悉系统硬件安装与实验运行

1、系统连接

进行DSP实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示:

 

2、上电复位

在硬件安装完成后,确认安装正确、各实验部件及电源连接正常后,接通仿真器电源,启动计算机,此时,仿真器上的“红色小灯”应点亮,否则DSP开发系统有问题。

3、运行CCS程序

待计算机启动成功后,实验箱后面220V输入电源开关置“ON”,实验箱上电,启动CCS,此时仿真器上的“绿色小灯”应点亮,并且CCS正常启动,表明系统连接正常;否则仿真器的连接、JTAG接口或CCS相关设置存在问题,掉电,检查仿真器的连接、JTAG接口连接,或检查CCS相关设置是否正确。

注:

如在此出现问题,可能是系统没有正常复位或连接错误,应重新检查系统硬件并复

位;也可能是软件安装或设置有问题,应尝试调整软件系统设置,具体仿真器和仿真

软件CCS的应用方法参见课本第四章。

●成功运行程序后,首先应熟悉CCS的用户界面

●学会CCS环境下程序编写、调试、编译、装载,学习如何使用观察窗口等。

4、修改样例程序,尝试DSP其他的指令。

注:

实验系统连接及CCS相关设置是以后所有实验的基础,在以下实验中这部分内容将不再复述。

5、填写实验报告。

6、样例程序实验操作说明

仿真口选择开关K9拨到右侧,即仿真器选择连接右边的CPU:

CPU2;

启动CCS2.0,在ProjectOpen菜单打开exp01_cpu2目录下面的工程文件“exp01.pjt”

注意:

实验程序所在的目录不能包含中文,目录不能过深,如果想重新编译程序,去掉所有文件的只读属性。

用下拉菜单中Project/Open,打开“exp01.pjt”,双击“Source”,可查看源程序

在FileLoadProgram菜单下加载exp01_cpu2\debug目录下的exp01.out文件:

 

 

加载完毕,单击“Run”运行程序;

实验结果:

可见指示灯D1定频率闪烁;单击“Halt”暂停程序运行,则指示灯停止闪烁,如再单击“Run”,则指示灯D1又开始闪烁;

注:

指示灯D1在CPLD单元的右上方

关闭所有窗口,本实验完毕。

 

项目二:

熟悉CCS软件开发工具

本项目将学习开发一个具备基本信号处理功能的DSP程序的过程。

掌握如何创建一个工程、向工程中添加源文件、浏览代码、编译和运行程序、修改Build选项并更正语法错误、使用断点和Watch窗口等基本应用以及使用探针和图形显示的方法。

Ø基本应用

1.创建一个工程

(1)选择“Project

New(工程

新建)”,弹出工程建立对话框。

(2)在Project栏输入文件名Volume。

默认的工作目录是C:

\ti\myprojects\(假设CCS安装在C:

\ti下),其他两项也选默认即可。

(3)单击“完成”按钮,将在工程窗口的Project下面创建Volume工程。

2.向工程中添加源文件

(1)将“C:

\ti\tutorial\sim54xx\Volume1”(假设CCS安装在C:

\ti下)下全部文件复制到新建的“C:

\ti\myprojects\Volume”目录下。

(2)选择“Project

AddFilestoProject(工程

加载文件)”,在文件加载对话框中选择Volume.c文件,点击打开按钮将Volume.c添加到工程中,如图所示。

(3)用同样方法将Vector.asm添加到工程中。

Vector.asm中包含的是将RESET中断指向C程序入口c_int00的汇编指令和其他中断的入口指令。

如果调试的程序更为复杂,则可在Vector.asm中定义更多的中断矢量。

(4)将Volume.cmd添加到工程文件中。

该文件的作用是将段(Sections)分配到存储器中。

(5)将load.asm添加到工程文件。

该文件包含一个简单的汇编循环程序,被C程序调用。

调用时带有一个参数(argument),执行此程序共需约1000×argument个指令周期。

(6)将“C:

\ti\c5400\cgtools\lib”下的rts.lib加入到工程文件中。

该文件是采用C语言开发DSP应用程序的运行支持库函数。

在工程中双击所有“+”,即可看到整个工程的文件。

在以上的操作中,没有将头文件加到工程中,CCS将在Bulid时自动查找所需的头文件。

3.浏览代码

双击Project视图中的Volume.c,将在代码窗口看到源文件代码。

#include

#include"volume.h"

/*Globaldeclarations*/

intinp_buffer[BUFSIZE];/*processingdatabuffers*/

intout_buffer[BUFSIZE];

intgain=MINGAIN;/*volumecontrolvariable*/

unsignedintprocessingLoad=BASELOAD;/*processingroutineloadvalue*/

structPARMSstr=

{

2934,

9432,

213,

9432,

&str

};

/*Functions*/

externvoidload(unsignedintloadValue);

staticintprocessing(int*input,int*output);

staticvoiddataIO(void);

/*

*========main========

*/

voidmain()

{

int*input=&inp_buffer[0];

int*output=&out_buffer[0];

puts("volumeexamplestarted\n");

/*loopforever*/

while(TRUE)

{

/*

*Readinputdatausingaprobe-pointconnectedtoahostfile.

*Writeoutputdatatoagraphconnectedthroughaprobe-point.

*/

dataIO();

#ifdefFILEIO

puts("beginprocessing")/*deliberatesyntaxerror*/

#endif

/*applygain*/

processing(input,output);

}

}

/*

*========processing========

*

*FUNCTION:

applysignalprocessingtransformtoinputsignal.

*

*PARAMETERS:

addressofinputandoutputbuffers.

*

*RETURNVALUE:

TRUE.

*/

staticintprocessing(int*input,int*output)

{

intsize=BUFSIZE;

while(size--){

*output++=*input++*gain;

}

/*additionalprocessingload*/

load(processingLoad);

return(TRUE);

}

/*

*========dataIO========

*

*FUNCTION:

readinputsignalandwriteprocessedoutputsignal.

*

*PARAMETERS:

none.

*

*RETURNVALUE:

none.

*/

staticvoiddataIO()

{

/*dodataI/O*/

return;

}

从以上代码可以看出:

(1)主程序显示一条提示信息后,进入一个无限循环,不断调用dataIO和processing两个函数。

(2)processing函数将输入buffer中的数与增益相乘,并将结果送给输出buffer,它还调用汇编load例程的参数processingLoad的值计算指令周期的时间。

(3)dataIO函数不执行任何实质操作。

它没有使用C代码执行I/O操作,而是通过CCS中的ProbePoint工具,从PC机文件中读取数据到inp_buffer中,作为processing函数的输入参数。

4.编译和运行程序

(1)选择“Project

RebuildAll(工程

重新编译)”,对工程进行重新编译。

(2)选择“File

LoadProgram(文件

下载程序)”,选volume.out并打开,将Build生成的程序加载到DSP。

(3)选择“View®MixedSource/ASM(查看®混合C程序/汇编)”。

该设置使得C程序与其汇编结果同时显示。

(4)在反汇编窗口中单击汇编指令,按F1键切换到在线帮助窗口,显示光标所在行的关键词的帮助信息。

(5)选择“Debug®GoMain(调试®到主程序首)来使得程序从主程序开始执行。

(6)选择“Debug

Run(调试

运行)”,可以在Output窗口看到“beginprocessing”信息。

(7)选择“Debug®Halt(调试®停止),中止正在执行的程序。

5.修改Build选项并更正语法错误

在以上的程序中由于FILEIO没有定义,因而在编译时将忽略程序中的部分代码,这样在链接生成的DSP程序中也不包括这部分代码。

下面通过更改程序选项来定义FILEIO,从而将这部分代码生成到执行程序中

(1)选择“Project®BuildOptions(工程®编译选项)”。

(2)在Compiler栏的Categroy域,单击Preprocessor。

在右侧的DefineSymbols中键入FILEIO。

这时将在编译参数栏中看到-dFILEIO,如图所示。

在定义FILEIO后,C编译器将对所有的源代码进行编译。

(3)单击确定按钮保存选项设置结果。

(4)选择“Project®RebuildAll(工程®重新编译)”。

在工程选项更改后,重新编译程序是必须的。

在BuildOptions下定义FILEIO

(5)此时output窗口提示源代码中存在语法错误,错误出现在第68行,如图所示。

在该行后加分号后存盘,再重新编译程序并生成新的volume.out文件。

6.使用断点和Watch窗口

(1)选择“File

ReloadProgram(文件

重新下载程序)”,重新下载程序。

(2)在工程视图中双击volume.c,打开源文件编辑窗口。

(3)将光标放在“dataIO();”行。

(4)右击鼠标,在弹出菜单上选择Togglebreakpoint,设置断点。

(5)选择“View®WatchWindow(查看®观察窗口)”,将出现Watch窗口。

程序运行时WatchWindow窗口将显示要查看的变量值。

(6)选择Watch1栏。

(7)在Watch1窗口单击

图标,在name栏输入dataIO。

(8)选择“Debug®GoMain(调试®到主程序首)”。

(9)选择“Debug®Run(调试®运行)”,运行程序,如图所示。

显示出dataIO是一个函数,该函数存放的首地址是0x00001457。

7.使用Watch窗口观察结构体

仿照上面的方法,在Watch窗口中加入str结构体变量。

可以看到在str左边有一个“+”标志,表明str是一个结构体。

双击“+”后将看到str结构体中包含的元素,如图所示,双击每个元素可以更改其数值大小。

在Watch窗口中单击右键,在弹出菜单时还可选择:

移去一个表达式、隐藏Watch窗口等。

可以通过选择“Debug®Breakpoints(调试®断点)”,在该窗口中单击DeleteAll按钮将所有断点去掉。

Ø探针和显示图形的使用

学习创建和测试一个简单数字信号算法的过程,所需处理的数据放在PC机文件中。

学习使用探针和图形显示的方法

ProbePoint是开发算法的一个有用工具,可以使用ProbePoint从PC机文件中存取数据。

即:

●将PC机文件中数据传送到目标板上的buffer,供算法使用。

●将目标板上buffer中的输出数据传送到PC机文件中以供分析。

●更新一个窗口,如由数据绘出的Graph窗口。

ProbePoint与Breakpoints都会中断程序的运行,但ProbePoint与Breakpoints在以下方面不同。

ProbePoint只是暂时中断程序运行,当程序运行到ProbePoint时会更新与之相连接的窗口,然后自动继续运行程序;Breakpoints中断程序运行后,将更新所有打开的窗口,且只能用人工的方法恢复程序运行;ProbePoint可与FILEIO配合,在目标板与PC文件之间传送数据,Breakpoints则无此功能。

下面讲述如何使用ProbePoint将PC机上文件中的内容作为测试数据传送到目标板。

同时使用一个断点以便在到达ProbePoint时自动更新所有打开的窗口。

1.为FILEI/O添加ProbePoint

(1)打开上小节已经完成的程序,并进行编译。

(2)选择“File®LoadProgram(文件®下载程序)”。

选择volume1.out文件,并点击“打开”。

(3)双击volume.c,以便在右边的编辑窗口显示源代码。

(4)将光标放在主函数的dataIO()行上。

(5)单击右键,在弹出菜单中选择“ToggleProbePoint”,添加ProbePoint。

(6)在file(文件)菜单,选择“FileI/O”,出现FileI/O对话框,如图所示,在对话框中选择输入/输出文件

(7)在“FileInput”栏,单击“AddFile”

(8)在volume.c文件所在目录选择sina.dat,并单击打开。

此时将出现一个控制窗口,如图所示。

可以在运行程序时使用这个窗口来控制数据文件的开始、停止、前进、后退等操作。

(9)在FileI/O对话框中,在Address域填入inp_buffer,在length域填入100,同时将WrapAround框选中。

这几部分值含义如下:

9

●Address域指示的是从文件中读取的数据将要存放的地址。

inp_buffer是在volume.c中定义的整型数组,其长度为BUFFSIZE。

●Length域指示的是每次到达ProbePoint时从数据文件中读取多少个样点。

这里取值为100是因为BUFFSIZE=100,即每次取100个样值放在输入缓冲中。

如果Length超过100则可能导致数据丢失。

●选中WrapAround表明读取数据的循环特性,每次读至文件结尾处将自动从文件头开始重新读取数据。

这样将从数据文件中读取一个连续(周期性)的数据流。

(10)单击“AddProbePoint”,将出现“Break/ProbePoints”,如图所示,选中“ProbePoints”栏。

(11)在ProbePoint列表中显示有“VOLUME.Cline61-->NoConnection”行。

表明该第61行已经设置ProbePoint,但还没有和PC文件关联。

(12)在Connect域,单击向下箭头并从列表中选sine.dat。

(13)单击Replace按钮,ProbePoint列表框表示ProbePoint已与sine.dat文件相关联。

(14)单击确定按钮,FileI/O对话框指示文件连至一个ProbePoint。

(15)单击确定按钮,关闭FileI/O对话框。

2.显示图形

如果现在运行程序,将看不到任何程序运行结果。

当然可以设置Watch窗口观察inp_buffer和out_buffer等的值,但需要观察的变量很多,而且显示的也只是枯燥的数据,远不如图形显示直观、友好。

CCS提供很多方法将程序产生的数据图形显示,包括时域/频域波形显示,星座图、眼图等。

在本例中使用时域/频域波形显示功能观察一个时域波形。

(1)选择“ViewGraphTime/Frequency(显示图形时域/频域)”。

弹出GraphProperty对话框,如图所示。

(2)在GraphProperty对话框中,更改GraphTitle(图形标题)、StartAddress(起始地址)、AcquisitionBufferSize(采集缓冲区大小)、DSPDataType(DSP数据类型)、Autoscale(自动伸缩属性)及MaximumY-alue(最大Y值)。

(3)单击OK按钮,将出现一个显示inp_buffer波形的图形窗口。

(4)在图形窗口中单击右键,从弹出菜单中选择ClearDisplay,清除已显示波形。

(5)再次执行“ViewGraphTime/Frequency”。

(6)将GraphTitle修改为outputbuffer,StartAddress修改为out_buffer,其他设置不变。

(7)单击OK按钮,出现一个显示out_buffer波形的图形窗口,同样单击右键从菜单中选ClearDisplay,清除已有显示波形。

3.动态显示程序和图形

到现在为止,我们已经设置了一个ProbePoint。

它将临时中断程序运行,将PC机上数据传给目标板,然后继续运行程序。

但是,ProbePoint不会更新图形显示内容。

本节将设置一个断点,使图形窗口自动更新。

使用Animate命令,使程序到达断点时更新窗口后自动继续运行。

(1)在volume.c窗口,将光标放在dataIO行上。

(2)在该行上同时设置一个断点和一个ProbePoint,这使得程序在只中断一次的情况下执行两个操作:

传送数据和更新图形显示。

(3)重新组织窗口以便能同时看到两个图形窗口。

(4)在Debug菜单单击Animate。

此命令将运行程序,碰到断点后临时中断程序运行,更新窗口显示,然后继续执行程序。

与Run不同的是,Animate会继续执行程序直到碰到下一个断点。

只有人为干预时,程序才会真正中止运行。

可以将Animate命令理解为一个“运行中断继续”的操作。

(5)每次碰到ProbePoint时,CCS将从sine.dat文件读取100个样值,并将其写至输入缓冲inp_buffer。

由于sine.dat文件保存的是40个采样值的正弦波形数据,因此每个波形包括2.5个sine周期波形,如图所示。

(6)选择“DebugHalt(调试停止)”,停止程序运行。

Gain=1时的输入/输出图形显示

4.增益调节

本程序将输入缓冲的数据与增益相乘后送至输出缓冲中:

output++=input++*gain

增益被初始化为MINGAIN,在volume.h中定义为1。

为改变输出值,需改变增益,方法之一是使用Watch功能。

(1)选择“ViewWatchWindow(查看观察窗口)”。

(2)在Watch窗口单击右键,选择“InsertNewExpression”。

(3)键入Gain作为要观察的表达式,单击OK按钮。

(4)如程序已中止运行,单击Animate按钮重新运行程序。

(5)在Watch窗口双击Gain。

(6)在变量编辑窗口将Gain值改为10,单击OK按钮。

(7)注意到输出缓冲图中的幅度值已经变为原来的10倍,如图所示。

Gain=10时的输入/输出图形显示

 

实验二数据存储、汇编程序实验

一、实验目的

1、掌握TMS320C54的程序空间的分配;

2、掌握TMS320C54的数据空间的分配;

3、熟悉操作TMS320C54数据空间的指令;

4、熟悉汇编语言常用指令

二、实验设备

计算机,CCS2.0版软件,DSP仿真器,实验箱。

三、实验系统相关资源

下面给出TMS32OVC5402的存储器分配表:

对于数据存储空间而言,映射表相对固定。

值得注意的是内部寄存器都映射到数据存储空间内。

因此在编程应用是这些特定的空间不能作其他用途。

对于程序存储空间而言,其映射表和CPU的工作模式有关。

当MP/MC引脚为高电平时,CPU工作在微处理器模式;当MP/MC引脚低电平时,CPU工作在微计算机模式。

具体的存储器映射关系如上如所示。

存储器试验主要帮助用户了解存储器的操作和DSP的内部双总线结构。

并熟悉相关的指令代码和操作等。

四、实验步骤与内容

连接好DSP开发系统,开关K9拨到右边,即仿真器选择连接右边的CPU:

CPU2;

1、运行CCS软件;

2、在CCS的Memory窗口中查找C5402各个区段的数据存储器地址,在可以改变的数据地址随意改变其中内容;

3、在CCS中装载实验示范程序,单步执行程序,观察程序中写入和读出的数据存储单元内容的变化;

4、联系其他寻址方式的使用。

5、样例程序实验操作说明

启动CCS2.0,在ProjectOpen菜单打开exp02_cpu2目录下面的工程文件“exp02.pjt”。

用下拉菜单中Project-->Open,打开“exp02_CPU2\exp02.pjt”,双击“Source”,可查看源程序。

在FileLoadProgram菜单下加载exp02_cpu2\debug目录下的exp02.out文件。

用“View”下拉菜单中的“Memory”查看内存单元;

输入要查看的内存单元地址,本实验要查看0x1000H~0x100FH单元的数值变化,输入地址0x1000H;

查看0x1000H~0x100FH单元的初始值,单击“Run”运行程序,也可以“单步”运行程序;

单击“Halt”暂停程序运行;

查看0x1000H~0x100FH单元内数值的变化;

 

关闭各窗口,本实验完毕。

本实验说明:

本实验程序将对0x1000开始的8个地址空间,填写入0x55AA的数值,然后读出,

并存储到0X1008开始的8个地址空间。

在CCS中可以观察DATA存储器空间地址

 

实验三I/O、定时器实验

一、实验目的

1、了解I/O口的扩展;掌握I/O口的操作方法;

2、熟悉在C语言中访问IO口的方法

3、熟悉C54的定时器;

4、掌握C54定时器的控制方法;

二、实验设备

计算机,CCS2.

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

当前位置:首页 > 高等教育 > 工学

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

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