CCS程序设计和DSP硬件实验Word文档下载推荐.docx

上传人:b****6 文档编号:17215776 上传时间:2022-11-29 格式:DOCX 页数:26 大小:780.91KB
下载 相关 举报
CCS程序设计和DSP硬件实验Word文档下载推荐.docx_第1页
第1页 / 共26页
CCS程序设计和DSP硬件实验Word文档下载推荐.docx_第2页
第2页 / 共26页
CCS程序设计和DSP硬件实验Word文档下载推荐.docx_第3页
第3页 / 共26页
CCS程序设计和DSP硬件实验Word文档下载推荐.docx_第4页
第4页 / 共26页
CCS程序设计和DSP硬件实验Word文档下载推荐.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

CCS程序设计和DSP硬件实验Word文档下载推荐.docx

《CCS程序设计和DSP硬件实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《CCS程序设计和DSP硬件实验Word文档下载推荐.docx(26页珍藏版)》请在冰豆网上搜索。

CCS程序设计和DSP硬件实验Word文档下载推荐.docx

myasm。

创建工程

4.设置工程编译选项

选择CCS菜单project->

BuildOptions,点击Linker页,设置AutoinitModel为:

NoAutoinitialization(这点是与C语言程序设计不同)

注意:

若省略这一步,也不影响程序建立,只不过会出现警告:

warning:

entrypointsymbol_c_int00undefined

5.输入源程序

1)输入汇编源程序

选择File->

New->

SourceFile或使用工具条的快捷按钮,进入文件编辑窗口。

录入汇编源程序:

;

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

输入数据存放在:

x,y

本例程完成运算:

x+y

结果存放:

z

其中:

x,y,z都占32位

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

.bssx,4;

排版要空一格,下同

.bssy,4

.bssz,4

.defstart

.defx,y,z

.text

start:

排版要顶格

mvklx,A0;

立即寻址,将变量x的值放到寄存器A0

mvkhx,A0;

mvkly,B0;

立即寻址,将变量y的值放到寄存器B0

mvkhy,B0;

立即寻址,将变量y的值放到寄存器B0

mvklz,B2;

立即寻址,将变量z的值放到寄存器B2

mvkhz,B2;

mvkl0x010a0f2a,A4;

给A4低16位赋值

mvkh0x010a0f2a,A4;

给A4高16位赋值

mvkl0x1ab31211,B4;

给B4低16位赋值

mvkh0x1ab31211,B4;

给B4高16位赋值

stwA4,*A0;

A4存入A0所指地址单元

nop5

stwB4,*B0;

B4存入B0所指地址单元

nop5

ldw*A0,B1;

将A0寻址单元的值读入B1

nop5;

避免流水线冲突

ldw*B0,A1;

将B0寻址单元的值读入A1

addA1,B1,A2;

加法运算:

A1+B1-->

A2

stwA2,*B2;

将A2的值存入B2所指地址单元

b$;

一直在这里跳转,注意:

b后有一个空格

汇编语句前需要留出空格,标号顶格输入,否则编译有错误提示。

保存源程序到工程目录下,保存文件为:

myasm.asm

2)输入链接命令文件

点击“File/New/SourceFile”或使用工具条的快捷按钮,进入文件编辑窗口。

输入链接命令文件内容:

-stack400

-heap400

MEMORY

{

ISRAM:

origin=0x0,len=0x1000000

}

SECTIONS

.vectors>

ISRAM

.text>

.bss>

.cinit>

.const>

.far>

.stack>

.cio>

.sysmem>

保存源程序到工程目录下,命名为myasm.cmd。

6.将上述编辑的源程序myasm.asm和链接命令文件myasm.cmd加入工程myasm.pjt。

7.编译源文件、建立目标文件(.out)

点击菜单project->

compilefile,可以对文件进行编译

再点击菜单Project->

Build,建立目标文件

成功建立的文件应该是错误和警告都为0.

8.调用目标文件(调用编程可执行程序)

1)连接仿真器与目标板

点击:

Debug->

connect,

连接成功后,CCS左下角有提示。

Connect连接之后,选择File->

LoadProgram,选择\myasm\debug\myasm.out,点击Debug->

Restart后PC此时指向0000000000000000地址。

9.调试

1)gotomain

2)设置断点

在需要设置断点的行前双击鼠标,则在行前出现红色的原点,表示设置了断点;

若在已经设置了断点的行前双击鼠标,则可以取消该断点。

3)单步运行

用菜单debug->

StepInto或F11可以单步运行。

10.观察

开启CPU寄存器观察窗口:

单击菜单ViewžRegistersžcore。

使用单步运行,查看相应寄存器的值的变化。

还可开启Watchwindow,Memory窗口,进行变量、存储空间的观察。

点击view->

watchwindow,则打开观察窗口

11.退出CCS

三.C语言DSP程序设计实验

1.标准C语言程序

CCS支持使用标准C语言开发DSP应用程序。

C源程序文件名的后缀应为.c。

CCS在编译标准C语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP的可执行代码。

最后生成的是COFF格式的可下载到DSP中运行的文件,其文件名后缀为.out。

由于使用C语言编制程序,其中调用的标准C的库函数由专门的库提供,在编译链接时编译系统还负责构建C运行环境。

所以用户工程中需要注明使用C的支持库。

2.命令文件的作用

命令文件(文件名后缀为cmd)为链接程序提供程序和数据在具体DSP硬件中的位置分配信息。

通过编制命令文件,我们可以将某些特定的数据或程序按照我们的意图放置在DSP所管理的内存中。

命令文件也为链接程序提供了DSP外扩存储器的描述。

在程序中使用CMD文件描述硬件存储区,可以只说明使用部分,但只要是说明的,必须和硬件匹配,也就是只要说明的存储区必须是存在的和可用的。

3.内存映射(map)文件的作用

为了更精确地使用ROM空间,我们就需要知道程序的大小和位置,通过建立目标程序的map文件可以了解DSP代码的确切信息。

当需要更改程序和数据的大小和位置时,就要适当修改cmd文件和源程序,再重新生成map文件来观察结果。

另外,通过观察map

文件,可以掌握DSP存储器的使用和利用情况,以便进行存储器方面的优化工作。

1.准备

将DSP实验设备与硬件仿真器相连接,连接电源线,打开电源开关。

2.设置CCS在硬件仿真(Emulator)方式下运行,选择实际的仿真器。

3.启动CCS环境

4.创建工程。

选择菜单Project->

New,创建ctest.pjt工程

5.建立源文件

1)建立C语言源程序文件。

选择FILE->

Source,输入下列C代码,保存到文件ctest.c。

intsel_max(inta,intb);

voidmain()

intx;

inty;

intz;

x=21;

y=98;

while

(1)

{

z=sel_max(x,y);

//函数调用

}

intsel_max(inta,intb)

return((a>

=b)?

a:

b);

2)建立链接命令文件

点击“File/New/SourceFile”或使用工具条的快捷按钮,打开编辑窗,建立ctest.cmd文件,内容如下:

6.工程添加文件

点击菜单Project->

AddFilestoproject,分别加入ctest.c,ctest.cmd文件,再向工程添加C:

\CCStudio_v3.3\C6000\cgtools\lib下的文件rts6400.lib(这点与汇编程序设计不同)(注意:

若不添加,则链接时会出现警告:

entrypointsymbol_c_int00undefined)

7.编译、建立目标文件

产生ctest.out

8.调用编程可执行程序

1)连接仿真器与目标板

2)选择File->

LoadProgram,选择\ctest\debug\ctest.out。

1)执行至C语言主程序入口

点击Debug->

gomain。

用菜单debug->

4)全速运行

Run或F5可以全速运行。

还可开启Watchwindow,Memory窗口,进行变量、存储空间的观察

11.关闭工程

点击Project->

Close。

12.退出CCS

四、GPIO实验

(一)实验原理和方法

GPIO作为通用输入/输出接口,有着广泛的应用。

简单配置后,即可用来控制和

接口各种外设。

对于和别的管脚复用的GPIO,首先需要使能GPIO功能,然后配置成输入或输出

方向后,才能对其控制。

DM642DSP的McASP寄存器的AHCLKX引脚驱动DS6灯,PFUNC、PDIR、

PDOT如下表所示:

本实验中,使用了AHCLKX,对其置1或置0可以点亮或熄灭DS6灯。

其连接电路如下图所示:

(二)实验内容与步骤

1.运行CCSSetup,选择设置实际的实验室硬件仿真器,即platform选“TDS510USBPLUSEmulator”,Family选“C64xx”,availablefactoryboars选“C64xxRev1.1TDS510USBplusemulator-WintechDigital”

3.新建gpio文件夹,路径为:

C:

\CCStudio_v3.3\MyProjects\gpio,创建工程

建立工程gpio.pjt

4.准备

1)设置

Project-->

BuildOptions-->

Preprocessor,在includesearchpath中加入:

\CCStudio_v3.3\MyProjects\gpio\gpio,在Pre-defineSymbols中加入:

_DEBUG;

CHIP_DM642。

如图:

2)复制库文件

复制C:

\TS-DM64X\TS-DM64xexperimentccs3.3\TS-DM64x_examples\lib下的文件evmdm642bsl.lib到当前工程gpio目录下,并添加到工程中。

或者直接在工程的lib上点击添加C:

\TS-DM64X\TS-DM64xexperimentccs3.3\TS-DM64x_examples\lib下的库文件evmdm642bsl.lib到工程中。

5.输入程序

1)输入源程序gpio.c,选择File->

录入源程序:

#include<

std.h>

gio.h>

#include<

csl.h>

evmdm642.h>

#defineGPEN*(volatileunsignedint*)0x01b4c010//MCASPPFUNCRegister

#defineGPDIR*(volatileunsignedint*)0x01b4c014//MCASPPDIRRegister

#defineGPVAL*(volatileunsignedint*)0x01b4c018//MCASPPDOUTRegister

/**mcaspahclkx----->

DS6**/

main()

unsignedinti;

EVMDM642_init();

/*----------初始化GPIO-------*/

GPEN=0x8000000;

//使能

GPDIR=0x8000000;

//设置输出

/*---------置MCASPPDOUTRegiste为0或1-----*/

GPVAL=0x00000;

//设置GP0的值0,能够将DS6熄灭

for(i=0;

i<

0xfffff;

i++){};

GPVAL=0x8000000;

//点亮

for(i=0;

0xffffff;

//延时

GPVAL=0x00000;

//熄灭

};

SourceFile,新建包含文件evmdm642.h,其内容如下:

#ifndefEVMDM642_

#defineEVMDM642_

#ifdef__cplusplus

extern"

C"

#endif

csl_i2c.h>

csl_gpio.h>

/*

*Note:

Bitdefinitionsforeachregisterfield

*needstobesuppliedherefortheCPLD

*andotherboardperiperals.

*/

/*Compatabilitydefinitions*/

#defineNULL0

/*CPLDaddressdefinitions*/

#defineEVMDM642_CPLD_BASE0x90080000

#defineEVMDM642_SYNC_BASE0xb0000000

#defineEVMDM642_FPGAFLASH_BASE0x90040000

#defineEVMDM642_FPGASDRAM_BASE0x80000000

/*CPLDRegisterIndices*/

/*#defineEVMDM642_OSDCTRL0x10

#defineEVMDM642_THRESHLSB0x11

#defineEVMDM642_THRESHMSB0x12

#defineEVMDM642_ISR0x13

#defineEVMDM642_IER0x14

#defineEVMDM642_GPIODIR0x15

#defineEVMDM642_GPIOSTAT0x16

#defineEVMDM642_LED0x17

#defineEVMDM642_FLASHPAGE0x18

#defineEVMDM642_REVISION0x1F*/

#defineEVMDM642_LED10x28//DS1~3addresswhenusingEPLD

#defineEVMDM642_LED40x38//DS4addresswhenusingEPLD

/*FPGAdefinitions*/

#defineEVMDM642_FPGALEN0x393d8

/*I2Chandle*/

externI2C_HandleEVMDM642_I2C_hI2C;

/*GPIOhandle*/

externGPIO_HandleEVMDM642_GPIO_hGPIO;

/*InitializeallboardAPIs*/

voidEVMDM642_init();

/*Readan8-bitvaluefromaCPLDregister*/

Uint8EVMDM642_rget(Int16regnum);

/*Writean8-bitvaluetoaCPLDregister*/

voidEVMDM642_rset(Int16regnum,Uint8regval);

/*Spininadelayloopfordelayiterations*/

voidEVMDM642_wait(Uint32delay);

/*Spininadelayloopfordelaymicroseconds*/

voidEVMDM642_waitusec(Uint32delay);

/*SendaconfigurationfiletotheFPGA*/

voidEVMDM642_loadFpga(Uint32fpgaaddr);

/*Initializekeyboard*/

intkeyboard_init(void);

保存到工程gpio.prt所在文件夹下,名为evmdm642.h。

3)输入链接命令文件

*Copyright2001byTexasInstrumentsIncorporated.

*Allrightsreserved.PropertyofTexasInstrumentsIncorporated.

*Restrictedrightstouse,duplicateordisclosethiscodeare

*grantedthroughcontract.

/*-l..\lib\rts6400.lib*/

-lcslDM642.lib

-lrts6400.lib

-stack0x400

-heap0x400

保存源程序到工程目录下,命名为gpio.cmd。

6.向工程添加文件

将源程序gpio.C,链接命令文件gpio.cmd,evmdm642.h加入工程gpio.pjt。

7.编译源文件、建立目标文件(.out),连接connect

产生gpio.out

8.调用编程可执行程序

LoadProgram,选择\gpio\debug\gpio.out。

10.观察实验结果

能够点亮火熄灭DS6发光二极管。

四、实验仪器与软件

(1)PC计算机

(2)多媒体通信实验箱

(3)DSP仿真器

(4)音视频连线、耳麦

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

当前位置:首页 > 初中教育 > 理化生

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

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