DSP实验基于CCS报告

合集下载

DSP实训报告

DSP实训报告

实验一 CCS环境下DSP程序调试实例一实验目的熟悉CCS开发DSP应用程序的基本过程—创建、生成、调试和测试掌握Build参数的设置、Watch窗口、断点(Breakpoint)的设置二实验内容1.工程的创建首先运行CCS编程环境,按一下步骤依次进行,Project→New…,自定义存放路径2.创建源程序,链接命令,复位向量文件并添加到新建工程,接着编译3.程序运行的时候有一个错误,修改Build并更正语法错误在“scanStr[1]=0”后加入“;”4. 运行程序,在File→Load program…打开hello.out,单击Debug→Run可以看到输出结果5. 设置断点,并使用Watch窗口查看结果移动光标,将其放在fprintf(fptr,“%s”,scanStr);行上按F9设置断点。

View→Watch Window,将出现Watch窗口在Watch窗口中“Name”所对应的位置写入“scanStr”,Watch窗口中将出现“scanStr”的值按F5运行程序,并在提示输入时写入“goodbye”,如图所示,将在Watch窗口中看到“scanStr”的值为“goodbye”。

运行结果(也可按F10单步运行):三实验总结与体会第一次接触这个软件很陌生,再老师带着我们做了一个例子后,基本上大概了解了这个程序是怎么使用的,然后我们自己就做了上面这个例子当做练习使用这个软件。

当实际操作的时候还是发现有很多问题,比如,我在编译后就没有加载.out的文件,以致于最后出不来结果。

但是当弄完这个例子后,差不多就熟练了这个流程,会用ccs这个软件了,所以说我们应该多增加动手操作能力,光有理论知识还是远远不够的。

实验二 CCS环境下建立计算求累加和工程项目一实验目的1. 编写计算求累加和的.ASM源程序2. 编写计算求累加和的复位向量.ASM文件3. 编写计算求累加和的链接命令.CMD文件4. 运用CCS经调试得到正确的结果二实验内容计算 10Y=∑a i*x ii=1x i=1,2,3,4,5,6,7,8,9,10a i=10,9,8,7,6,5,4,3,2,1ai 、xi均存放在程序存储器空间1.在CCS环境下建立计算求累加和的工程项目2.编写计算求累加和的 .ASM源程序在file下new一个项目,然后编写程序,编写完成后保存成shiyansan.asm的格式,保存的路径在D盘shiyansan文件夹下。

dsp2812实验报告

dsp2812实验报告

实验一CCS 环境认识实验一、实验目的1、了解CCS软件操作环境和基本功能。

2、掌握CCS 软件仿真的配置步骤。

二、实验设备PC 机一台,安装有Code Composer Studio3.3 软件。

三、实验步骤1、软件仿真(Smulator)方式软件仿真是利用CCS软件在PC机中构造DSP的仿真环境,用于调试应用程序。

由于无法构造DSP中的外设,所以软件仿真仅能调试软件的算法和进行效率分析等。

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

设置步骤:(1)单击桌面图标:进入CCS软件设置窗口(2)在出现的窗口中按标号顺序进行如下设置:图1-1-1 ccs设置驱动界面此时CCS已经被设置成Simulator方式(软件仿真TMS320F2812器件的方式)。

2、创建工程⑴选择菜单栏“Project”的“New…”项,在弹出对话框“Project”中输入新建工程名volume;并设置工程所在目录。

⑵选择菜单“Project”的“Add Files to Project…”项将volume.c源程序文件、volume.cmd 命令文件。

注:头文件可以在编译时根据程序中的“include”语句自动加入。

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

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

其功能是将输入的音频数据扩大volume倍后输出。

4、修改工程设置将程序中的用户堆栈的尺寸设置成 1024 (字):点击菜单栏Project→Build Options,在弹出的Bulid Options for volume.pjt对话框中点击Linker标签,在Category栏中选中Basic项,并在其右侧的Basic设置里将Stack size (-stack)的值改为1024,点确定后保存。

5、编译选择菜单“Project”的“Rebuild All”项,对当前工程中所有文件进行编译链接,形成输出文件,注意编译过程中CCS主窗口下部的“Build”提示窗中显示编译信息,如给出的错误和警告的信息。

DSP实验基于CCS报告

DSP实验基于CCS报告

《DSP与嵌入式系统》实验报告目录实验一 IO端口实验一、实验目的了解 ICETEK-VC5416-A板在TMS320VC5416DSP在IO空间上的扩展。

了解 ICETEK-VC5416-A板上指示灯扩展原理。

学习在C 语言中使用扩展的控制寄存器的方法。

二、实验原理I/O 空间的扩展及使用:C54x DSP 的 I/O 空间被保留用于外部扩展。

由于在程序中访问 I/O 空间的语句只有 in 和out 指令,所以在扩展时一般将带有控制能的寄存器或分离地址访问的存储单元的地址映射到 I/O 空间,访问这部分的单元又称 I/O 端口访问。

例如:可将控制指示灯组的寄存器或锁存器映射到一个 I/O 端口地址上;A/D、D/A 等专用芯片控制端和状态寄存器也常映射到 I/O 端口上。

总之,在 I/O 空间中扩展的设备一般重点用于控制,而使用大片连续存储空间的存储器单元一般映射到数据空间。

ICETEK-VC5416-A 板将指示灯、DIP 开关、A/D、D/A、异步串行通信接口和 WatchDog的控制端等映射在 I/O 空间。

0001-0001h:WatchDog 控制寄存器3006-3006h:A/D 转换控制寄存器1000-1001h:D/A 转换控制寄存器2000-2007h:异步串口通信控制寄存器3002-3002h:板上指示灯控制寄存器3003-3003h:板上 DIP 拨动开关控制寄存器ICETEK-VC5416-A 实验箱上控制模块也使用 I/O 端口控制大部分设备:8001-8001h:读-键盘扫描值,写-液晶控制寄存器8002-8002h:液晶控制寄存器8003-8004h:液晶显示数据寄存器8005-8005h:发光二极管显示阵列控制寄存器8006-8006h:保留8007-8007h:发光二极管显示阵列控制寄存器8008-9FFFh:保留在程序中,访问 I/O 端口的语句较为简单。

对于汇编语言程序,可用 PORTR 和 PORTW 指令,例如,从端口0008h读入一个字到变量 x 的指令为 portr 8,x,而向端口 000Ch 输出x变量的值的指令为 portw #0Ch,x;在 C 语言中访问 I/O 端口则必须首先声明 I/O 端口的类型,然后才能访问,以下语句仍完成上面汇编语言所完成的功能:ioport unsigned int port0008;ioport unsigned int port000C;x = port0008;指示灯扩展原理详见上图,其中 7 个指示灯是 D3-D9;D10 在硬件上没做控制扩展。

DSP技术及其应用实验报告 CCS软件基本运算

DSP技术及其应用实验报告  CCS软件基本运算

DSP技术及其应用实验实验题目:CCS软件基本运算实验人:学号:班级:实验地点:一. 实验目的1.学习DSP算术指令的使用;2.学习并掌握DSP的基本寻址方式。

二. 实验器材1.CVT-DSP实验箱、DSP仿真器。

三. 实验内容1.编写程序,实现数据的算术运算;四. 基础知识1.DSP寻址方式简介在上一个实验中我们仅仅使用了一些寄存器,或者说是使用了寄存器寻址,DSP的寻址方式很多,可以分为以下几类:立即数寻址、绝对寻址、累加器寻址、直接寻址、间接寻址、存储器映射寄存器寻址、堆栈寻址,以及一些特殊的寻址比如:位倒序寻址、循环寻址。

下面简单的说明一下立即数寻址和直接寻址。

1)立即数寻址这种寻址方式最简单,指令里包括了立即操作数。

在一条指令中可对两种立即数编码。

一种是短立即数(3、5、8或9bits),另一种是16bits的长立即数。

立即数可包含在单字或双字指令中。

3-,5-,8-或9-bit值在单字指令中,16-bit值在双字指令中。

比如LD 指令允许使用3、5、8、9、16比特的立即数,FRAME指令只允许使用8比特的立即数,RPT允许使用8、16比特的立即数,而象ADD、ADDM、OR、ORM等只能使用16比特的立即数。

以下是一些立即数寻址的指令例子:2)直接寻址在直接寻址中,指令代码包含了数据存储器地址的低七位。

这7-bit作为偏移地址与数据页指针(DP)或堆栈指针(SP)相结合共同形成16-bit的数据存储器实际地址。

如下图所示。

其中CPL=0时:与9-bit的DP相结合形成数据存储器地址。

而9-bit的DP指向的是数据存储空间的512个数据页中的一页。

比如下面的程序:当CPL=1:加上SP基地址形成数据存储器地址。

示例略。

注:处理器复位后CPL默认值为0。

提示:实验算术指令由于不需要外部资源,可以不需要仿真器和实验箱。

我们可以平时自己用软件仿真,多多实验。

但是复杂的算法最好还是在线仿真,因为程序是流水线执行,软件仿真有时与实际硬件执行结果有所不同。

dsp实验报告CCS 设置和常用指令

dsp实验报告CCS 设置和常用指令

北京联合大学智慧城市学院实验报告课程名称:DSP 技术与应用实验名称: CCS设置和常用指令班级:通信14姓名学号:2017 年 10 月 21 日实验一 CCS 设置和常用指令一、实验目的熟悉CSS设置方法;会建立汇编语言源文件;会建立工程项目;会将文件加入到工程;会使用汇编、链接命令;会加载、运行程序。

二、实验内容1、编写汇编语言常用的装入和存储指令、算术指令、逻辑指令、程序控制指令50句。

2、使用汇编命令检查所编写的汇编语言源语句格式是否正确,如果有错误则找出并改正,直到没有错误为止。

三、实验设备每组PC 机一台;CCS-DSP 集成开发环境。

四、实验步骤1)CCS 设置及源文件编写、汇编、链接、加载、运行过程1、仿真器驱动的安装2、打开CCS,双击Setup CCS 环境设置3、连接试验箱系统4、建立新工程Project New5、建立新文件,编写源文件、链接命令文件6、加新建的文件到项目7、汇编源、链接文件8、加载、运行程序2)编写常用汇编语言指令装入和存储指令、算术指令、逻辑指令、程序控制指令共计50 句。

使用汇编命令菜单Project-Compile file,检查语句,如果有错误改正之,直到汇编没有错误为止。

五、实验报告1、CCS 工作环境设置过程:要有截图和说明。

新建工程并建立工作区建立ASM文件并保存2、编写的汇编语言语句和程序,要有截图。

3、汇编、链接、运行的结果:要有截图和说明。

4、实验结论通过本次实验,我熟悉了CCS的集成开发环境和运行环境,同时熟悉了CSS设置方法,在编译器里面进行源文件的编写,将文件添加到工程,最后经行加载、运行程序。

今天的这次实验让我对DSP的汇编语言有了更深一步的了解,在编译的过程中,我们组遇到了很多问题,但是最后通过查书和其他组的帮助,将问题一一解决。

及时地完成了任务。

附录:SUBB 1,B;从累加器中减去带借位减操作数DELAY 16;储存器单元延迟ADDC 1000h,A;带进位的加法SUBC 1000h,A;有条件减法SQUR 1000h,A;1000位置的数字的平方加到累加器A中DADD 12,A;双精度12加到累加器AADD 1H,A ; 操作数1加至累加器AADD 2H,2,A ; 操作数2移位后加至累加器AABS A;取绝对值CMPL A;累加器取反EXP A;求累加器中数据的指数MAX A;求累加器A最大值MIN B;求累加器B最小值NORM A;归一化SAT A;累加器饱和运算SUB #30,A;从累加器中减去30ADD #10,B;10加到累加器BMPY #20,A;20和累加器相乘MAC #10,#40,A;10和40相乘放到累加器A中SUB 3,A ;从累加器A中减去操作数3ROR B;累加器B经过进位位循环右移OR #1,B;1和累加器B相或XOR 10,A;10和累加器相异或RETE;开中断,从中断返回RETF;开中断,从中断快速返回ROL A;累加器A经过进位位循环左移SFTC A;累加器A条件移位BITT 1;测试由T寄存器指定的位AND 14,A ;操作数14与累加器A相与AND #1,A;1与累加A相与CMPM 1,#1k;储存单元与长立即数比较BACC A;按累加器规定地址转移PSHD 1;将1压入堆栈CALA A;按累加器的地址调子程序RPT #10;重复执行下调指令11次FRAME 1;堆栈指针偏移一个立即数值LD 31,16,A ;操作数左移16位后加载至累加器。

dsp实验报告

dsp实验报告

dsp实验报告实验一:CCS入门实验实验目的:1. 熟悉CCS集成开发环境,掌握工程的生成方法;熟悉SEED-DEC643实验环境; 掌握CCS集成开发环境的调试方法。

2.学习用标准C 语言编写程序;了解TI CCS开发平台下的C 语言程序设计方法和步骤; 熟悉使用软件仿真方式调试程序。

3. 学习用汇编语言编写程序; 了解汇编语言与 C 语言程序的区别和在设置上的不同;了解TMS320C6000 汇编语言程序结果和一些简单的汇编语句用法学习在CCS 环境中调试汇编代码。

4. 在了解纯C 语言程序工程和汇编语言程序工程结构的基础上,学习在C 工程中加入汇编编程的混合编程方法; 了解混合编程的注意事项;理解混合编程的必要性和在什么情况下要采用混合编程5. 熟悉CCS集成开发环境,掌握工程的生成方法; 熟悉SEED-DEC643实验环境;掌握CCS集成开发环境的调试方法。

实验原理:CCS 提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。

CCS 提供了基本的代码生成工具,它们具有一系列的调试、分析能力序。

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

使用 CCS常遇见文件简介1. program.c: C 程序源文件;2. program.asm: 汇编程序源文件;3. filename.h: C 程序的头文件,包含DSP/BIOS API模块的头文件;4. filename.lib: 库文件;5. project.cmd: 连接命令文件;6. program.obj: 由源文件编译或汇编而得的目标文件;7. program.out: 经完整的编译、汇编以及连接后生成可执行文件; 8. program.map: 经完整的编译、汇编以及连接后生成空间分配文件; 9.project.wks: 存储环境设置信息的工作区文件。

P.S(CMD文件中常用的程序段名与含义1. .cinit 存放C程序中的变量初值和常量;2. .const 存放C程序中的字符常量、浮点常量和用const声明的常量;3. .text 存放C程序的代码;4. .bss 为C 程序中的全局和静态变量保留存储空间;5. .far 为C 程序中用far声明的全局和静态变量保留空间;6. .stack 为 C 程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果;7. .sysmem 用于 C 程序中malloc、calloc 和 realloc 函数动态分配存储空间。

DSPs原理及应用 CCS实验报告

DSPs原理及应用 CCS实验报告

DSPs原理及应用——实验报告实验一第17章利用CCS开发DSP程序程序V olume.c#include <stdio.h>#include "volume.h"/* Global declarations */int inp_buffer[BUFSIZE]; /* processing data buffers */int out_buffer[BUFSIZE];int gain = MINGAIN; /* volume control variable */ unsigned int processingLoad = BASELOAD; /* processing routine load value */ struct PARMS str ={2934,9432,213,9432,&str};/* Functions */extern void load(unsigned int loadValue);static int processing(int *input, int *output);static void dataIO(void);/** ======== main ========*/void main(){int *input = &inp_buffer[0];int *output = &out_buffer[0];puts("volume example started\n");/* loop forever */while(TRUE){/** Read input data using a probe-point connected to a host file.* Write output data to a graph connected through a probe-point.*/dataIO();#ifdef FILEIOputs("begin processing") /* deliberate syntax error */#endif/* apply gain */processing(input, output);}}/** ======== processing ========** FUNCTION: apply signal processing transform to input signal.** PARAMETERS: address of input and output buffers.** RETURN V ALUE: TRUE.*/static int processing(int *input, int *output){int size = BUFSIZE;while(size--){*output++ = *input++ * gain;}/* additional processing load */load(processingLoad);return(TRUE);}/** ======== dataIO ========** FUNCTION: read input signal and write processed output signal.** PARAMETERS: none.** RETURN V ALUE: none.*/static void dataIO(){/* do data I/O */return;}输入波形输出波形此时Gain值为1.输入波形输出波形Gain值为5Gain值为10时,输入输出波形如下:实验二第18章6701核心系统的定浮点运算程序的设计与分析1.定点小数乘法product.asm 代码如下:.def start.data.def _c_int00_c_int00multiplicand .word 5*32768/10multiplier .word 5*32768/10.bss result,4,1,1.textstart: MVKL multiplicand,A11MVKH multiplicand,A11MVKL multiplier,B11MVKh multiplier,B11LDW *A11,A12LDW *B11,B12NOP 5MPYU A12,B12,A11MPYHLU A12,B12,B11MPYH A12,B12,B12MPYLHU A12,B12,A12NOPADD B11,A12,B11SHR B11,16,A12SHL B11,16,B11ADD A11,B11,A11ADD A12,B12,A12MVKL result,B11MVKH result,B11STW A11,*B11++STW A12,*B11NOP 5LOOP: B LOOPNOP 5.endproduct.cmd 代码如下:MEMORY{ IPRAM:origin=0x00008000,len=0x01000 IDRAM: origin=0x80000000,len=0x10000 } SECTIONS{ .text : > IPRAM.data : > IDRAM.bss : > IDRAM }反汇编窗口打开memory windows根据.cmd文件的内容做设置此时存储器窗口显示的图如下Q值改为15 Q值改为30 2.64位整数加减法程序加法程序:.global_add64;.text_add64:ADDU.L1 A4,A6,A1:A0;||ADD.L2 B4,B6,B7;|| ADD.S2X A8,4,B0;ADD.L2X A1,B7.B7;STW.D1 A0,*A8;|| STW.D2 B7,*B0;||B.S2 B3NOP 5.endPC改为0x00008020,加数和被加数A4、A6改为0x12345678,0xf2345678减法程序:.global _sub64.text_sub64:SUBU.L1 A4,A6, A1:A0 || SUB.L2 B4,B6,B7|| SUB.S2X A8,4,B0SUB.L2X A1,B7,B7STW .D1 A0,* A8|| STW .D2 B7,* B0|| B.S2 B3NOP 5.endPC改为0x000080003. 浮点乘除法运算程序浮点运算程序如下:#include "math.h"#pragma DATA_SECTION(data1,"data_buf1") float data1;#pragma DATA_SECTION(data2,"data_buf2") float data2;#pragma DATA_SECTION(data3,"data_buf3") float data3;#pragma DATA_SECTION(data4,"data_buf4") float data4;#pragma DATA_SECTION(data5,"data_buf5") float data5;void main(void){data1=1.1;data2=2.84;data3=data1 * data2;data4=data1/data2;data5=sqrt(1.1);}.cmd文件如下:MEMORY{IPRAM : origin=0x0,len=0x10000IDRAM : origin=0x10000000,len=0xF0000 }SECTIONS{.text >IPRAMdata_buf1>IDRAMdata_buf2>IDRAMdata_buf3>IDRAMdata_buf4>IDRAMdata_buf5>IDRAM.stack >IDRAMcinit >IDRAM.far >IDRAM}Memory window 设置如下图实验三6701核心系统的FFT运算程序FFT主程序#define PI 3.14159265358979#define M 10#define N 1024#include<math.h>void radix2(int * xr,int * xi,short * wr,short * wi);void ChangeOrder(int * xr,int * xi);int xr[N],xi[N];int x[2* N];int xm[N];int xlr[N],xli[N];short w1[N],w2[N];int y[2* N];int ym[N];int radix;int nx1;int i;main(){double delta;radix=2;nx1=N;delta=2* PI/nx1;for(i=0;i<nx1/2;i++){w1[i]=32767* (cos(i* delta));w2[i]=32767* (sin(i* delta));}for(i=0;i<nx1;i++){xr[i]=xlr[i]=(int)((cos(PI* i/5.0))* 0x80);xi[i]=xli[i]=1;x[2* i]=xlr[i];x[2* i+1]=xli[i];}for(i=0;i<nx1;i++){xm[i]=(int)sqrt((xr[i]* xr[i])+(xi[i]* xi[i]));}ChangeOrder(xlr,xli);radix2(xlr,xli,w1,w2);for(i=0;i<nx1;i++){int sum=0;sum=(int)sqrt((xlr[i]* xlr[i])+(xli[i]* xli[i]));ym[i]=sum;y[2* i]=(int)sqrt((xlr[i])* (xlr[i]));y[2* i+1]=(int)sqrt((xli[i])* (xli[i]));}}/*基2FFT算法程序*/void radix2(int xr[],int xi[],short wr[],short wi[]){short L,B,J,P,k;int rPartKB,iPartKB;for(L=1;L<=M;L++){B=(int)(pow(2,(L-1))+0.5);for(J=0;J<=B-1;J++){P=J* ((int)(pow(2,(M-L))+0.5));for(k=J;k<=N-1;k+=(int)(pow(2,L)+0.5)){rPartKB=xr[k+B]* wr[P]+xi[k+B]* wi[P];iPartKB=xi[k+B]* wr[P]-xr[k+B]* wi[P];rPartKB>>=15;iPartKB>>=15;xr[k+B]=xr[k]-rPartKB;xi[k+B]=xi[k]-iPartKB;xr[k]=xr[k]+rPartKB;xi[k]=xi[k]+iPartKB;}}}}/*倒序子程序*/void ChangeOrder(int xr[],int xi[]){int LH,N1,I,J,K;short T;LH=N/2;J=LH;N1=N-2;for(I=1;I<=N1;I++){if(I<J){T=xr[I];xr[I]=xr[J];xr[J]=T;T=xi[I];xi[I]=xi[J];xi[J]=T;}K=LH;while(J>=K){J=J-K;K=(int)(K/2+0.5);}J=J+K;}}fft.cmd:MEMORY{VECTORS:origin=0x0,len=0x400IPRAM:origin=0x400,len=0xf000IDRAM:origin=0x80000000,len=0x10000 }SECTIONS{.vec>VECTORS.text>IPRAM.data>IDRAM.bss>IDRAM.cinit>IDRAM.comst>IDRAM.far>IDRAMxlr变量,发现无法找到x1r变量。

DSP基于CCS数据寻址方式实验

DSP基于CCS数据寻址方式实验

实验一 CCS的用法一、实验目的1、了解TMS320C54X汇编语言程序的基本格式,以及汇编、链接的基本过程。

2、初步熟悉CCS的用法。

二、实验要求1、了解CCS菜单命令及产生各个显示窗口的操作2、操作各种仿真命令·进入、退出CCS·选择当前窗口、改变窗口大小·加载程序·运行程序(包括单步执行)·检查修改CPU寄存器·检查修改存储器单元内容·用观察窗口检查变量、CPU寄存器或存储单元的内容三、实验条件1、硬件DSK板及软件开发平台工具CCS。

2、源程序清单lab1.asm,详见教材3。

2节。

3、链接命令文件lab1。

cmd,详见教材3。

2节.四、实验内容1、双击桌面上的CCS2(‘5000)图标,启动CCS集成开发环境。

2、创建一个新的工程:在Project菜单中选择New项,并输入工程名如lab1,然后单击完成按钮创建新工程.3、将文件添加入工程中:①从Project菜单中选取Add Files to Project命令,在弹出的对话框中选择lab1。

asm文件并单击打开按钮;或者在工程lab1.pjt 处单击右键,选择菜单命令Add Files to Project。

②采用类似方法将lab1.cmd文件添加入工程。

4、对工程进行汇编、编译、链接:执行菜单命令Project→Rebuild All,或者在工具栏上单击Rebuild All图标.5、加载程序:执行菜单命令File→Load Program,在弹出的对话框中选择lab1。

out并单击打开按钮。

6、运行程序:选择Debug中的Run运行程序或单击工具栏的Run图标、Single Step图标运行程序。

五、试验程序lab 1:************************************************* lab1.asm y= a1*x1+a2*x2+a3*x3+a4*x4 *************************************************。

DSP实验报告_百度文库(精)

DSP实验报告_百度文库(精)

实验0 实验设备安装才CCS调试环境实验目的:按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。

实验步骤:以演示实验一为例:1.使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源;2.启动CCS,点击主菜单“Project->Open”在目录“C5000QuickStart\sinewave\”下打开工程文件sinewave.pjt,然后点击主菜单“Project->Build”编译,然后点击主菜单“File->Load Program”装载debug目录下的程序sinewave.out;3.打开源文件exer3.asm,在注释行“set breakpoint in CCS !!!”语句的NOP处单击右键弹出菜单,选择“Toggle breakpoint”加入红色的断点,如下图所示;4.点击主菜单“View->Graph->Time/Frequency…”,屏幕会出现图形窗口设置对话框5.双击Start Address,将其改为y0;双击Acquisition Buffer Size,将其改为1;DSP Data Type设置成16-bit signed integer,如下图所示;6.点击主菜单“Windows->Tile Horizontally”,排列好窗口,便于观察7.点击主菜单“Debug->Animate”或按F12键动画运行程序,即可观察到实验结果:心得体会:通过对演示实验的练习,让自己更进一步对CCS软件的运行环境、编译过程、装载过程、属性设置、动画演示、实验结果的观察有一个醒目的了解和熟悉的操作方法。

熟悉了DSP实验箱基本模块。

让我对DSP课程产生了浓厚的学习兴趣,课程学习和实验操作结合为一体的学习体系,使我更好的领悟到DSP课程的实用性和趣味性。

实验二基本算数运算2.1 实验目的和要求加、减、乘、除是数字信号处理中最基本的算术运算。

dsp的实验报告和ccs的基本操作

dsp的实验报告和ccs的基本操作
3.用户系统的软件部分可以由CCS建立的工程文件进行管理,工程一般包含以下几种文件:
(1)源程序文件:C语言或汇编语言文件(*.ASM或*.C)
(2)头文件(*.H)
(3)命令文件(*.CMD)
(4)库文件(*.LIB,*.OBJ)
五、实验步骤
1.设置开发环境,点击Save & Quit保存并运行CCS
(1)学习创建工程和管理工程的方法。
(2)了解基本的编译和调试功能。
(3)学习使用观察窗口。
(4)了解图形功能的使用。
二、实验设备
PC兼容机一台,SEED-DTK5502实验箱。
三、实验内容
1. DSP源文件的建立;
2. DSP程序工程文件的建立;
3.学习使用CCS集成开发工具的调试工具。
四、实验原理
图1 CCS配置窗口
2.打开CCS后,新建一个新的project。
图2 CCS界面
3.编译文件
图3编译工具栏
4.下载文件到CPU
5.装载数据进来
图4下载数据界面1
图5下载数据界面2
6.查看寄存器的值
图6查看寄存器值窗口
7.查看输入输出波形
图7输入数据波形
图8输出数据波形
六、实验结果
图9整体界面
从图9的右上角寄存器查看窗口可以查看寄存器的值,在右边图形界面可以查看输入输出值。显而易见,该输出波形的值是输入数值的2倍。
七、实验体会
通过这一次试验,我基本熟识了ccs这一个软件,熟识了开发了DSP的基本步骤。由于条件有限,本实验只是在ccs这个软件上的的模拟仿真。在做实验的时候,出现的错误:添加头文件,语法错误都是小不了,但是只要自己耐心地修改程序,多点请教老师,错误就很快地被解决。

实验一 DSP集成开发环境CCS

实验一 DSP集成开发环境CCS
MVPD table,*AR1+;将程序存储空间中标号为”table”的地址里的数据存入AR1所指向的数据存储空间,且地址AR1加1--------属于绝对寻址
CALL SUM;调用子程序SUM
end: B end
SUM:STM #a,AR3;(AR3)=a-----属于立即寻址
STM #x,AR4;(AR4)=x
[x1 x2 x3 x4]=[8 6 4 2];
(1)程序:
1)dp1.asm(源程序)
.mmregs;将TMS320C54x各寄存器名定义为全局符号,这样就可直接引用寄存器符号
STACK .usect "STACK",10h;在数据存储器中留出16个单元作为堆栈区,名为“STACK”
.bss a,4;为a分配4个存储单元
3)将TEST.out载入后,按”File---Data—Load…”,加入FLOWERS.dat文件,该文件存放图像的灰度值。
图7
4)按”View---Graph—image”,根据以下参数设置:
图8
5)按”Debug---Go main”,先观察并画出输入图像。(输入/输出图像占有同样的内存单元)
(3)运行程序并观察结果。
1)按Project—Rebuild all,编译和链接程序,若无错误,则按File—Load Program,载入可执行文件:dp1.out。
2)按debug—Run,运行程序。
3)按View—Memory…,观察数据存储单元中的结果数据。
图5
4)观察运行结果,回答以下问题:
图4
2)编写源程序和链接命令文件,并添加到工程中。
[1]按File---New---Source File,将源程序dp1.asm写入并保存为“dp1.asm”,文件的路径为:

dsp实验-CCS操作(精)

dsp实验-CCS操作(精)

实验二CCS操作一、实验目的1. 掌握TMS320C5400 系列汇编语言程序的基本格式;2. 掌握程序编译、连接、运行和调试的基本过程;3. 熟悉Code Composer Studio 的使用。

二、实验设备1. 集成开发环境Code Composer Studio(以下简称CCS)2. 实验代码ccs_basic.s54、ccs_basic.cmd 和ccs_basic.gel三、实验内容、结果1.基本操作:1. 建立项目,并加入文件a 运行CCS setup,选择C5402 Simulator,选择Project→New 菜单项,建立一个新的项目ccs_basic.pjt(注意建立路径,并选择Project→add files to new project 菜单项,加入文件ccs_basic.s54 和ccs_basic.cmd;b 在工程视图中选中GEL files 文件夹,单击鼠标右键,在弹出的菜单中选择Load GEL 选项,载入ccs_basic.gel;2. 编译和连接a 编译:选择Project-->Build Option,在Compile 表单的Category 列表中,选择Basic 选项,并设置Generate debug info 为full symbolic debug 选项,选择File s选项,并在设置Asm File Ext 中写入“s54”为汇编语言扩展名;b 连接:选择Project-->Build Option,在linker 表单中的Autoinit mode 选项中选择no autointialization 模式,Output Filename 中输入.\debug\ ccs_basic.out,Code Entry Point 中输入main,Map Filename 中输入ccs_basic.map,然后保存选项设置。

c 选择Project→Build 构建整个项目,产生可执行文件ccs_basic.out;d 选择File->Load Program,装载可执行文件ccs_basic.out。

DSP课程实验报告

DSP课程实验报告

目录目录 (1)实验一试验名称:RGB转灰度,添加噪声实验 (2)实验二试验名称:图像平滑,中值滤波实验 (7)实验三试验名称:图像锐化实验 (9)实验四试验名称:灰度变换实验 (11)实验五试验名称:灰度直方图,直方图均衡实验 (13)实验六试验名称:边沿提取,灰度反转,二值化实验 (16)实验七试验名称:熟悉imgLib的使用实验 (18)实验一试验名称:RGB转灰度,添加噪声实验一、试验目的1、熟悉CCS,学会运用CCS导入图像,并仿真DSP处理图像2、掌握如何将目标图像由彩色转为灰色3、掌握如何给目标图像添加各类噪声二、试验设备1、PC机一台,windows操作系统2、CCS编程环境三、试验原理(1)彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255个中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。

而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其中一个像素点的变化范围为255种,所以在数字图像处理中一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。

灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。

在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫做灰度值。

因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。

图像的灰度化处理,一般有以下三种处理方法:方法一:加权平均法根据重要性及其它指标,将R、G、B三个分量以不同的权值进行加权平均。

由于人眼对绿色的敏感度最高,对蓝色敏感度最低。

因此,在MATLAB中我们可以按下式系统函数,对RGB三分量进行加权平均能得到较合理的灰度图像。

f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j))方法二:平均值法将彩色图像中的R、G、B三个分量的亮度求简单的平均值,将得到均值作为灰度值输出而得到灰度图。

DSP原理与应用实验报告-CCS的使用

DSP原理与应用实验报告-CCS的使用

实验报告课程名称DSP原理与应用实验名称CCS的使用专业通信工程班级学号姓名指导教师2013年3 月25 日实验一 CCS的使用实验名称CCS的使用评分实验日期2013 年 3 月25 日指导教师姓名专业班级通信1081 学号一、实验目的1.掌握Code Composer Studio的安装和配置步骤过程。

2.了解Code Composer Studio软件的操作环境和基本功能,了解TMS320C55xx 软件开发过程。

(1)学习创建工程和管理工程的方法。

(2)了解基本的编译和调试功能。

(3)学习使用观察窗口。

(4)了解图形功能的使用。

二、实验设备PC兼容机一台,SEED-DTK5502实验箱。

三、实验内容1. DSP 源文件的建立;2. DSP 程序工程文件的建立;3. 学习使用CCS 集成开发工具的调试工具。

四、实验原理1.软件集成开发环境:完成系统的软件开发,进行软件和硬件仿真调试。

它也是硬件调试的辅助手段。

2.Code Composer Studio主要完成系统的软件开发和调试。

它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C语言程序编译连接生成COFF (公共目标文件)格式的可执行文件,并能将程序下载到目标DSP上运行调试。

3.用户系统的软件部分可以由CCS建立的工程文件进行管理,工程一般包含以下几种文件:(1)源程序文件:C语言或汇编语言文件(*.ASM 或*.C)(2)头文件(*.H)(3)命令文件(*.CMD)(4)库文件(*.LIB,*.OBJ)五、实验步骤1.点击桌面Setup CCS,设置开发环境,点击Save & Quit保存并运行CCS图1 CCS配置窗口2.打开CCS后,新建一个新的project,将头文件、命令文件和源文件添加到该工程,在源文件中编写程序图2 CCS界面3.编译文件图3 编译工具栏4.下载文件到CPU5.装载数据进来图4 下载数据界面1图5 下载数据界面2 6.查看寄存器的值图6 查看寄存器值窗口7.查看输入输出波形图7 输入数据波形图8 输出数据波形六、实验结果图9 整体界面从图9的右上角寄存器查看窗口可以查看寄存器的值,在右边图形界面可以查看输入输出值。

dsp 实验报告

dsp 实验报告

实验报告单院(系)物理与机电工程学院专业电子信息科学与技术班级姓名学号同组人/实验室组号/ 日期课程DSP技术及应用指导教师成绩实验项目编号 2 实验项目名称基于CCS的FFT算法DSP实现实验二基于CCS的FFT算法DSP实现一.实验目的1.了解用CCS软件对算法利用的基本步骤;2.熟悉CMD文件进行内存分配的方法;3.学习用软件进行FFT仿真的方法,了解算法移植的步骤,以便在实际中正确应用FFT。

二.实验设备计算机,CCS 3.3 版软件。

三.基本原理1.离散傅立叶变换DFT的定义:将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅立叶变换,简称DFT。

2.FFT是DFT的一种快速算法,将DFT的N2步运算减少为(N/2)log2N步,极大的提高了运算的速度。

3.旋转因子的变化规律。

4.蝶形运算规律。

5.基2 FFT算法。

四.实验步骤1.新建source文件,file→new→source file;2.编辑C文件,保存为fft.c;利用以下语句为变量inp_buffer等等整合到一个段funcsection,以便分配内存。

# pragma DATA_SECTION(inp_buffer,"funcsection");# pragma DATA_SECTION(out_buffer,"funcsection");# pragma DATA_SECTION(px,"funcsection");# pragma DATA_SECTION(pz,"funcsection");int inp_buffer[BUFSIZE]; /* processing data buffers */int out_buffer[BUFSIZE];int px[128];int pz[128];3.新建CMD文件,file→new→source file,保存为fft.cmd.为变量定义的段funcsection分配数据空间,地址为0x008000,长度为0x2000.MEMORY{PAGE 1 : L0L1RAM(RW) : origin = 0x008000, length = 0x2000}SECTIONS{funcsection : > L0L1RAM, PAGE = 1}断点属性action为读取文件,读得sine.dat中的数据,数据地址起点与inp_buffer相同,长度为128.4.新建头文件,读取文件程序load.asm,中断向量文件vector.asm;5.将C文件添加入工程,加入支持库文件rts2800_ml.lib,加入命令文件、load\vector编辑所有文件,生成out文件;6.在dataIO处设置断点,观察输入图像,输出频谱五.实验数据处理1.将输入波形的图形粘贴在下面;2.将输出的频谱结果粘贴在下面;3.对比软件自带的FFT与实验所得的FFT结果。

DSP实验报告(完美版)

DSP实验报告(完美版)

DSP实验报告班级:11050641学号:姓名:指导教师:实验一、二 DSP芯片的开发工具及应用实验1.实验目的(1)熟悉CCS集成开发环境,掌握工程的生成方法;(2)熟悉SEED-DTK DAD实验环境;(3)掌握CCS集成开发环境的调试方法。

2.实验设备DSP实验箱,计算机,CCS软件。

3.实验内容及步骤(1)CCS软件的安装;(2)了解SEED-DTK5416实验环境;(3)打开CCS集成开发环境,进入CCS的操作环境;(4)新建一个工程文件○1在c:\ti\myprojects中建立文件夹volume1(如果CCS安装在其他d:\ti ,则在d:\ti\myprojects中);○2将c:\ti\tutorial\target\volume1拷贝到c:\ti\myprojects\ volume1;○3从在CCS 中的Project 菜单,选择 New;○4在Project Name域中,键入volume1;○5在Location区域中,浏览步骤1所建立的工作文件夹;○6在Project Type 域中,选择Executable(.out);○7在Target域中,选择CCS配置的目标,并单击完成。

(5)向工程中添加文件○1从Project/Add Files to Project,选择 volume.c,单击Open(或右击Project View图标,选择Add Files to Project );○2选择Project/Add Files to Project,在Files of type对话框中,选择Asm Source Files (*.a*, *.s*)。

选择vectors.asm 和 load.asm, 单击Open;○3选择 Project/Add Files to Project,在Files of type 对话框中选择 Linker Command File (*.cmd),选择volume.cmd,单击Open。

dsp控制与应用实验报告

dsp控制与应用实验报告

DSP控制器原理及应用实验报告实验一熟悉环境及IO实验一、实验目的此次实验是第一次DSP实验,主要任务是熟悉CCS编译开发环境,采用软件仿真的方式,因此不需要仿真器,也不需要打开我们的试验箱。

二、实验要求1、熟悉CSS软件的操作方式2、熟悉加法器的运行方式三、实验背景知识CCS是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面,提供有环境配置、源文件编辑、程序调试、跟踪和分析等工具。

CCS有两种工作模式,即软件仿真器模式:可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。

硬件在线编程模式:可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。

CCS的开发系统主要由以下组件构成:① TMS320C54x集成代码产生工具;② CCS集成开发环境;③ DSP/BIOS实时内核插件及其应用程序接口API;④ 实时数据交换的RTDX插件以及相应的程序接口API;⑤ 由TI公司以外的第三方提供的各种应用模块插件。

CCS的功能十分强大,它集成了代码的编辑、编译、链接和调试等诸多功能,而且支持C/C++和汇编的混合编程,其主要功能如下:① 具有集成可视化代码编辑界面,用户可通过其界面直接编写C、汇编、.cmd 文件等;② 含有集成代码生成工具,包括汇编器、优化C编译器、链接器等,将代码的编辑、编译、链接和调试等诸多功能集成到一个软件环境中;③ 高性能编辑器支持汇编文件的动态语法加亮显示,使用户很容易阅读代码,发现语法错误;④ 工程项目管理工具可对用户程序实行项目管理。

在生成目标程序和程序库的过程中,建立不同程序的跟踪信息,通过跟踪信息对不同的程序进行分类管理;⑤ 基本调试工具具有装入执行代码、查看寄存器、存储器、反汇编、变量窗口等功能,并支持C源代码级调试;⑥ 断点工具,能在调试程序的过程中,完成硬件断点、软件断点和条件断点的设置;⑦ 探测点工具,可用于算法的仿真,数据的实时监视等;⑧ 分析工具,包括模拟器和仿真器分析,可用于模拟和监视硬件的功能、评价代码执行的时钟;⑨ 数据的图形显示工具,可以将运算结果用图形显示,包括显示时域/频域波形、眼图、星座图、图像等,并能进行自动刷新;⑩ 提供GEL工具。

DSP实验报告0705110637(精)

DSP实验报告0705110637(精)

学生实验报告课程名称:学生学号:所属院部:(理工类)DSP 技术及应用专业班级:07电子信息工程1班 0705110637 学生姓名:薛建宏信息技术学院指导教师:姜志鹏20 10 ——20 11 学年第 1 学期金陵科技学院教务处制实验报告书写要求实验报告原则上要求学生手写,要求书写工整。

若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。

纸张一律采用A4的纸张。

实验报告书写说明实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。

各院部可根据学科特点和实验具体要求增加项目。

填写注意事项(1)细致观察,及时、准确、如实记录。

(2)准确说明,层次清晰。

(3)尽量采用专用术语来说明事物。

(4)外文、符号、公式要准确,应使用统一规定的名词和符号。

(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。

实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。

实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。

实验报告装订要求实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

实验项目名称: 1、CCS 使用入门实验学时: 2学时同组学生姓名:郝文君实验地点: B406 实验日期: 2010-10-14 实验成绩:批改教师:批改时间:一、实验目的和要求(一)、实验目的(1)熟悉DSP 集成开发环境CCS 的界面(2)掌握CCS 设计平台的常用功能(3)掌握用CCS 设计并调试DSP 程序的流程(二)、实验要求(1)注意掌握CCS 开发DSP 应用程序的步骤;(2)理解提供的汇编语言源程序的功能。

(3)调试程序要记录调试过程中出现的问题及解决办法;(4)编写程序要规范、正确,上机调试过程和结果要有记录,并注意调试程序集成环境的掌握及应用,不断积累编程及调试经验;(5)实验后按实验报告规范要求给出本实验的实验报告。

DSP实验报告一:DSP系统认识及CCS应用基础

DSP实验报告一:DSP系统认识及CCS应用基础

实验一:DSP系统认识及CCS应用基础一、实验目的:1.学习使用CCS编程软件,对DSP的开发环境有初步的认识。

2.理解程序的执行过程,学会设置断点,对程序的运行有一定的了解。

3.通过对CCS的安装与应用,认识DSP系统,了解DSP的编程思想。

二、实验仪器:1.微型计算机SV3.1软件三、实验内容:CCS(Code Composer Studio)是一个集成开发环境,提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。

除了配置仿真器硬件和 DSP 硬件系统进行硬件测试、软件调试外,还可使用 CCS 提供的软件模拟功能,在没有硬件环境的情况下,从事软件的模拟测试。

四、实验步骤:4.1 CCSv3.1的安装(1)运行下载的安装程序,双击 setup.exe 文件开始进入安装过程,如图4-1 所示。

图 4.1-1 CCSv3.1安装文件点击 Next 进入下一步,当运行到如图4-2处时,选择Custom Install选项,进入手动选择安装通道。

图 4.1-2 CCSv3.1安装过程1在图4-3界面中点击 Code Composer StudoV3.1 项,选择 Will be installed on local hard drive(将全部软件安装到本地硬盘上)。

图 4.1-3 CCSv3.1安装过程2选择好后,点击 Next 进入下一步安装过程,点击界面中的 inatsll now,正式开始软件的安装。

(2)安装完毕,进入安装完毕界面。

点击安装完毕界面中的 Finish,完成安装过程。

安装完毕后,在桌面产生“CCStudio 3.1”和“Setup CCStudio V3.1”两个图标。

双击 Setup CCStudio V3.1 进入 CCS3.1 的设置过程。

4.2 CCSv3.1的设置双击桌面的 Setup CCStudio V3.1 图标(或者从“开始”——“所有程序”——“Texas Instruments”——“Code Composer Studio 3.1”——“Setup Code Composer Studio v3.1”进入 CCS3.1 的设置过程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《DSP与嵌入式系统》实验报告目录实验一 IO端口实验一、实验目的了解 ICETEK-VC5416-A板在TMS320VC5416DSP在IO空间上的扩展。

了解 ICETEK-VC5416-A板上指示灯扩展原理。

学习在C 语言中使用扩展的控制寄存器的方法。

二、实验原理I/O 空间的扩展及使用:C54x DSP 的 I/O 空间被保留用于外部扩展。

由于在程序中访问 I/O 空间的语句只有 in 和out 指令,所以在扩展时一般将带有控制能的寄存器或分离地址访问的存储单元的地址映射到 I/O 空间,访问这部分的单元又称 I/O 端口访问。

例如:可将控制指示灯组的寄存器或锁存器映射到一个 I/O 端口地址上;A/D、D/A 等专用芯片控制端和状态寄存器也常映射到 I/O 端口上。

总之,在 I/O 空间中扩展的设备一般重点用于控制,而使用大片连续存储空间的存储器单元一般映射到数据空间。

ICETEK-VC5416-A 板将指示灯、DIP 开关、A/D、D/A、异步串行通信接口和 WatchDog的控制端等映射在 I/O 空间。

0001-0001h:WatchDog 控制寄存器3006-3006h:A/D 转换控制寄存器1000-1001h:D/A 转换控制寄存器2000-2007h:异步串口通信控制寄存器3002-3002h:板上指示灯控制寄存器3003-3003h:板上 DIP 拨动开关控制寄存器ICETEK-VC5416-A 实验箱上控制模块也使用 I/O 端口控制大部分设备:8001-8001h:读-键盘扫描值,写-液晶控制寄存器8002-8002h:液晶控制寄存器8003-8004h:液晶显示数据寄存器8005-8005h:发光二极管显示阵列控制寄存器8006-8006h:保留8007-8007h:发光二极管显示阵列控制寄存器8008-9FFFh:保留在程序中,访问 I/O 端口的语句较为简单。

对于汇编语言程序,可用 PORTR 和 PORTW 指令,例如,从端口0008h读入一个字到变量 x 的指令为 portr 8,x,而向端口 000Ch 输出x变量的值的指令为 portw #0Ch,x;在 C 语言中访问 I/O 端口则必须首先声明 I/O 端口的类型,然后才能访问,以下语句仍完成上面汇编语言所完成的功能:ioport unsigned int port0008;ioport unsigned int port000C;x = port0008;指示灯扩展原理详见上图,其中 7 个指示灯是 D3-D9;D10 在硬件上没做控制扩展。

实验程序流程图三、实验代码.依次类推。

实验二定时器实验一、实验目的.通过实验熟悉 VC5416A 的定时器;.掌握 VC5416A 定时器的控制方法;.掌握 VC5416A 的中断结构和对中断的处理流程;.学会 C 语言中断程序设计,以及运用中断程序控制程序流程。

二、实验原理.通用定时器介绍及其控制方法片内定时器是一个软件可编程定时器,可以用来产生周期的中断信号。

定时器主要由 3 个寄存器所组成:定时器寄存器(TIM)、定时器周期寄存器(PRD)和定时器控制寄存器(TCR)。

这 3 个寄存器都有映象寄存器,它们在数据存储器中的地址分别为 24H、25H 和 26H。

TIM 是一个递减计数器;PRD 中存放计数值;TCR 中有定时器的控制位和状态位:15—12 保留11--10 soft free9—6 PSC 定时器预定标计数器5 TRB 定时器重新加载位,用来复位片内定时器4 TSS 定时器停止状态位,用于停止或启动定时器3—0 TDDR 定时器分频系数在正常工作情况下,当TIM减到0后,PRD中的时间常数自动地加载到TIM。

复位后,定时器控制寄存器(TCR)的停止状态位 TSS=0,定时器启动工作,时钟信号CLKOUT加到预定标计数器 PSC。

PSC也是一个递减计数器,每当复位或其减到0后,自动地将定时器分频系数TDDR加载到PSC。

PSC在CLKOUT作用下,作减1计数。

当PSC减到0,产生一个借位信号,令TIM作减1计数。

TIM减到0后,产生定时器中断信号TINT,传送到CPU和定时器输出引TOUT。

定时器中断的周期为:CLKOUT×(TDDR+1)×(PRD+1)其中,CLKOUT位时钟周期,TDDR和PRD分别为定时器的分频系数和时间常数。

对定时器初始化的步骤如下:⑴先将TCR中的TSS位置1,关闭定时器。

⑵加载PRD。

⑶重新加载TCR(使TDDR初始化;令TSS位=0,以接通CLKOUT;TRB位值1,以使TIM减到0后重新加载定时器时间常数),启动定时器。

- 对中断的处理:⑴设置 INTM=1⑵将 IFR中的TINT位置 1,清除尚未处理完的定时器中断。

⑶将 IMR中的TINT位置 1,开放定时器中断。

⑷将 ST1中的INTM位请 0,开放所有可屏蔽中断。

. TMS320VC5416 中断结构以下是 5416 的 IMR 和 IFR 寄存器的结构,其中包含了可响应的中断:.中断响应过程外设事件要引起 CPU 中断,必须保证:IMR 相应位被使能(置 1),ST1 寄存器中的 INTM 使能(置 0)。

当 CPU 响应中断时,PC 指针指向中断向量表中对应中断的地址,进入中断服务子程序。

中断向量表是 DSP 存放中断服务程序的一段内存区域,大小为 80H。

在中断向量表中,每一个中断占用 4 个字的空间,一般情况是将一条跳转或延时跳转指令存放于此。

中断向量表的位置是可以改变的,修改 PMST 寄存器中的中断向量表基地址可以实现这一点。

.中断程序设计程序中应包含中断向量表,5416 默认向量表从程序区 FF80 地址开始存放。

向量表中每项为 4 个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地址;第一个向量表的首项为复位向量,即 CPU 复位操作完成后自动进入执行的程序入口;程序中包含相应的中断服务程序,应将其入口地址加入相应中断向量表中。

.实验程序分析本实验设计的程序是在上一个实验基础上修改得来,由于上一实验控制指示灯闪烁的延时控制是用循环计算方法得到的,延时不精确也不均匀,采用中断方式可以实现指示灯的定时闪烁,时间更加准确。

对于定时器的周期寄存器为计数f423H,分频系数定为 15,即 1,000,000 个 CPU 时钟计数一次,由于 DSP 工作在 8MHz 主频(ICETEK-VC5416-A 板上 DIP 开关 U2 的 CLKMD1-3 均为 OFF 时),正好是 125ms 中断一次,所以在中断服务程序中计算中断 4 次时改变指示灯状态,实现指示灯亮秒再灭秒,即每秒闪烁1 次。

实验程序的工程中包含了两种源代码,主程序采用 C 语言编制利于控制,中断向量表在汇编语言文件中,利于直观地控制存储区分配。

在工程中只需将它们添加进来即可,编译系统会自动识别分别处理完成整合工作。

实验程序的 C 语言主程序中包含了内嵌汇编语句,提供一种在需要更直接控制 DSP 状态的方法,同样的方法也能提高 C 语言部分程序的计算效率。

.程序流程图主程序流程图中断服务程序流程图如下:三、实验代码mage")int mix[256];int kk=0;int kkk=0;#define FIRNUMBER 64#define SIGNAL1F 1000#define SIGNAL2F 4500#define SAMPLEF 10000#define PIfloat InputWave();float FIR();void initMcBSP2( void );float fHn[FIRNUMBER]={ ,,,,,,,,,,,,,,,,,,,,,,,, , , , , , , , , , , , , , , , , , , , , , ,,,,};float fXn[FIRNUMBER]={ };float fInput,fOutput;float fSignal1,fSignal2;float fStepSignal1,fStepSignal2; float f2PI;int i;float fIn[256],fOut[256];int nIn,nOut;int flage=0;int uWork;int inp1[256];int inp2[256];int length1,length2;int channel;int www;main(){int i,j;asm("ssbxINTM");*(int *)0x58=0x0;j= PMST;PMST = j&0xff;IMR = 0x8;TCR = 0x417;TIM = 8;PRD = 0x157;TCR = 0x427;IFR = 0x100;flage=0;channel=1;length1=length2=0; www=0;for(i=0;i<256;i++) {fOut[i]=0;}port3006=1;*(int *)0x58=0x1007; initMcBSP2();asm("rsbxINTM");nIn=0; nOut=0;f2PI=2*PI;fSignal1=;fSignal2=PI*;fStepSignal1=2*PI/30;fStepSignal2=2*PI*;while ( 1 ){if(flage==1){mage")int mix[256];int kk=0;int kkk=0;#define FIRNUMBER 64#define SIGNAL1F 1000#define SIGNAL2F 4500#define SAMPLEF 10000#define PIfloat InputWave();float FIR();void initMcBSP2( void ); /*滤波器的参数*/float fHn[FIRNUMBER]={,,, , , , , , , , , , , , , , , , , , , , , , ,, , , , , , , , , , , , , , , , , , , , , , ,};float fXn[FIRNUMBER]={ }; //float fInput,fOutput;float fSignal1,fSignal2;float fStepSignal1,fStepSignal2;float f2PI;int i;float fIn[256],fOut[256];int nIn,nOut;int flage=0;int uWork;int inp1[256];int inp2[256];int length1,length2;int channel;int www;main(){int i,j;asm("ssbxINTM"); // 关闭可屏蔽中断*(int *)0x58=0x0;j= PMST; //设置PMST寄存器PMST = j&0xff; //中断向量表起始地址=80HIMR = 0x8;TCR = 0x417; // 计数器分频系数=8TIM = 8; //计数器计数为8PRD = 0x157; //周期寄存器为0x157TCR = 0x427; // IFR = 0x100; // 其中,时钟周期为8MHz flage=0;channel=1; //打开通道length1=length2=0;www=0;for(i=0;i<256;i++){fOut[i]=0;}port3006=1;*(int *)0x58=0x1007;initMcBSP2();asm("rsbxINTM"); // 开中断进行转换nIn=0; nOut=0;f2PI=2*PI; //设定正弦波的数字角频率范围fSignal1=;fSignal2=PI*;fStepSignal1=2*PI/30;fStepSignal2=2*PI*;while ( 1 ){if(flage==1){flage=0;fInput=InputWave();fIn[nIn]=fInput;nIn++; nIn%=256;fOutput=FIR();fOut[nOut]=fOutput;nOut++;if ( nOut>=256 ){nOut=0; //等待延时 }}}}float InputWave(){for ( i=FIRNUMBER-1;i>0;i-- )fXn[i]=fXn[i-1];fXn[0]=mix[kkk];kkk++;if ( kkk>=256 ){kkk=0;flage=0;}return(fXn[0]);}float FIR(){float fSum;fSum=0;for ( i=0;i<FIRNUMBER;i++ ){fSum+=(fXn[i]*fHn[i]);}return(fSum);}// 定时器中断服务程序,完成:保存转换结果、启动下次转换void interrupt time(void){int i;if(flage==0){if(channel){DXR12=0xe000;uWork=DRR12;uWork=uWork>>4;uWork&=0xff;inp2[length2]=uWork; length2++;}else{DXR12=0xc000;uWork=DRR12;uWork=uWork>>4;uWork&=0xff;inp1[length1]=uWork; length1++;}channel=1-channel;www++;www%=512;if(www==0){length1=length2=0;flage=1;for(i=0;i<256;i++){mix[i]=inp1[i]+inp2[i];}asm(" nop");}}}void initMcBSP2( void )/*配制McBSP1作为SPI模式*/ {SPSA2=SPCR1;SPSD2=0;SPSA2=SPCR2;SPSD2=0;SPSA2=RCR1;SPSD2=0x40;SPSA2=RCR2;SPSD2=0x01;SPSA2=XCR1;SPSD2=0x40;SPSA2=XCR2;SPSD2=0x01;SPSA2=SRGR1;SPSD2=0x83;//SPSA2=SRGR2;SPSD2=0x2000;SPSA2=PCR;SPSD2=0xA08;SPSA2=SPCR1;SPSD2=0x5801; SPSA2=SPCR2;SPSD2=0xc1;}四、实验结果。

相关文档
最新文档