dsp 实验报告

dsp 实验报告
dsp 实验报告

实验一编写一个汇编和C混合的DSP程序

一.实验目的

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

2.了解混合编程的注意事项。

3.理解混合编程的必要性和在什么情况下要采用混合编程。

二.实验设备

计算机,ICETEK-VC5416AE-S61实验箱(或ICETEK仿真器+ICETEK-VC5416-AE系统板+相关连线及电源)。

三.实验原理

1.使用C语言开发应用程序的优缺点

优点:

易于开发和维护。由于用C语言书写接近自然语言,其可读性强、利于理解,在编制、修改、实现算法方面比用汇编语言开发容易。

可移植性强。

不容易发生流水线冲突。编译器能提供完善的解决流水线冲突的结果。

有大量现存的算法可利用。

适用于人机界面的开发。

缺点:

代码量大。

程序效率较低。

优化代码存在一定困难。

综上所述,我们一般用C语言设计应用程序的总体框架、解决人机接口和对速度效率要求不太高的复杂算法。

2.使用汇编语言开发应用程序的优缺点

优点:

更能发挥系统特点。由于汇编语言掌控系统硬件的能力强于C语言,设计出来的程序更加贴近硬件特性,往往能将硬件效能发挥到极致。

代码精练,效率高。用汇编语言设计的程序,代码短、不容易产生冗余。

代码量小。

缺点:

可读性差。不利于复杂算法的开发和实现。

可移植性差。

容易产生流水线冲突。由于排除冲突需要靠人来辅助完成,这要求编程人员有较为丰富的开发经验和对硬件工作机制的深刻理解。

3.如何混合编程

(1)混合工程:在工程中可以同时包含C语言程序和汇编语言程序,无需更改编译选项。一般地,我们使用C程序为主,加入汇编语言程序模块。

(2)使用模块技术:在应用程序中划分出比较清晰的模块,不同模块可采用不同语言设计。

强调效率和速度的模块采用汇编设计。尽量少用汇编语言设计程序。

(3)如何找出需要用汇编程序设计的模块:

用C语言完成设计后,运用CCS的软件仿真功能,充分测试程序,找到程序运行中的瓶颈(速度方面的和空间方面的)。

再使用分块仿真技术尽可能缩小模块。

找到的模块单独写成子程序,存入独立的文件中。

由于CCS编译器能产生C语言程序到汇编程序的中间文件,观察需要优化的模块的汇编结果,进行人工优化。

最后运用人工优化后形成的汇编程序模块,代替原来需要优化的C语言模块,进行编译。

程序中可使用内嵌汇编。比如:asm(“LDDP”);编译器可直接使用内嵌的汇编语句生

成最终代码。但需要语句中双引号中为合法的汇编语句,并且要以空格开头等等。

4.何时使用混合编程技术

当程序中需要操作与硬件密切相关的设备,而用C语言较难实现时。比如:在中断程序设计时需要设置中断向量表,向量表中空间有限用C语言语句有困难,且需向量表要在内存中精确定位,这时可将设置中断向量表的部分用汇编语言代替。

当需要绕开C编译器的规定,进行特殊操作时。比如:C语言规定,程序不能访问程序代码区,而系统功能需要进行类似访问时可采用限制较小的汇编语言程序设计。

当需要提高模块的效率(包括空间上和时间上两方面的),而C语言程序无法达到要求时。

5.使用混合编程时的注意事项

在汇编程序中使用其他C语言模块中定义的变量或函数名称时,需要在引用的名称前加一下划线。如:C中定义的变量为x,在汇编中引用时要用_x。

汇编语言写的子程序需要符合C语言的调用规则,尤其是在默认的辅助寄存器使用上和栈的使用上要求兼容。

在汇编语言模块中,需要编程者自己消除流水线冲突。

在使用内嵌汇编技术时,需要考虑以下内容:

要非常小心地处理,以免破坏C语言操作环境。编译器在遇到内嵌汇编语句时,不会对其中的汇编语句进行分析处理。

避免从内嵌汇编语句跳转到C语言模块中,那将极容易造成寄存器使用上的混乱,从而产生难以预料的结果。

不要在内嵌汇编语句中改变C语言模块中变量的值,但可以安全地读取它们的值。

在汇编程序中不要使用内嵌汇编。

6.实验程序解释

实验程序提供了一个使用C与汇编程序混合编程的实例,是一个用汇编语言模块优化自己编制的应用程序的实例。

首先用户拿到的是一个纯用C语言开发的工程,再根据假设,需要将其中一个模块改造成用汇编语言模块优化的模块。通过实验过程,用户可充分了解混合编程可以采取的步骤和方法。

四.实验步骤

1.实验准备

设置软件仿真模式,启动CCS

2.打开工程、浏览程序内容、编译生成和下载可执行代码、

(1)打开工程:选择菜单Project->Open…,选择打开工程文件

C:\ICETEK\VC5416AES61\VC5416AES61\Lab0104-CASM\CASM.pjt

(2)展开工程管理窗口中CASM工程,双击Source下的CProgram.c项,打开CProgram.c源程序窗口。可以看到,程序完成了一个简单的运算,它先开设了三个全局变量x、y、z,然后分别给x和y赋初值,再在循环中计算x+y,结果赋值给z。

(3)编译并下载程序:

此设置完成在每次编译完成后将程序自动下载到DSP上。

选择菜单Project->BuildAll,编译、连接和下载程序。

(4)运行程序,观察结果:在程序中有“在此加软件断点”注释的语句上加软件断点;将变量z加入变量观察窗口;运行程序到断点,观察变量z的结果值。

3.修改程序

(1)修改算法部分成单独子程序:我们假设在循环中进行的运算是需要用汇编语言程序模块优化的部分。首先将“z=x+y;”语句修改成“z=add(x,y);”,在程序头上,变量定义之前加上

一行“intadd(inta,intb);”,在程序末尾,添加如下子程序。

intadd(inta,intb)

{

return(a+b);

}

如此,将算法搬移到一个C语言的子程序模块中实现。

修改完成后,可以编译、下载、运行到断点,观察运行结果,判断是否子程序能完全与

原程序一样完成算法。

(2)将子程序移入add.c:打开一个新的空的源文件窗口,将main函数后的子程序复制到窗口中;注释main函数后面的子程序(在子程序前一行加“/*”,在子程序结尾行后加“*/”);将新窗口中的内容保存为文件add.c。

(3)将add.c加入工程,编译、下载、运行,检查结果,保证运算无误。

(4)选择菜单Project->BuildOptions…,进行如下设置:

(5)重新编译工程;打开C:\ICETEK\VC5416AES61\VC5416AES61\Lab0104-CASM\add.asm;在其中的“.line2”行、“.line3”行、“.line4”行头上分别加分号,即注释这3个语句。

(6)将工程中的add.c换成add.asm:在工程管理窗口中用鼠标右键单击add.c,选择“Remove fromProject”;用鼠标右键单击CASM.pjt,选择“AddFilestoProject…”,选择

C:\ICETEK\VC5416AES61\VC5416AES61\Lab0104-CASM\add.asm。

(7)重新编译、下载、运行程序并观察结果。由于add.asm是CCS编译器从add.c编译得来的,下面要做的就是手工调整add.asm中的汇编代码,从而实现优化处理。

4.退出CCS

五.实验程序

main()

{

intx,y,z;

x=1;y=2;

while(1)

{

z=x+y;

}

}

六.实验结果

实验二 DSP的定时器

一.实验目的

1.通过实验熟悉VC5416A的定时器;

2.掌握VC5416A定时器的控制方法;

3.掌握VC5416A的中断结构和对中断的处理流程;

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

二.实验设备

计算机,ICETEK-VC5416AE-S61实验箱(或ICETEK仿真器+ICETEK-VC5416-AE系统板+相关连线及电源)。

三.实验原理

1.通用定时器介绍及其控制方法

片内定时器是一个软件可编程定时器,可以用来产生周期的中断信号。

定时器主要由3个寄存器所组成:定时器寄存器(TIM)、定时器周期寄存器(PRD)和定时器控制寄存器(TCR)。这3个寄存器都有映象寄存器,它们在数据存储器中的地址分别为24H、25H和26H。TIM是一个递减计数器;PRD中存放计数值;TCR中有定时器的控制位和状态位:

15—12保留

11--10softfree

9—6PSC定时器预定标计数器

5TRB定时器重新加载位,用来复位片内定时器

4TSS定时器停止状态位,用于停止或启动定时器

3—0TDDR定时器分频系数

在正常工作情况下,当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,开放所有可屏蔽中断。

2.TMS320VC5416中断结构

以下是5416的IMR和IFR寄存器的结构,其中包含了可响应的中断:

INT0-3为外部引脚产生的中断,TINT为定时器中断,RINT0-2和XINT0-2对应McBSP 口的接收和发送中断,HINT对应HPI接口中断,另外还有DMA中断。

3.中断响应过程

外设事件要引起CPU中断,必须保证:IMR相应位被使能(置1),ST1寄存器中的INTM 使能(置0)。

当CPU响应中断时,PC指针指向中断向量表中对应中断的地址,进入中断服务子程序。中断向量表是DSP存放中断服务程序的一段内存区域,大小为80H。在中断向量表中,每一个中断占用4个字的空间,一般情况是将一条跳转或延时跳转指令存放于此。中断向量表的位置是可以改变的,修改PMST寄存器中的中断向量表基地址可以实现这一点。

4.中断程序设计

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

向量表中每项为4个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地址;

第一个向量表的首项为复位向量,即CPU复位操作完成后自动进入执行的程序入口;

程序中包含相应的中断服务程序,应将其入口地址加入相应中断向量表中。

5.实验程序分析

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

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

实验程序的工程中包含了两种源代码,主程序采用C语言编制利于控制,中断向量表在vector.asm汇编语言文件中,利于直观地控制存储区分配。在工程中只需将它们添加进来即可,编译系统会自动识别分别处理完成整合工作。

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

6.程序流程图

主程序流程图中断服务程序流程图如下:

四.实验步骤

1.实验准备

连接实验设备,关闭实验箱上扩展模块和信号源电源开关。

2.设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行

3.启动CodeComposerStudio2.21

4.打开工程文件

打开菜单“Project”的“Open”项;

选择C:\ICETEK\VC5416AES61\VC5416AES61\Lab0303-Timer\Timer.pjt目录中的“Timer.pjt”。

在项目浏览器中,双击Timer.c,激活Timer.c文件,浏览该文件的内容,理解各语句作用。打开Timer.cmd,浏览并理解各语句作用,对照C源程序学习中断向量表的写法。5.编译、下载程序

6.运行程序观察结果

单击“Debug”菜单,“Run”项,运行程序。

观察目标板上指示灯D3-D9闪烁情况。

单击“Debug”菜单,“Halt”项,停止程序运行。

7.修改程序重新运行

适当改变程序中“PRD=0xf423;”语句中的延时参数,重复步骤5,6,使指示灯约1秒

烁两次、三次、四次。

五.实验程序

#define IMR *(int *)0x0

#define IFR *(int *)0x1

#define PMST *(int *)0x1d

#define REGISTERCLKMD (*(unsigned int *)0x58)

ioport unsigned int port3002;

ioport unsigned int port3004;

ioport unsigned int port8007;

#define LED port3002

void interrupt xint2(void);

unsigned int uWork,nCount;

unsigned int nCountKey,nLS;

main()

{

nCount=0; nCountKey=0;

nLS=0x40;

REGISTERCLKMD=0x1007; // 设DSP主频改为两倍PLL时钟=32MHz asm(" ssbx INTM"); // 关中断,进行关键设置时不许打扰

port3004=0; // 使能XINT2

port8007=0xc8;

uWork=PMST; // 设置PMST寄存器

PMST =uWork&0xff; // 中断向量表起始地址=80H

IMR = 4; // 使能XINT2

IFR = 4; // 清中断标志位

asm(" rsbx INTM"); // 开中断

while ( 1 );

}

void interrupt xint2(void) // XINT2中断服务程序

{

nCount++; nCount%=256; // 中断计数

if ( nCount%2==1 )

{

nCountKey++; nCountKey%=8;

nLS^=0x40;

uWork=nCountKey|nLS;

LED=~uWork; // 显示计数值}

}

六.实验结果

实验三有限冲击响应滤波器(FIR)算法

一.实验目的

1.掌握用窗函数法设计FIR数字滤波器的原理和方法。

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

3.了解各种窗函数对滤波器特性的影响。

二.实验设备

PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000),安装CodeComposerStudio2.21软件。

三.实验原理

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

2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。3.数字滤波器系数的确定方法。

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

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

设计:

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

采样频率:

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

Ω1=2πf1/fs=0.64π

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

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

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

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

选择N=25,窗函数为:

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

滤波器脉冲响应为:

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

h[n]=0|n|>12

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

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

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.程序流程图:

四.实验步骤

1.实验准备:

设置软件仿真模式,启动CCS

2.打开工程,浏览程序:工程目录为

C:\ICETEK\VC5416AES61\VC5416AES61\Lab0501-FIR\Fir.pjt。3.编译并下载程序。

4.打开观察窗口。

选择菜单View->Graph->Time/Frequency…,进行如下设置:

选择菜单View->Graph->Time/Frequency…,进行如下设置:

在弹出的图形窗口中单击鼠标右键,选择“CleAeDisplay”。5.设置断点:在有注释“breakpoint”的语句设置软件断点。6.运行并观察结果:

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

⑵观察“Input”、“Output”窗口中时域图形;观察滤波效果。

⑶鼠标右键单击“Input”和“Output”窗口,选择“Properties…”项,设置“DisplayType”

为“FFTMagitude”,再单击“OK”按钮结束设置。

⑷观察“Input”、“Output”窗口中频域图形;理解滤波效果。

7.退出CCS

五.实验程序

#include

#defineFIRNUMBER25 //Number of filter coefficients

#defineSIGNAL1F1000

#defineSIGNAL2F4500

#defineSAMPLEF10000

#definePI3.1415926

floatInputWave();

floatFIR();

floatfHn[FIRNUMBER]={0.0,0.0,0.001,-0.002,-0.002,0.01,-0.009,

-0.018,0.049,-0.02,0.11,0.28,0.64,0.28,

-0.11,-0.02,0.049,-0.018,-0.009,0.01,

-0.002,-0.002,0.001,0.0,0.0

};

floatfXn[FIRNUMBER]={0.0};

floatfInput,fOutput;

floatfSignal1,fSignal2;

floatfStepSignal1,fStepSignal2;

floatf2PI;

inti;

floatfIn[256],fOut[256];

intnIn,nOut;

main()

{

nIn=0;nOut=0;

f2PI=2*PI;

fSignal1=0.0;

fSignal2=PI*0.1;

fStepSignal1=2*PI/30;

fStepSignal2=2*PI*1.4;

while(1)

{

fInput=InputWave();

fIn[nIn]=fInput;

nIn++;nIn%=256;

fOutput=FIR();

fOut[nOut]=fOutput;

nOut++; /*breakpoint*/

if(nOut>=256)

{

nOut=0;

}

}

}

floatInputWave() //生成一个信号,为两种频率的正弦波叠加。{

for(i=FIRNUMBER-1;i>0;i--)

fXn[i]=fXn[i-1];

fXn[0]=sin((double)fSignal1)+cos((double)fSignal2)/6.0;

fSignal1+=fStepSignal1;

if(fSignal1>=f2PI) fSignal1-=f2PI;

fSignal2+=fStepSignal2;

if(fSignal2>=f2PI) fSignal2-=f2PI;

return(fXn[0]);

}

floatFIR() //FIR滤波算法

{

floatfSum;

fSum=0;

for(i=0;i

{

fSum+=(fXn[i]*fHn[i]);

}

return(fSum);

}

六.实验结果

输入波形为一个低频率的正弦波与一个高频的正弦波叠加而成。

实验四无限冲激响应滤波器(IIR)算法

一.实验目的

1.掌握设计IIR数字滤波器的原理和方法。

2.熟悉IIR数字滤波器特性。

3.了解IIR数字滤波器的设计方法。

二.实验设备

PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000),安装CodeComposerStudio2.21软件。

三.实验原理

1.无限冲激响应数字滤波器的基础理论。

2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。3.数字滤波器系数的确定方法。

4.根据要求设计低通IIR滤波器:

要求:低通巴特沃斯滤波器在其通带边缘1kHz处的增益为-3dB,12kHz处的阻带衰减为30dB,采样频率25kHz。设计:

确定待求通带边缘频率fp1Hz、待求阻带边缘频率fs1Hz和待求阻带衰减-20logδsdB。

模拟边缘频率为:fp1=1000Hz,fs1=12000Hz

阻带边缘衰减为:-20logδs=30dB

用Ω=2πf/fs把由Hz表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1和Ωs1。Ωp1=2πfp1/fs=2π1000/25000=0.08π弧度

Ωs1=2πfs1/fs=2π12000/25000=0.96π弧度

计算预扭曲模拟频率以避免双线性变换带来的失真。

由w=2fstan(Ω/2)求得wp1和ws1,单位为弧度/秒。

wp1=2fstan(Ωp1/2)=6316.5弧度/秒

ws1=2fstan(Ωs1/2)=794727.2弧度/秒

由已给定的阻带衰减-20logδs确定阻带边缘增益δs。

因为-20logδs=30,所以logδs=-30/20,δs=0.03162

计算所需滤波器的阶数:

因此,一阶巴特沃斯滤波器就足以满足要求。

一阶模拟巴特沃斯滤波器的传输函数为:H(s)=wp1/(s+wp1)=6316.5/(s+6316.5)

由双线性变换定义s=2fs(z-1)/(z+1)得到数字滤波器的传输函数为:

因此,差分方程为:y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1]。5.程序流程图:

四.实验步骤

1.实验准备:

设置软件仿真模式,启动CCS

2.打开工程,浏览程序,工程目录为

C:\ICETEK\VC5416AES61\VC5416AES61\Lab0502-IIR\IIR.pjt。

3.编译并下载程序。

4.打开观察窗口:

选择菜单View->Graph->Time/Frequency…进行如下图所示设置。

选择菜单View->Graph->Time/Frequency…,进行如下设置:

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课程的实用性和趣味性。

DSP实验报告-深圳大学-自动化

深圳大学实验报告课程名称:DSP系统设计 实验项目名称:DSP系统设计实验 学院:机电与控制工程学院 专业:自动化 指导教师:杜建铭 报告人1:. 学号:。班级:3 报告人2:. 学号:。班级:3 报告人3:. 学号:。班级:3 实验时间: 实验报告提交时间: 教务处制

实验一、CCS入门试验 一、实验目的 1. 熟悉CCS集成开发环境,掌握工程的生成方法; 2. 熟悉SEED-DEC2812实验环境; 3. 掌握CCS集成开发环境的调试方法。 二、实验仪器 1.TMS320系列SEED-DTK教学试验箱24套 2. 台式PC机24台 三、实验内容 1.仿真器驱动的安装和配置 2. DSP 源文件的建立; 3. DSP程序工程文件的建立; 4. 学习使用CCS集成开发工具的调试工具。 四、实验准备: 1.将DSP仿真器与计算机连接好; 2.将DSP仿真器的JTAG插头与SEED-DEC2812单元的J1相连接; 3.启动计算机,当计算机启动后,打开SEED-DTK2812的电 源。SEED-DTK_MBoard单元的+5V,+3.3V,+15V,-15V的电源指示灯及SEED-DEC2812的电源指示灯D2是否均亮;若有不亮,请断开电源,检查电源。 五、实验步骤 (一)创建源文件 1.进入CCS环境。

2.打开CCS选择File →New →Source File命令 3.编写源代码并保存 4.保存源程序名为math.c,选择File →Save 5.创建其他源程序(如.cmd)可重复上述步骤。 (二)创建工程文件 1.打开CCS,点击Project-->New,创建一个新工程,其中工程名及路径可任意指定弹 出对话框: 2.在Project中填入工程名,Location中输入工程路径;其余按照默认选项,点击完成 即可完成工程创建; 3.点击Project选择add files to project,添加工程所需文件;

DSP实验报告

DSP实验报告 软件实验 1无限冲激响应滤波器(IIR) 算法 一.实验目的 1 .掌握设计IIR 数字滤波器的原理和方法。 2 .熟悉IIR 数字滤波器特性。 3 .了解IIR 数字滤波器的设计方法。 二.实验设备 PC 兼容机一台,操作系统为Windows2000( 或Windows98 ,WindowsXP ,以下默认为Windows2000) ,安装Code Composer Studio 2.21 软件。 三.实验原理 1 .无限冲激响应数字滤波器的基础理论。 2 .模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。 3 .数字滤波器系数的确定方法。 4 .根据要求设计低通IIR 滤波器: 要求:低通巴特沃斯滤波器在其通带边缘1kHz 处的增益为-3dB ,12kHz 处的阻带衰减为30dB ,采样频率25kHz 。设计: - 确定待求通带边缘频率fp1Hz 、待求阻带边缘频率fs1Hz 和待求阻带衰减-20log δsdB 。 模拟边缘频率为:fp1=1000Hz ,fs1=12000Hz 阻带边缘衰减为:-20log δs=30dB - 用Ω= 2πf/fs 把由Hz 表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1 和Ωs1 。 Ωp1=2 πfp1/fs=2 π1000/25000=0.08 π弧度 Ωs1=2 πfs1/fs=2 π12000/25000=0.96 π弧度 - 计算预扭曲模拟频率以避免双线性变换带来的失真。 由w=2fs tan( Ω/2) 求得wp1 和ws1 ,单位为弧度/ 秒。 wp1=2fs tan( Ωp1/2)=6316.5 弧度/ 秒 ws1=2fs tan( Ωs1/2)=794727.2 弧度/ 秒 - 由已给定的阻带衰减-20log δs 确定阻带边缘增益δs 。

北邮dsp软件实验报告

Matlab仿真实验 实验报告 学院:电子工程学院 专业:电子信息科学与技术 班级: 学号: 姓名:

时间:2015年12月23日 实验一:数字信号的FFT分析 1.实验目的 通过本次试验,应该掌握: (a)用傅里叶变换进行信号分析时基本参数的选择 (b)经过离散时间傅里叶变换和有限长度离散傅里叶变换后信号频谱上的区别,前者DTFT时间域是离散信号,频率域还是连续的,而DFT在两个域中都是离散的。(c)离散傅里叶变化的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。 (d)获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。(e)建立DFT从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用时数字音频压缩中的分析滤波器,例如DVD AC3和MPEG Audio。 2.实验容、要求及结果。 (1)离散信号的频谱分析: 设信号x(n)=0.001*cos(0.45n)+sin(0.3n)-cos(0.302n-) 此信号的0.3谱线相距很近,谱线0.45的幅度很小,请选择合适的序列长度N和窗函数,用DFT分析其频谱,要求得到清楚的三根谱线。 【实验代码】:

k=2000; n=[1:1:k]; x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4); subplot(2,1,1); stem(n,x,'.'); title(‘时域序列'); xlabel('n'); ylabel('x(n)'); xk=fft(x,k); w=2*pi/k*[0:1:k-1]; subplot(2,1,2); stem(w/pi,abs(xk)); axis([0 0.5 0 2]); title('1000点DFT'); xlabel('数字频率'); ylabel('|xk(k)|'); 【实验结果图】:

DSP运行实验报告

DSP运行实验报告 一、实验目的 熟悉CCS软件仿真下,DSP程序的下载和运行;熟悉借助单片机的DSP程序下载和运行; 熟悉借助仿真器的DSP程序下载和运行;熟悉与DSP程序下载运行相关的CCS编程环境。 二、实验原理 CCS软件仿真下,借用计算机的资源仿真DSP的内部结构,可以模拟DSP程序的下载和运行。 如果要让程序在实验板的DSP中运行、调试和仿真,可以用仿真器进行DSP程序下载和运行。初学者也可以不用仿真器来使用这款实验板,只是不能进行程序调试和仿真。 在本实验板的作用中,单片机既是串口下载程序的载体,又是充当DSP 的片外存储器(相对于FLASH),用于固化程序。 三、实验设备、仪器及材料 安装有WINDOWS XP操作系统和CCS3.3的计算机。 四、实验步骤(按照实际操作过程) 1、CCS软件仿真下,DSP程序的下载和运行。 第一步:安装CCS,如果不使用仿真器,CCS 的运行环境要设置成一个模拟仿真器(软仿真)。

第二步:运行CCS,进入CCS 开发环境。 第三步:打开一个工程。 将实验目录下的EXP01目录拷到D:\shiyan下(目录路径不能有中文),用[Project]\[Open]菜单打开工程,在“Project Open”对话框中选 EXP01\CPUtimer\CpuTimer.pjt,选“打开”, 第四步:编译工程。 在[Project]菜单中选“Rebuild All”,生成CpuTimer.out文件。 第五步:装载程序。 用[File]\[Load Program]菜单装载第四步生成CpuTimer.out文件,在当前工程目录中的Debug 文件夹中找到CpuTimer.out文件,选中,鼠标左键单击“打开”。

dsp实验报告

DSP 实验课大作业实验报告 题目:在DSP 上实现线性调频信号的脉冲压缩,动目标显示和动目标检测 (一)实验目的: (1)了解线性调频信号的脉冲压缩、动目标显示和动目标检测的原理,及其DSP 实现的整个流程; (2)掌握C 语言与汇编语言混合编程的基本方法。 (3)使用MATLAB 进行性能仿真,并将DSP 的处理结果与MATLAB 的仿真结果进行比较。 (二)实验内容: 1. MATLAB 仿真 设定信号带宽为B= 62*10,脉宽-6=42.0*10τ,采样频率为62*10Fs =,脉冲重复周期为-4T=2.4*10,用MATLAB 产生16个脉冲的线性调频信号,每个脉冲包含三个目标,速度和距离如下表: 对回波信号进行脉冲压缩,MTI ,MTD 。并且将回波数据和频域脉压系数保存供DSP 使用。 2.DSP 实现 在Visual Dsp 中,经MATLAB 保存的回波数据和脉压系数进行脉压,MTI 和MTD 。 (三)实验原理 1.脉冲压缩原理 在雷达系统中,人们一直希望提高雷达的距离分辨力,而距离分辨力定义为:22c c R B τ?==。其中,τ表示脉冲时宽,B 表示脉冲带宽。从上式中我们可以看

出高的雷达分辨率要求时宽τ小,而要求带宽B大。但是时宽τ越小雷达的平均发射功率就会很小,这样就大大降低了雷达的作用距离。因此雷达作用距离和雷达分辨力这两个重要的指标变得矛盾起来。然而通过脉冲压缩技术就可以解决这个矛盾。脉冲压缩技术能够保持雷达拥有较高平均发射功率的同时获得良好的距离分辨力。 在本实验中,雷达发射波形采用线性调频脉冲信号(LFM),其中频率与时延成正比关系,因此我们就可以将信号通过一个滤波器,该滤波器满足频率与时延成反比关系。那么输入信号的低频分量就会得到一个较大的时延,而输入信号的高频分量就会得到一个较小的时延,中频分量就会按比例获得相应的时延,信号就被压缩成脉冲宽度为1/B的窄脉冲。 从以上原理我们可以看出,通过使用一个与输入信号时延频率特性规律相反的滤波器我们可以实现脉冲压缩,即该滤波器的相频特性与发射信号时共轭匹配的。所以说脉冲压缩滤波器就是一个匹配滤波器。从而我们可以在时域和频域两个方向进行脉冲压缩。 滤波器的输出() h n= y n为输入信号() x n与匹配滤波器的系统函数() *(1) y n x n s N n =--。转换到频域就是--卷积的结果:* ()()*(1) s N n =。因此我们可以将输入信号和系统函数分别转化到频域:Y k X k H k ()()( Y k,然后将结果再转化到时域, h n H k →,进行频域相乘得() ()() x t X k →,()() 就可以得到滤波器输出:()() →。我们可用FFT和IFFT来实现作用域的 Y k y n 转换。原理图如下: 图1.脉冲压缩原理框图 2.MTI原理 动目标显示(MTI)技术是用来抑制各种杂波,来实现检测或者显示运动目标的技术。利用它可以抑制固定目标的信号,显示运动目标的信号。以线性调频

DSP实验报告

DSP实验报告

软件实验 1无限冲激响应滤波器(IIR) 算法 一.实验目的 1 .掌握设计IIR 数字滤波器的原理和方法。 2 .熟悉IIR 数字滤波器特性。 3 .了解IIR 数字滤波器的设计方法。 二.实验设备 PC 兼容机一台,操作系统为Windows2000( 或Windows98 ,WindowsXP ,以下默认为Windows2000) ,安装Code Composer Studio 2.21 软件。 三.实验原理 1 .无限冲激响应数字滤波器的基础理论。 2 .模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。 3 .数字滤波器系数的确定方法。 4 .根据要求设计低通IIR 滤波器: 要求:低通巴特沃斯滤波器在其通带边缘1kHz 处的增益为-3dB ,12kHz 处的阻带衰减为30dB ,采样频率25kHz 。设计: - 确定待求通带边缘频率fp1Hz 、待求阻带边缘频率fs1Hz 和待求阻带衰减-20log δsdB 。 模拟边缘频率为:fp1=1000Hz ,fs1=12000Hz 阻带边缘衰减为:-20log δs=30dB - 用Ω= 2πf/fs 把由Hz 表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1 和Ωs1 。 Ωp1=2 πfp1/fs=2 π1000/25000=0.08 π弧度 Ωs1=2 πfs1/fs=2 π12000/25000=0.96 π弧度 - 计算预扭曲模拟频率以避免双线性变换带来的失真。 由w=2fs tan( Ω/2) 求得wp1 和ws1 ,单位为弧度/ 秒。 wp1=2fs tan( Ωp1/2)=6316.5 弧度/ 秒 ws1=2fs tan( Ωs1/2)=794727.2 弧度/ 秒 - 由已给定的阻带衰减-20log δs 确定阻带边缘增益δs 。 因为-20log δs=30 ,所以log δs=-30/20 ,δs=0.03162

dsp实验报告5

一、实验原理: 1、无限冲击响数字滤波器的基础理论; 2、模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器); 3、双线性变换的设计原理。 二、实验内容: 1、复习有关巴特沃斯滤波器设计和用双线性变换法设计IIR数字滤波器的知识; 2、阅读本实验所提供的样例子程序; 3、运行CCS软件,对样例程序进行跟踪,分析结果; 4、填写实验报告。 5、样例程序实验操作说明 1)正确完成计算机、DSP仿真器和实验箱连接后,开关K9拨到右边,即仿真器选择连接右边的CPU:CPU2; 2)“A/D转换单元”的拨码开关设置: JP3 3)检查:计算机、DSP仿真器、实验箱是否正确连接,系统上电; 4)置拨码开关S23的1、2拨到OFF,用示波器分别观测模拟信号源单元的2号孔“信号源1”和“信号源2”输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直至满意,置拨码开关S23的1到ON,两信号混频输出; 三、程序分析: cpu_init(); //CPU初始化 fs = 25000; //设置采样频率为2500HZ nlpass = 0.18; //设置通带上限频率归一化参数为0.18 nlstop = 0.29; //设置阻带下限截止频率归一化参数为0.29 biir2lpdes(fs,nlpass,nlstop,a,b); 根据双线性变换法求滤波器的系数a和b set_int(); //调用低通滤波器子程序对信号进行滤波 中断程序注释: interrupt void int1()

{ in_x[m] = port8002; //读取port8002端口的数值 in_x[m] &= 0x00FF; //取后八位送入X[m] m++; //每取一个数字m加1 intnum = m; if (intnum == Len) //当取到128个字节时,重新读取port8002端口的数值 { intnum = 0; xmean = 0.0; for (i=0; i

DSP实验报告二CCS的使用

实验二 CCS使用操作:报告: 1.实验目的 (1) 熟悉CCS集成开发环境,掌握工程的生成方法。 (2) 掌握CCS集成开发环境的调试方法。 2.实验容及步骤 (1)查阅CCS发展历史,给出CCS发展的版本和适用的芯片。 Code Composer Studio 包含一整套用于开发和调试嵌入式应用的工具。它包含适用于每个TI 器件系列的编译器、源码编辑器、项目构建环境、调试器、描述器、仿真器以及多种其它功能。CCS IDE 提供了单个用户界面,可帮助您完成应用开发流程的每个步骤。借助于精密的高效工具,用户能够利用熟悉的工具和界面快速上手并将功能添加至他们的应用。 版本 4 之前的 CCS 均基于 Eclipse 开放源码软件框架。Eclipse 软件框架可用于多种不同的应用,但是它最初被开发为开放框架以用于创建开发工具。我们之所以选择让 CCS 基于Eclipse ,是因为它为构建软件开发环境提供了出色的软件框架,并且正成为众多嵌入式软件供应商采用的标准框架。CCS 将 Eclipse 软件框架的优点和仪器 (TI) 先进的嵌入式调试功能相结合,为嵌入式开发人员提供了一个引人注目、功能丰富的开发环境。 CCS 有 2 个版本:白金版和微处理器版。各版本支持的处理器不同。支持的核白金版:TMS320C6000、TMS320C5000、TMS320C2800、TMS470、TMS570、ARM 7、ARM9、ARM 11、ARM Cortex M3(不包含 Stellaris Cortex M3)、ARM Cortex R4、ARM Cortex A8 和 MSP430 处理器版:TMS320C2800 和MSP430 CCS 白金版和微处理器版都使用以下各项:主机:PC 操作系统:Microsoft Windows Vista 和 XP (2) 使用CCS时,经常遇到下述扩展名文件,说明分别是什么文件。 ①project. mak :即MAKE文件,VC4及以前版本使用的工程文件,用来指定如何建立一个工程, VC6把MAK文件转换成DSP文件来处理。 ②program. c :定义的变量、数组、函数的声明 ③program. asm :Oracle管理文件(OMF) ④filename. h :H C程序头文件 ⑤filename. lib :LIB 库文件 ⑥project. cmd :CMD Windows NT,OS/2的命令文件;DOS CD/M命令文件;dBASEⅡ程序文件 ⑦program. obj :OBJ 对象文件 ⑧program. Out: C语言输出文件 ⑨project. Wks :WKS Lotus 1-2-3电子表格;Microsoft Works文档 保存配置文件时产生的文件: ①programcfg.cmd 连接器命令文件 ②programcfg.h54 头文件 ③programcfg.s54 汇编源文件 DSP源文件的建立;

DSP硬件实验报告北邮

北京邮电大学DSP硬件实验报告 学院: 电子工程学院 专业: 姓名: 学号: 班级:

实验一常用指令实验 一、实验目的 熟悉DSP开发系统的连接 了解DSP开发系统的组成和结构和应用系统构成 熟悉常用C54X系列指令的用法(程序寻址,寄存器,I/O口,定时器,中断控制)。 二、实验步骤与内容 (一)简单指令程序运行实验 源程序: ;File Name:exp01.asm ;the program is compiled at no autoinitialization mode --程序在非自动初始化模式下编译 .mmregs --(enter memory-mapped registers into the symbol table) --进入记忆映射注册进入符号表 .global _main --(identify one or more global(external)symbols)--定义一个或多个全局变量 _main: stm(累加器的低端存放到存储器映射寄存器中) #3000h,sp(堆栈指针寄存器);堆栈指针的首地址设为#3000h ssbx(状态寄存器位置位)xf ;状态寄存器位置位,灯亮 call (非条件调用,可选择延迟)delay(存储器延时) ;调用delay函数延时 rsbx(状态寄存器复位)xf ;状态寄存器位复位,灯灭 call delay ;调用delay函数延时 b (累加器)_main ;可选择延迟的无条件转移,循环执行 nop(无操作) nop ;delay .5 second delay: ;延迟0.5秒 stm 270fh,ar3 (辅助寄存器3) ;把地址存放到存储器映射寄存器中 loop1: stm 0f9h,ar4 (辅助寄存器4);把地址存放到存储器映射寄存器中 loop2: banz loop2,*ar4- ;AR4不为0时转移,指针地址减一

DSP实验报告

实验一 离散系统的时域分析 一、实验目的 1、掌握离散时间信号的MATLAB 表示; 2、信号运算; 3、差分方程的求解; 4、离散时间信号的卷积运算。 二、实验原理 1、离散时间信号 离散时间信号只在某些离散的瞬时给出函数值,而在其他时刻无定义。它是时间上不连续按一定先后次序排列的一组数的集合,称为时间序列,用x(n)表示,n 取整数代表时间的离散时刻。 在matlab 中用向量来表示一个有限长度的序列。 2、序列的类型 为了分析的方便,在数字信号处理中规定了一些基本的序列。 a) 单位采样序列 function [x,n]=impseq(n1,n2,n0) n=[n1:n2]; x=[(n-n0)==0]; 调用该函数 [x,n]=impseq(-2,8,2); stem(n,x) 0010()001()0n n n n n n n n n δδ =?=? ≠? =?-? ≠?

单位采样序列的另一种生成方法 n0=-2; n=[-10:10]; nc=length(n); x=zeros(1,nc); for i=1:nc if n(i)==n0 x(i)=1 end end stem(n,x) b) 单位阶跃序列 function [x,n]=stepseq(n1,n2,n0) n=[n1:n2]; x=[(n-n0)>=0]; 调用该函数 [x,n]=stepseq(-2,8,2); stem(n,x) 000 10()001()0n n n n n n n n n εε >=?=? =?-?

c) 实数指数序列 x(n)=an (运算符“.^”) n=[0:10]; x=0.9.^n; stem(n,x) d) 复数指数序列 n=[-10:10]; alpha=-0.1+0.3*j; x=exp(alpha*n); real_x=real(x); image_x=imag(x); mag_x=abs(x); phase_x=angle(x); subplot(2,2,1); stem(n,real_x) subplot(2,2,2); stem(n,image_x) subplot(2,2,3); stem(n,mag_x) subplot(2,2,4); stem(n,phase_x) ()()j n x n e αω+=(0.1j0.3)n x(n)e (10n 10) -+= -<<

DSP技术及课程设计实验报告二(精)

东南大学自动化学院 实验报告 课程名称: D SP 原理及C 程序开发 第二次实验 实验名称:基于DSP 系统的实验——指示灯、拨码开关和定时器院(系):自动化专业:自动化 姓名:学号: 实验室:实验组别: 同组人员:实验时间:2012 年 4 月 18日 评定成绩:审阅教师: 第一部分实验:基于DSP 系统的实验——指示灯和拨码开关 一.实验目的 1. 了解ICETEK –F28335-A 评估板在TMS320F28335DSP 外部扩展存储空间上的扩展。 2. 了解ICETEK –F28335-A 评估板上指示灯和拨码开关扩展原理。 3. 学习在C 语言中使用扩展的控制寄存器的方法。 二.实验设备 计算机,ICETEK –F28335-A 实验箱(或ICETEK 仿真器+ICETEK–F28335-A 评估板+相关连线及电源)。 三.实验原理

1.TMS320F28335DSP 的存储器扩展接口 存储器扩展接口是DSP 扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。 -ICETEK –F28335-A 评估板在扩展接口上除了扩展了片外SRAM 外,还扩展了指示灯、DIP 开关和D/A 设备。具体扩展地址如下: 0x180004- 0x180005:D/A 转换控制寄存器 0x180001:板上DIP 开关控制寄存器 0x180000:板上指示灯控制寄存器 -与ICETEK –F28335-A 评估板连接的ICETEK-CTR 显示控制模块也使用扩展空间控制主要设备: 208000-208004h :读-键盘扫描值,写-液晶控制寄存器 208002-208002h :液晶辅助控制寄存器 208003-208004h :液晶显示数据寄存器 2.指示灯与拨码开关扩展原理

DSP实验报告重叠保留法和重叠相加法(精)

北京邮电大学 实 学班姓学 日 验报告 MATLAB 实现线性卷积运算院:信息与通信工程学院级:名: ______ 号: 期: 实验名称:用 索引

一、实验原 理 ..................................................................................................................... 3 1、算法产生背景 (3) 2、算法基本思 想 ...........................................................................................................................3 1)重叠相加法 (3) 2)重叠保留 法 ...........................................................................................................................4 二、流程图设计 . ................................................................................................................. 5 1、重叠相加 法 . .............................................................................................................................. 5 2、重叠保留 法 . (6) 三、MATLAB 源代 码 . ........................................................................................................... 7 1、重叠相加源码 ...........................................................................................................................7 2、重叠保留源 码 ...........................................................................................................................8 四、实验结果与分析 ........................................................................................................... 9 ①调用CONV (计 算 . ......................................................................................................................... 9 ②测试重叠相加算法 (9) ③测试重叠保留算 法 .....................................................................................................................9 五、讨论与总结 . ............................................................................................................... 10 1、算法效率分 析: .....................................................................................................................10 A. 重叠相加法 . (10)

DSP实验报告模版

我们做的dsp实验是实验一,实验二,实验三!模板上只有1 3 !2要自己仿照实验一写! 不要弄错了!实验题目在另外一个共享表格里! 实验一数据存储实验 一、实验目的 1. 掌握ccs的使用 2. 掌握 tms320c54x 程序空间的分配; 3. 掌握 tms320c54x 数据空间的分配; 4. 能够熟练运用tms320c54x 数据空间的指令。 二、实验设备 计算机,ccs 3.1版软件,dsp仿真器,e300实验箱,dsp-54xp cpu板。 三、实验步骤与内容 1. 在进行 dsp实验之前,需先连接好仿真器、实验箱及计算机,连接方法如下所示: 2. e300 底板的开关sw4 的第1位置on,其余位置off。其余开关设置为off。 sw5全部置on;其余开关不做设置要求 3. 上电复位 在硬件安装完成后,确认安装正确、各实验部件及电源连接无误后,启动计算机,接通仿真器电源,此时,仿真器上的“红色指示灯”应点亮,否则dsp开发系统与计算机连接存在问题。 4. 运行ccs程序 1) 待计算机启动成功后,实验箱220v电源置“on”,实验箱上电 2) 启动ccs3.1,进入ccs界面后,点击“debug—connect” 3) 此时仿真器上的“绿色指示灯”应点亮,ccs正常启动,表明系统连接正常;否则仿真器的连接、jtag 接口或ccs 相关设置存在问题,这时需掉电检查仿真器的连接、jtag 接口连接是否正确,或检查ccs相关设置是否存在问题。 5. 成功运行ccs 程序后,首先应熟悉ccs的用户界面; 6. 学会在ccs环境下创建工程文件、添加程序文件、编写程序、编译、装载、调试,学习如何使用观察窗口等。 7. 用“project\open”打开“c:\ti5000\myprojects\01_mem\ mem.pjt”. 编译并装载“\ 01_mem\debug\mem.out” 8.用“edit”下拉菜单中的“memory/fill”编辑内存单元,参数设置如下图: 单击“ok”此时以0x1000 为起始地址的16个内存单元被修改成:0x0009 9.用“view”下拉菜单“memory”观察内存单元变化,输入要查看的内存单元地址,本实验要查看0x1000h~0x100fh 单元的数值变化,输入地址0x1000h; 单击“ok”如下图所示: 10. 点击“debug\go main”进入主程序,在程序中“加软件断点1”和“加软件断点2”处 施加软件断点。 11. 单击“debug\run”运行程序,也可以“单步”运行程序;当程序运行到“软件断点1” 处时,查看0x1000h~0x1007h单元的值变化, 12. 再单击“debug\run”,当程序运行到“软件断点2”处时,查看0x1008~0x100f

DSP实验报告一

电子信息工程系实验报告 课程名称:现代DSP技术 成绩: 实验项目名称:I/O实验实验时间: 2011-10-18 指导教师(签名): 班级:电信082 姓名:李江水学号:810706210 实验目的 1、了解I/O口的扩展;掌握I/O口的操作方法; 2、熟悉在C语言中访问IO口的方法 3、了解数字量与模拟量的区别和联系。 实验设备 计算机,CCS 2.0版软件,DSP仿真器,实验箱。 实验原理 1、开关量输入输出单元 采用8位的数字量输入即由八拨码开关来控制LED灯的显示,当拨码开关都是低电平即都为0时,LED 灯全亮,反之则不亮。。 2、CPU初始化 第一步:时钟模式寄存器的初始化clkmd; 第二步:状态寄存器st0、st1的初始化,复位值为0x1800、0x6900; 第三步:处理器工作模式状态寄存器(PMST)的初始化; 第四步:软件等待状态寄存器、软件等待状态控制寄存器的初始化; 第五步:分区转换控制寄存器(BSCR)初始化。 第六步: *(unsigned int*)IMR=0x0;屏蔽所以中断,IMR为中断屏蔽寄存器。 *(unsigned int*)IFR=0xffff;IFR为中断标志寄存器,中断标志清0 实验步骤与结果分析 开关K9拨到右边,即仿真器选择连接右边的CPU:CPU2;启动CCS 2.0,在Project→Open菜单打开exp03_cpu2目录下面的工程文件“exp03.pjt”。用下拉菜单中Project-->Open,打开“exp03_cpu2\ exp03.pjt”,双击“Source”,可查看源程序。 在File→Load Program菜单下加载exp03_cpu2\debug目录下的exp03.out文件。 运行程序,分别调整开关量输入单元的开关K1~K8,观察LED指示灯LED1~LED8亮灭的变化,以及开关量输入和输出状态是否一致。关闭所有窗口,本实验完毕。 分别调整K1到K8的开关,当开关为低电平即为零时,LED灯亮,当开关为高电平即为1时,LED灯不亮。当K1、K3、K5、K7为0时,LED灯的显示如下图1。

DSP实验报告+心得体会

龙岩学院 实验报告 班级07电本(1)班学号2007050344 姓名杨宝辉同组人独立 实验日期2010-5-18 室温大气压成绩 基础实验 一、实验目的 1. 掌握CCS实验环境的使用; 2. 掌握用C语言编写DSP程序的方法。 二、实验设备 1. 一台装有CCS软件的计算机; 2. DSP实验箱的TMS320F2812主控板; 3. DSP硬件仿真器。 三、实验原理 浮点数的表达和计算是进行数字信号处理的基本知识;产生正弦信号是数字信号处理中经常用到的运算;C语言是现代数字信号处理表达的基础语言和通用语言。写实现程序时需要注意两点:(1)浮点数的范围及存储格式;(2)DSP的C语言与ANSI C语言的区别。 四、实验步骤 1.打开CCS 并熟悉其界面; 2.在CCS环境中打开本实验的工程(Example_base.pjt),编译并重建.out 输出文件,然后通过仿真器把执行代码下载到DSP芯片中; 3.把X0 , Y0 和Z0添加到Watch窗口中作为观察对象(选中变量名,单击鼠标右键,在弹出菜单中选择“Add Watch Window”命令); 4.选择view->graph->time/frequency…。设置对话框中的参数: 其中“Start Address”

设为“sin_value”,“Acquisition buffer size”和“Display Data size”都设为“100”,并且把“DSP Data Type”设为“32-bit floating point”, 设置好后观察信号序列的波形(sin函数,如图); 5.单击运行; 6.观察三个变量从初始化到运算结束整个过程中的变化;观察正弦波形从初始化到运算结束整个过程中的变化; 7.修改输入序列的长度或初始值,重复上述过程。 五、实验心得体会 通过本次实验,加深了我对DSP的认识,使我对DSP实验的操作有了更进一步的理解。基本掌握了CCS实验环境的使用,并能够使用C语言进行简单的DSP程序设计。 从软件的安装到使用软件进行程序设计与仿真,锻炼了自己的动手能力,也遇到了不少的坎坷,例如芯片的选择,不能因为麻烦而省略该步骤,否则将会运行出错。

DSP实验报告5

DSP 第五次实验 1.实验目的: (1)进一步熟悉matlab 实验环境和语言。 (2)掌握求序列圆周翻褶的MATLAB 方法。 (3)掌握求序列DFT 及IDFT 矩阵的MATLAB 方法。 (4)掌握用MATLAB 求解用圆周卷积计算线性卷积的时域的方法。 (5)掌握用FFT 计算有限长序列的线性卷积和线性相关的方法。 2.实验内容及总结: 1.圆周翻褶 【例3.27】 已知()[2,3,4,5,6],8X n N ==,求x(n)的8点圆周翻褶序列88(())()x n R n -。 代码: clc;clear all x=[2,3,4,5,6];N=8; x=[x,zeros(1,N-length(x))];nx=0:N-1 y=x(mod(-nx,N)+1); subplot(121),stem([0:N-1],x);title('原序列'); xlabel('n');ylabel('x(n)');grid; subplot(122),stem([0:N-1],y);title('圆周翻褶序列'); xlabel('n');ylabel('x((n))8 R8(n)');grid; 结果:

总结: 对于圆周翻褶 (0),0 ()(())() (),11 N N x n y n x n R n x N n n N = =-=? -≤≤-MA TLAB可用 y=x(mode(-nx,N)+1)求得。因此,要求X(n)=[2,3,4,5,6],N=8的8点圆周翻褶序列,要先将x(n)补零到8点长度再求圆周翻褶。 x=[x,zeros(1,N-length(x))];nx=0:N-1 %x补零到8点长 y=x(mod(-nx,N)+1); %圆周翻褶从一开始,因此得到8点长 %序列,应该再加一 2.DFT矩阵,IDFT矩阵 【例3.29】已知N=4的DFT矩阵w4,求IDFT矩阵w4I。 代码:

DSP实验报告

DSP实验报告 电子111班 刘卓 112099 同组人:张顺 112108

指令实验 一、实验目的 1、了解DSP的结构及引脚功能; 2、掌握DSP的基本指令。 二、实验要求 了解怎样对DSP进行简单的编程操作、运算控制等基本汇编语言及算术语言、实验测试及除错验证。 三、实验步骤 见教材342页。 四、实验结果 1、直观结果 .title "ex1" .mmregs .def _c_int00 DAT0 .SET 60H DAT1 .SET 61H DAT2 .SET 62H DAT3 .SET 63H .text ADD3 .MACRO P1,P2,P3,ADDRP LD P1,A ADD P2,A ADD P3,A STL A,ADDRP .ENDM _c_int00:B start start: LD #004h,DP ;DP=0004,ST0=1804 STM #1000h,SP ;SP=1000 SSBX INTM ;INTM=1 bk0: ST #0012h,DAT0 ;D(0x0260)=0x0012 LD #0023h,A ;A=0000000023 ADD DAT0,A ;A=0000000035,ST0=1004,C=0 NOP NOP bk1: ST #0054h,DAT0 ;D(0x0260)= 0x0054 LD #0002h,A ;A=0000000002 SUB DAT0,A ;A=FFFFFFFFAE NOP NOP bk2: ST #0345h,DAT0 ;D(0x0260)=0x0345 STM #0002h,T ;T=0002

DSP实验报告3

DSP 实验报告3 姓名 学号 时间 2015.6.9 地点 实验大楼A631 实验题目 卷积运算 一、 实验目的 1、学习如何用DSP 的C 语言程序实现卷积与相关的计算; 2、学习用CCS 调试程序的详细过程; 3、学习如何设置断点。 二、 实验内容及步骤 1、创建一个新项目工程 将“maxminmath 文件夹”复制到“D:\CCStudio_v3.3\MyProjects ”下。 2、打开工程调试程序,并说明程序的功能; 3、编程实现以下功能: 已知()()n R n x 4=,()()n R n h 4=,求()()()n h n x n y *= a 、采用子程序调用的方式实现,并且注释程序; b 、把x ,h 和y 添加到Watch 窗口中作为观察对象; c 、观察三个数组从初始化到卷积运算结束整个过程中的变化(可单击变量名前的“+”号把数组展开),并将变化过程记录下来。 三、 实验程序 给出卷积运算的子程序: void main() { int x[7]={0,0,0,1,1,1,1},h[7]={1,1,1,1,0,0,0},y[7]={0}; int i,j; for(i=0;i<7;i++) for(j=0;j<7;j++) {if(i+j<7) y[i]=y[i]+x[i+j]*h[j]; y[i]=y[i]%2;} } 评 阅

四、实验结果 y值的变化情况如下: 五、实验思考题 1、试用汇编语言编写实现卷积运算的程序; .global start ;定义全局变量 .mmregs .data; 开始数据段 .bss m,1; 开设全局变量,每个变量占用一个字 .bss n,1 .bss z,1 .text; 开始文本段 start: ST #1000h,AR1 ST #3000h,AR2 ST #5000h,AR3 ST #0,@m RPT 999 RPT m+ LOOP: MVPD 6000h MVDD *AR1+,*AR4 MVDD *AR2+,*AR5 MACP *AR4,*AR5,src B LOOP ST A,*AR3+ xh: b xh;空循环 .end

相关文档
最新文档