DSP实验报告1

时间:2024.3.31

实验报告

课程名称:DSP技术及应用学号姓名:

实验2.1 基础实验

一、实验目的

1. 掌握CCS3.3实验环境的使用;

2. 掌握用C语言编写DSP程序的方法。

二、实验设备

1. 一台装有CCS3.3软件的计算机;

2. DSP实验箱的TMS320F2812主控板;

3. DSP硬件仿真器。

三、实验原理

浮点数的表达和计算是进行数字信号处理的基本知识;产生正弦信号是数字信号处理中经常用到的运算;C语言是现代数字信号处理表达的基础语言和通用语言。写实现程序时需要注意两点:(1)浮点数的范围及存储格式;(2)DSP的C语言与ANSI C语言的区别。

四、实验步骤

1、在CCS3.3环境中打开本实验的工程(Example_base.pjt)[位置为:/ Example_2812/ Example_math/ Example_base],此文件是C程序,连接(project-connect),出现汇编。

2、选择file-load program编译并重建 .out 输出文件,然后通过仿真器把执行代码下载到DSP芯片中;

3、选中变量名X0 , Y0 和Z0,单击鼠标右键,在弹出菜单中选择“Add Watch Window”命令,把X0 , Y0 和Z0添加到Watch窗口中作为观察对象。

4、选择view->graph->time/frequency… 。 设置对话框中的参数: 其中“Start Address”设为“sin_value”,“Acquisition buffer size”和“Display Data size”都设为“100”,并且把“DSP Data Type”设为“32-bit floating point”。

五、实验代码

#include "math.h"

#include "stdio.h"

#define N 100

#define pi 3.14159

float sin_value[100];

float X0,Y0,Z0;

void main(void)

{

int i;

for(i=0;i

sin_value[i]=0;

X0=0.5; /* 0.100 0000 0000 0000 */

Y0=0.5; /* 0.100 0000 0000 0000 */

Z0=X0*Y0; /* 00.01 0000 0000 0000 0000 0000 0000 0000 */

for(i=0;i

sin_value[i]=100*(sin(2*pi*i/N));

}

六、实验现象

设置好后观察信号序列的波形(sin函数,如图);

七、思考题

1. 试用C语言编写实现其他数学运算的程序;

题:用C语言求5!

程序:

#include

void main()

{

int i,t;

t=1;

i=2;

while(i<=5)

{t=t*i;

i=i+1;}}

八、实验小结

本次试验是初次接触DSP硬件仿真器,将DSP实验箱的TMS320F2812主控板与一台装有CCS3.3软件的计算机连接,就可以进行仿真,打开相应的工程文件,将程序代码下载到DSP芯片,改变相应参数,运行即可看到程序运行的结果。

实验报告

课程名称:DSP技术及应用学号姓名:

实验2.4 快速傅里叶变换 (FFT) 实现

一、实验目的

1. 掌握FFT算法的基本原理;

2. 掌握用C语言编写DSP程序的方法。

二、实验设备

1. 一台装有CCS3.3软件的计算机;

2. DSP实验箱的TMS320F2812主控板;

3. DSP硬件仿真器。

三、实验原理

离散信号x(n)的傅里叶变换可以表示为 

, 

式中的WN称为蝶形因子,利用它的对称性和周期性可以减少运算量。

时间抽取FFT是将N点输入序列x(n) 按照偶数项和奇数项分解为偶序列和奇序列。偶序列为:x(0), x(2), x(4),…, x(N-2);奇序列为:x(1), x(3), x(5),…, x(N-1)。这样x(n) 的N点DFT可写成:

单个蝶形运算示意图如下:

以N=8为例,时间抽取FFT的信号流图如下:

从上图可以看出,输出序列是按自然顺序排列的,而输入序列的顺序则是“比特反转”方式排列的。也就是说,将序号用二进制表示,然后将二进制数以相反方向排列,再以这个数作为序号。如011变成110,那么第3个输入值和第六个输入值就要交换位置了。本实验中采用了一种比较常用有效的方法完成这一步工作__雷德算法。

四、实验步骤

1、在CCS3.3环境中打开本实验的工程(Example_fft.pjt),此文件是C程序,连接(project-connect),出现汇编。

2、选择file-load program编译并重建 .out 输出文件,然后通过仿真器把执行代码下载到DSP芯片中;

3. 运行程序;

4. 选择view->graph->time/frequency… 。 设置对话框中的参数: 其中“Start Address”设为“x_re”,“Acquisition buffer size”和“Display Data size”都设为“64”,并且把“DSP Data Type”设为“32-bit floating point”(如图),设置好后观察输入信号序列的波形(单边指数函数,如图);

同样方法观察经DFT变换后的输出序列“y_re”的波形,“Start Address”改为“y_re”,其余参数不变(如图);

5. 在Watch窗口中添加i, j, k, m, n, a, b ,c 等变量,在Debug菜单中先“Restart”然后 “Go main”, 单步运行程序,跟踪FFT算法的过程;(可以跳过程序开始部分对各个数组的赋值代码,方法是在雷德算法的第一行代码前设置断点,然后先单击运行,待程序停在该断点后再单步执行后面的代码,见下图。)

五、实验代码

/* Program for FFT */

#include

#include

const float pi=3.1415926;

int N=64; /* FFT点数 */

float x_re[64], x_im[64]; /* 输入信号序列 */

float y_re[64], y_im[64]; /* 输出频谱序列 */

float w_re, w_im; /* 蝶形因子 */

int m; /* 蝶形运算的级数,即Log2(N) */

float t_re, t_im, v_re, v_im; /* 临时变量 */

int j,i,k,f,n;

int a, b, c;

void main()

{

/* 初始化数据空间 */

for(i=0; i<64; i++)

{

x_re[i]=0;

x_im[i]=0;

}

/* 设定输入信号序列为单边指数函数 */

/* 考虑到实际衰减很快,因此可以忽略后面大半部分数值 */

for(i=0;i<=N;i++)

{

x_re[i]=cos(-16*pi*i/N);

x_im[i]=sin(-16*pi*i/N);

}

/* 复制到输出数组 */

for(i=0; i<64; i++)

{

y_re[i]=x_re[i];

y_im[i]=x_im[i];

}

/* 用雷德算法对输入信号序列进行倒序重排 */

j=0;

for(i=0;i

{

if(i

{

t_re=y_re[j];

t_im=y_im[j];

y_re[j]=y_re[i];

y_im[j]=y_im[i];

y_re[i]=t_re;

y_im[i]=t_im;

}

k=N/2;

while((k<=j)&(k>0))

{

j=j-k;

k=k/2;

}

j=j+k;

}

/* 计算蝶形运算的级数log2(N) */

f=N;

for(m=1; (f=f/2)!=1; m++);

/*** FFT ***/

for(n=1; n<=m; n++)

{

a=1; /* a=2的n次方 */

for(i=0;i

a=a*2;

b=a/2;

v_re=1.0; /* 蝶形因子 */

v_im=0.0;

w_re=cos(pi/b);

w_im=-sin(pi/b);

for(j=0;j

{

for(i=j;i

{

c=i+b;

t_re=y_re[c]*v_re-y_im[c]*v_im;

t_im=y_re[c]*v_im+y_im[c]*v_re;

y_re[c]=y_re[i]-t_re;

y_im[c]=y_im[i]-t_im;

y_re[i]=y_re[i]+t_re;

y_im[i]=y_im[i]+t_im;

}

t_re=v_re*w_re-v_im*w_im;

t_im=v_re*w_im+v_im*w_re;

v_re=t_re;

v_im=t_im;

}

}

while(1);

}

六、实验小结

本次试验实现快速傅里叶变换,相应的工程文件已存在,快速傅里叶变换的运行时间长、运行速度慢,可通过软件仿真七实现仿真。方法是:打开Setup CCStudio v3.3添加F2812 Device Simulator在弹出的窗口中双击CPU(软件仿真不需要进行连接connect),然后就与硬件仿真器的步骤相似。

实验报告

课程名称:DSP技术及应用学号姓名:

实验3.2 蜂鸣器报警实验

一、实验目的

1. 掌握2812 IO控制方法;

二、实验设备

1. 一台装有CCS3.3软件的计算机;

2. DSP实验箱;

3. DSP硬件仿真器;

三、实验原理

复用控制寄存器 --- GPxMUX (0---数字IO,1---专用外设功能)

方向控制寄存器 --- GPxDIR (0---输入,1---输出)

量化控制寄存器 --- GPxQUAL (0---无量化,1---量化范围0x00--0xff)

I/O数据寄存器 --- GPxDAT (0---输出--引脚置低,1---输出--引脚置高)

I/O置位寄存器 --- GPxSET (0---无变化,1---引脚置为高)

I/O清零寄存器 --- GPxCLEAR (0---无变化,1---引脚置为低)

单独触发寄存器 --- GPxTOGGLE (0---无变化,1---引脚置电平跳变一次)

2812中可以通过设置上述特定寄存器来改变相应IO输出管脚电平高/低,从而驱动蜂鸣器发出一定频率的声音,通过改变程序中高低电平切换周期可以实现蜂鸣器声音“尖锐”到“低沉”的变化。

相关原理图:

四、实验步骤

1. 把2812主控板插到实验箱底板相应接口上;

2. 连接好DSP开发系统;

3. 本实验工程Example_Buzzer,此文件是C程序,连接(project-connect),出现汇编。编译,下载程序到DSP;

4、选择file-load program编译并重建 .out 输出文件,然后通过仿真器把执行代码下载到DSP芯片中;

5、运行程序,观察2812主控板上相应位置蜂鸣器的发声情况。

五、实验代码

#include "DSP281x_Device.h"

#include "DSP281x_Examples.h"

#include "math.h"

int i[12];

unsigned int k=0;

uint32_t index=0;

unsigned int l=0;

long unsigned int c1;

Uint16 key, buf;

Uint16 HighAdc_Buf;

void main(void)

{

for(c1=0;c1<20000;c1++)

{

GpioDataRegs.GPBDAT.bit.GPIOB15=0;//蜂鸣器控制管脚GPIOB15

Delay(20000);

GpioDataRegs.GPBDAT.bit.GPIOB15=1;

Delay(20000);

}

for(;;);

}

六、实验结果

运行程序,则蜂鸣器发声;停止运行,则蜂鸣器不发声。

七、实验小结

本次实验中,蜂鸣器内阻较小且是一个感性负载,一般不用DSP芯片I/O口直接对它进行操作,所以最好加个驱动三极管,在要求较高的场合还会加上反向保护二极管。通过实验原理图可知,三极管用了PNP(9015)型,所以要使蜂鸣器发声只要给BELLALARM交替置低置高电平即可。


第二篇:“DSP技术”标准实验报告(1-4)


电子科技大学信息与软件工程学院

(实验)课程名称DSP技术

电子科技大学教务处制表

告(一)

学生姓名:号:指导教师:

实验地点:实验时间:

一、实验室名称:信息工程方向专业实验室

二、实验项目名称:CCS基本使用

三、实验学时:4学时

四、实验原理:

CCS为DSP开发的集成开发环境,并提供软仿真工具Simulator。

五、实验目的:

目的是掌握project使用,代码编辑工具,build工具,debug,断点,代码跟踪,内存/变量/寄存器查看,图形工具,代码剖析工具等。

六、实验内容:

内容是产生sin信号并画图和调用imagelib完成一个图像的边缘提取。上机完成以下编程实验,调试运行程序并完成报告。基本实验内容:

1. 创建一个project, 打印“Hello World !” (simulaotor: 可以是c5500, c5400, c6000等,也可以是ARM,M3等),了解CCS开发环境的基本使用,包括代码编辑、编译(Build)、以及调试运行。(注意:这个实验中,可以没有CMD文件。但若要添加CMD,请在使用适当的CMD文件。)CCS开发环境的基本要点:

(1)新建工程文件(project)、

(2)添加文件:源代码、库、CMD等、

(3)build、

(4)创建目标板配置文件并添加到project中

(5)运行及调试

2. 在TMS320C674x的simulator下完成一个正弦信号产生,并在CCS下画出其波形。(帮助:Code Composer Help > Views and Editors > Graph Views)

3. 在TMS320C6747的simulator下完成输入图像的边缘检测,并在CCS中显示处理结果。

扩展研究问题:(下面这些共有兴趣的同学研究,但不限于这些问题)

1. 代码剖析:分析sobel算子处理图像的时间。并对比另外一个函数IMG_sobel_3x3_8_c,看看他们的处理时间是否一样?

2. 研究CMD定位文件,看看函数、变量的地址情况。

3. 断点、变量查看窗口、反汇编窗口、调试运行命令的学习。

4. 自己写一个函数,将输入图像翻转或镜像处理,并显示结果。

……

七、实验器材(设备、元器件):

硬件要求:PC机,CPU PII 以上,1GB 内存,100G硬盘空间即可。

软件要求:CCSV5,Simulator

八、实验步骤、实验编程与运行结果

九、扩展研究内容(完成实验内容中提到的或自己提出的研究、学习内容,非必选项)

九、实验结论:

十、总结及心得体会:

十一、对本实验过程及方法、手段的改进建议:

报告评分:

指导教师签字:

告(二)

学生姓名:号:指导教师:

实验地点:实验时间:

一、实验室名称:信息工程方向专业实验室

二、实验项目名称:定点数运算

三、实验学时:4学时

四、实验原理:

CCS为DSP开发的集成开发环境,并提供软仿真工具Simulator。

在定点数的结构中,小数点的位置是固定的,常用的Q15格式小数表述如下图所示:


S XXX XXXX XXXX XXXX

符号bit 小数部分

Q15格式只是定点数的一种常用的表示方式。一般来讲,使用Qm.n的格式来表示定点数,其中,m表示整数部分比特个数,n表示小数部分比特个数。整数和小数部分都使用2的补码形式。这种形式的定点数,加上符号bit,总共有m+n+1个bits,能表示的数的范围为(-2m, 2m-2-n),最小的小数的精度为2-n

所以,要完成相关定点数运算,需要注意下面几个步骤:

(1) 使用正确、适当的格式来表示参加运算的数;

(2) 明确定点运算结果的数据范围;

(3) 使用正确的加法和乘法指令完成定点运算;

五、实验目的:

目的是掌握定点数的表示方法以及定点数的基本算术运算,包括加、减、乘的基本技能。

六、实验内容:

在CCS的Simulator编程完成定点数运算。基本内容要求为:

(1) 0.35 + 0.62 = ?

(2) 0.45 x 0.23 = ?

(3) 0.75 ? 1.24 =?

(4) 0.65 + 0.78 = ?

扩展内容内容要求为:

(1) 评估定点运算与浮点运算在C6416下的计算时间与计算误差?

(2) 讨论溢出的问题和处理?

(3) 用定点算法编程完成:35.54?0.15 x 23

(4) 使用级数展开法用定点数编程完成计算:

七、实验器材(设备、元器件):

硬件要求:PC机,CPU PII 以上,1GB 内存,100G硬盘空间即可。

软件要求:CCSV5,Simulator

八、实验步骤、实验编程与运行结果

九、扩展研究内容(完成实验内容中提到的或自己提出的研究、学习内容,建议完成或部分完成)

十、实验结论:

十一、总结及心得体会:

十一、对本实验过程及方法、手段的改进建议:

报告评分:

指导教师签字:

告(三)

学生姓名:号:指导教师:

实验地点:实验时间:

一、实验室名称:信息工程方向专业实验室

二、实验项目名称:DSP/BIOS的使用

三、实验学时:4学时

四、实验原理:

CCS为DSP开发的集成开发环境,并提供软仿真工具Simulator以及BIOS工具。

五、实验目的:

目的是掌握DSP/BIOS的基本使用,包括线程的创建和使用,学习线程的同步与通信,掌握BIOS的分析工具。

六、实验内容:

1.创建DSP/BIOS配置文件,并创建LOG,PRD,SWI,TSK,SEM,CLK等对象;

2.在LOG对象中打印输出信息;

3.设置PRD为每1秒调用一次,并打印启动信息,同时通过旗语启动TSK任务线程;

4.配置CLK为每100ms运行一次,并启动SWI线程。通过配置SWI线程属性(设置邮箱参数),SWI线程函数每0.5秒执行一次。

七、实验器材(设备、元器件):

硬件要求:PC机,CPU PII 以上,1GB 内存,100G硬盘空间即可。

软件要求:CCSV5,Simulator

硬件设备:USB5515DSK实验板,DES6437实验板

八、实验步骤、实验编程与运行结果

九、实验结论:

十、总结及心得体会:

十一、对本实验过程及方法、手段的改进建议:

报告评分:

指导教师签字:

告(四)

学生姓名:号:指导教师:

实验地点:实验时间:

一、实验室名称:信息工程方向专业实验室

二、实验项目名称:音频直通实验(选)

三、实验学时:2学时

四、实验原理:

DSK或EVM板提供了包括A/D,D/A,DSP的完整信号处理平台,并提供了外设控制使用相关例程代码。

五、实验目的:

通过DEMO例程代码,了解音频信号处理的基本框架。完成音频信号从输入到输出的完整过程。

六、实验内容:

参考DSK或EVM的语言直通例程代码。

七、实验器材(设备、元器件):

硬件要求:PC机,CPU PII 以上,1GB 内存,100G硬盘空间即可。

软件要求:CCSV5,Simulator

硬件设备:USB5515DSK实验板,DES6437实验板

八、实验步骤、实验编程与运行结果

九、实验结论:

十、总结及心得体会:

十一、对本实验过程及方法、手段的改进建议:

报告评分:

指导教师签字:

更多相关推荐:
1 北森16PF人格测验实验报告模版

广东金融学院实验报告课程名称员工心理素质测评

16pf测试报告

卡特尔十六种人格因素16pf测试报告姓名测查日期20xx0903江苏公安消防总队本报告仅供参考一前言卡特尔十六种人格因素测验SixteenPersonalityFactorQuestionnaire简称16PF...

卡特尔16pf人格测验报告

卡特尔16pf人格测验报告一测试者基本信息姓名张三生日19xx0808性别男学历本科二16pf基本描述卡特尔十六种人格因素测验SixteenPersonalityFactorQuestionnaire简称16P...

卡特尔16pf人格测验报告

卡特尔16pf人格测验报告一测试者基本信息二16pf基本描述卡特尔十六种人格因素测验SixteenPersonalityFactorQuestionnaire简称16PF是美国伊利诺州立大学人格及能力测验研究所...

卡特尔16pf自我分析报告

卡特尔16PF报告16PFReport20xx年10月22日前言本量表是以著名心理学家RaymendBCattell的16种人格因素16PF为理论基础运用一系列严密的科学手段研究出来的Cattell把对人类行为...

vfp实验指导书的实验报告6

实验六据库表的拓展属性与参照完整性规则一掌握数据库表的扩展属性的设置方法12利用表设计器设置数据库表的长表名记录有效性规则触发器和表注释在表设计器3利用命令设置数据库表的扩展属性可以使用CREATETABLES...

ftp实验报告

网络程序设计实验报告实验名称基于FTP的文件传输系统实验类型设计型实验指导教师专业班级姓名学号电子邮件实验地点东9211实验日期20xx年5月7日实验成绩基于FTP的文件传输系统设计摘要文件传送是各种计算机网络...

实验报告《ftp服务器的搭建》

计算机实用技术实验报告实验题目PTP服务器的搭建班级姓名蒋艳静学号指导教师黄务兰报告日期一实验内容简要描述1实习目标1理解FTP的工作原理2掌握在Windows系统上实现FTP服务FTP服务器访问控制的基本配置...

ftp服务器的搭建实验报告

计算机科学与技术系实验报告课程名称计算机网络实验名称ftp服务器的搭建姓名王欢学号124077031045日期成绩教师左红卫一实验目的1掌握在windows系统下搭建FTP服务器方法2了解FTP服务器的基本配置...

linux的ftp实验报告

实验步骤一安装VSFTPD服务器实验前提打开VMwareWorkstation开启FedoraLinux操作系统必须安装了VSFTPD服务器安装VSFTPD服务器在图形界面主菜单中选择系统设置添加删除应用程序找...

嗅探实验报告-利用Sniffer嗅探工具实现捕捉FTP

华北电力大学实验报告实验名称课程名称信息安全实验课程学生姓名金祥唐正鑫王鑫专业班级信安1301学号20xx090401072021成绩指导教师李天实验日期20xx74一实验目的通过本次实验了解sniffer的基...

Server-u 架构ftp服务器实验报告

Server-u架构ftp服务器实验报告姓名:XX班级:10级科技二班学号:XXX第一步是提供唯一的域名域名对其用户是不可见的,并且不影响其他人访问域的方式。它只是域的标识符,使其管理员更方便的识别和管理域。同…

16pf实验报告(5篇)