数字信号实验报告.docx

上传人:b****5 文档编号:29312538 上传时间:2023-07-22 格式:DOCX 页数:19 大小:5.46MB
下载 相关 举报
数字信号实验报告.docx_第1页
第1页 / 共19页
数字信号实验报告.docx_第2页
第2页 / 共19页
数字信号实验报告.docx_第3页
第3页 / 共19页
数字信号实验报告.docx_第4页
第4页 / 共19页
数字信号实验报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数字信号实验报告.docx

《数字信号实验报告.docx》由会员分享,可在线阅读,更多相关《数字信号实验报告.docx(19页珍藏版)》请在冰豆网上搜索。

数字信号实验报告.docx

数字信号实验报告

北京科技大学

 

《信号系统与信号处理综合实验》实验报告

 

学号:

__________

姓名:

_____________________

专业:

____________

 

年月日

目录:

1实验一CCS使用实验

2实验二、SEED-DTK6446Linux开发环境搭建

3实验三、Linux平台实验

4二、音频采集回放实验

5三、视频采集回放实验

6OSD图像叠加实验

7图像边缘检测实验

 

课程实验目的

1.数字信号处理是一门理论与实践并重的课程,在学习理论知识的同时再配合经典DSP实验,可以加深对数字信号处理软、硬件的理解与掌握。

2.接触并了解SEED-DTK6446实验箱,学会通过Linux操作平台,利用SEED-DTK6446实验箱完成一些经典的实验历程,加深对数字信号处理的了解。

3.学习并掌握SEED-DTK6446CCS开发环境的搭建,建立好所有编译测试环境,为下面的实验做好准备工作。

实验一CCS使用实验

一、实验目的

1.熟悉CCS3.3集成开发环境,掌握工程的生成方法;

2.熟悉SEED-DTK6446实验环境;

3.学习用标准C语言编制程序;

4.掌握CCS3.3集成开发环境的调试方法;

二、实验内容

1.DSP源文件的建立;

2.DSP程序工程文件的建立;

3.学习使用CCS3.3集成开发工具的调试工具。

三、实验步骤

1.创建源文件:

选择File→New→SourceFile命令;打开配套光盘\03.Examplesofprogram\01.SEEE-DTK6446CCSExamples\examples\3.1.1math。

2.创建工程文件:

点击Project-->New,创建新工程;点击Project选择addfilestoproject,添加源程序math.c。

3.设置编译与连接选项:

点击Project选择BuildOpitions;

4.工程编译与调试:

点击Project→Buildall,对工程进行编译;点击File→loadprogram,在弹出的对话框中载入debug文件夹下的.out可执行文件;点击debug→GoMain回到C程序的入口;运行程序并观察输出结果。

四.实验要求:

了解CCS菜单命令及产生各个显示窗口的操作。

操作各种仿真命令

·进入、退出CCS;

·选择当前窗口,改变窗口的大小。

·加载程序。

·运行程序(包括单步运行)。

·检查修改CUP寄存器。

·检查修改存储器单元内容。

·用观察窗口检查变量、CPU寄存器或存储单元内容。

五、实验遇到的问题、分析及解决方法

1.端口无法正常连接,在老师的帮助下,重启一下实验设备并重新安装驱动程序后,可以正常连接。

2.实验过程中因为一步出错导致后面的无法正常进行,此时除了在开发环境里修改以外,还需要将实验设备断电擦拭之前的痕迹。

 

实验二、SEED-DTK6446Linux开发环境搭建

一、实验目的

熟悉Linux开发环境搭建;

学会正确配置终端。

二、实验内容

1.点击PC机左下角开始-->程序-->附件-->通讯-->超级终端;在“您的区号(或城市号)是什么(C)?

”下键入区号010后点击确定;再次点击确定,在新弹出的对话框中输入“chenwei”;在新的对话框中的“连接时使用”下选择你希望使用的串口设备,点击确定;而后在端口设置选项中配置波特率115200,数据位8,奇偶校验无,停止位1,数据流控制无。

2.用串口线一端连接PC机串口,另一端连接SEED-DTK6446实验箱RS232串口J3。

并且取下SEED-DVS6446板卡上的J2、J23、J24短路子,上电启动SEED-DTK6446实验箱,若超级终端上显示打印信息,说明终端配置正确。

实验分析:

因为使用实验室的电脑,所以Linux操作系统已经安装完成,SEEDDVS6446SDK套件也已经安装完成,Linux平台实验程序运行环境已经配置成功,我们只需要进行串口终端的配置,所以本次实验比较简单。

但是在实验过程中,发现其他同学遇到了一些问题,此时可以根据指导书对SEEDDVS6446SDK套件重新安装一遍,或者Linux平台实验程序运行环境重新配置,一般就可以解决所遇到的问题。

实验三、Linux平台实验

一、入门实验

实验目的

1.熟悉linux开发环境,学会基于SEED-DTK6446平台linux开发环境的配置和使用;

2.学会使用arm_v5t_le-gcc编译工具;

3.学会基于NFS方式的程序调试方法。

实验内容

1.建立工作目录:

在linux开发主机桌面点击鼠标右键,打开终端,在当前目录下建立工作目录Host#mkdirhelloworld

2.编写程序源代码:

打印输出“helloworld”

#include

#include

intmain()

{

printf("helloworld\n");

return0;

}

3.编写Makefile:

Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。

使用它带来的好处就是自动编译,你只需要敲一个“make”命令整个工程就可以实现自动编译。

CC=arm_v5t_le-gcc//指明编译器

EXEC=hello//表示编译后生成的执行文件名称是“hello”

OBJS=hello.o//目标文件列表

all:

$(EXEC)//编译主入口

$(EXEC):

$(OBJS)

$(CC)-o$@$(OBJS)

clean:

//清除编译结果

-rm-f$(EXEC)*.o

4.调试应用程序

1.在helloworld目录下输入“Host#make”,编译应用程序;

2.复制编译生成的可执行文件到NFS根文件系统中:

Host#cphello/opt/nfs/opt/seed_exp;

3.上电启动SEED-DTK6446,超级终端显示启动信息,启动信息如下,显示“Hitanykeytostopautoboot:

”时按下回车键,中断系统自动系统;

4.输入如下指令,将系统配置为从NFS根文件系统启动:

SEED-DTK6446_v1.0#setenvbootargsmem=60Mconsole=ttyS0,115200n8root=/dev/nfsnoinitrdrwip=dhcpnfsroot=192.168.253.210:

/opt/nfsvideo=dm64xxfb:

output=pal

5.启动系统(默认硬盘启动):

SEED-DTK6446_v1.0#boot;

6.登陆系统;

7.进入可执行程序所在目录;

8.运行可执行文件;

二、音频采集回放实验

一、实验目的

1.进一步熟悉基于SEED-DTK6446平台的linux开发环境;

2.熟悉基于linuxOSS音频驱动的应用程序编写。

二、实验原理

1.OSS(OpenSoundSystem)是linux平台上一个统一的音频接口,即只要音频处理应用程序按照OSS的API来编写,那么在移植到另外一个平台时,只需要重新编译即可。

2.在linux系统中,所有的设备都被统一成文件,通过对文件的访问方式(首先open,然后read/write,同时可以使用ioctl读取/设置参数,最后close)来访问设备。

1.初试化Mixer:

Mixer设备打开操作如下:

/*Openthemixerdevice*/

if((mixerFd=open(device,O_RDONLY))==-1)

{

}

音频输入源的配置操作如下:

/*Setthemixerinputsource*/

if(ioctl(mixerFd,SOUND_MIXER_WRITE_RECSRC,&recmask)==-1)

{

}

2.音频设备初始化

音频设备打开操作如下:

/*Openthesounddevice*/

if((fd=open(device,mode))==-1)

{

}//mode有三种选择:

O_RDONLY,O_WRONLY和O_RDWR,分别表示只读、只写和读写。

在录音时配置O_RDONLY模式,而播放音频时配置为O_WRONLY模式。

采样格式设置操作如下:

/*Setthesoundformat(onlyAFMT_S16_LEcurrentlysupported)*/

if(ioctl(fd,SNDCTL_DSP_SETFMT,&format)==-1)

{

}

通道数目设置操作如下:

/*Setthenumberofchannels*/

if(ioctl(fd,SNDCTL_DSP_CHANNELS,&numchannels)==-1)

{

}

采样率设置操作如下:

/*Setthesamplerate*/

if(ioctl(fd,SNDCTL_DSP_SPEED,&samplerate)==-1)

{

}

3.音频采集与播放

/*ReadinputbufferfromOSSinputdevice*/

if((int)read(inputFd,inputBuffer,blksize)

{

}

memcpy(outputBuffer,inputBuffer,blksize);

/*WriteoutputbufferintoOSSoutputdevice*/

if(write(outputFd,outputBuffer,blksize)==-1)

{

}

三、实验内容

1.在linux开发主机上打开终端,进入实验程序目录;

Host#cd/opt/dvevm_1_20/seed_exp/02.audioloopback/audio_app

2.重新编译应用程序;

Host#makeclean

Host#make

3.复制编译生成的可执行文件到NFS根文件系统中;

Host#cprelease/audio_app/opt/nfs/opt/seed_exp

4.将系统配置为从NFS根文件系统启动;

5.启动系统后,以root权限登陆系统,进入可执行文件所在目录;

6.在音频播放设备中播放音频;

7.运行可执行文件。

四、实验结果

音频播放设备中播放音频。

硬件平台线路连接

五、实验遇到的问题

1.因为是第一次接触该类实验,所以前面的准备的工作没有熟练的掌握,导致没有办法继续进行后续实验,这时要多请教老师和同学,及时发现问题;如果一直没有办法解决,需要耐下心来,断电后重新做。

在一次次的重复中,其实并没有浪费时间,反而对设备更加的熟悉,减少因为虚心发错的概率。

还有就是没有依照老师的要求:

不使用中文给文件命名。

我犯过中文命名文件这个错误,导致系统找不到相应文件,实验无法继续进行下去。

后来在老师的检查之下才知道是中文名字的原因。

2.在超级终端键入代码时,因为对代码的含义不理解,实验教程也是PDF版不好直接复制代码,所以十分耗时而且容易出错,后来在老师的指导下,输入部分代码然后按键盘的“上”键便可自动匹配,极大的提高了我们的实验效率。

3.在实验过程中还遇到一些问题,因为时间有限,我们并没有深入研究,而是单纯的断电重新开始,并且最终得到了预期的实验结果。

三、视频采集回放实验

一、实验目的

1.学习基于CodecEngine机制的编程;

2.学习使用XDC编译工具;

3.学习基于v4L2采集驱动与FBdev显示驱动的应用程序的编写。

二、实验原理

概述:

TI提供的达芬奇参考软件框架分应用层、信号处理层和I/O层三部分。

Davinci的应用工程师可以在系统的用户空间,即应用层,在系统功能性上添加和发挥自己的特色。

信号处理层通常都运行在DSP端,负责信号处理,包括音视频编解码算法、CodecEngine、DSP的实时操作系统DSP/BIOS及和ARM通信的模块。

I/O层就是我们通常所说的驱动,是针对Davinci外设模块的驱动程序。

其中应用层通过CodecEngine的VISA(Video,Image,Speech,Audio)API来调用DSP端的算法,通过EPSI(EasyPeripheralSoftwareInterface)API来访问和操作Davinci的外设。

这三个部分通常对应三个Davinci软件开发小组。

当然还需要一个系统集成工程师把这三个部分集成起来,不过VISAAPI和EPSIAPI的存在已经大大简化了集成工作的复杂程度。

DaVinci的软件开发步骤:

第一步,工程师需要基于DSP利用CCS开发自己的音视频编解码算法,编译生成一个编解码算法的库文件*.lib。

第二步,生成一个在DSP上运行的可执行程序*.x64P(即.out文件),也就是DSPServer。

第三步,根据DSPServer的名字及其中包含的具体的音视频编解码算法创建CodecEngine的配置文件*.cfg。

第四步,应用工程师收到不同的codec包、DSPServer和Engine配置文件*.cfg,把自己的应用程序通过编译、链接,最终生成ARM侧可执行文件。

视频采集的操作流程如下:

打开视频采集设备:

#defineV4L2_DEVICE"/dev/video0"

/*Openvideocapturedevice*/

fd=open(V4L2_DEVICE,O_RDWR|O_NONBLOCK,0);

初试化采集设备

/*Initializethevideocapturedevice*/

captureFd=initCaptureDevice(&capBufs,&numCapBufs,envp->svideoInput,

envp->imageWidth,envp->imageHeight,

0);

采集视频数据

/*Getaframebufferwithcaptureddata*/

if(ioctl(captureFd,VIDIOC_DQBUF,&v4l2buf)==-1)

{

}

三、实验内容

1.在linux开发主机上打开终端,进入实验程序codec算法包所在目录:

Host#cd/opt/dvevm_1_20/seed_exp/03.videoloopback/codecs/

2.重新编译codec算法包:

Host#makeclean

Host#make

3.打开终端,进入实验程序ARM端所在目录:

Host#cd/opt/dvevm_1_20/seed_exp/03.videoloopback/video_app

4.重新编译应用程序:

Host#makeclean

Host#make

5.复制编译生成的可执行文件到NFS根文件系统中

Host#cprelease/video_app/opt/nfs/opt/seed_exp

6.进入实验程序DSP端所在目录:

Host#cd/opt/dvevm_1_20/seed_exp/03.videoloopback/servers/video_copy

7.重新编译DSPServer

Host#makeclean

Host#make

8.复制编译生成的.x64P文件到NFS根文件系统中:

Host#cpvideo_copy.x64P/opt/nfs/opt/seed_exp

9.将系统配置为从NFS根文件系统启动:

10.启动系统后,登陆系统,进入可执行文件所在目录;

11.加载cmemk.ko和dsplinkk.ko模块;

12.执行应用程序,视频显示设备上将实时的显示采集的图像。

三、实验结果

通过摄像头,实验箱上的显示屏可以实时的显示摄像头所采集到的

图像,如图所示。

 

四、实验体会

通过前面的几次实验,这个实验做得十分顺利,按照教程一步步走下来,就得到了预期的结果。

在实验过程中,出现的代码与音频采集的代码有不少相同之处,所以通过本次实验,不再是简单的敲代码,不知不觉中对一些代码的意思有了更明确的认识,渐渐知道整个实验的操作流程以及每一步的实验目的。

当然,这只是最浅显的部分,但是通过本门课的实验学习,我从无从下手到可以顺利的做出正确的实验结果,对DSP实验有了初步的认识和了解,发现枯燥的理论知识应用到实际会有这么多神奇的效果。

也从中体会到了与老师、同学都交流的重要性,提高了独立思考的能力。

 

OSD图像叠加实验

在linux开发主机上打开终端,进入实验程序codec算法包所在目录

Host#cd/opt/dvevm_1_20/seed_exp/04.videoosd/codecs/

重新编译codec算法包

Host#makeclean

Host#make

进入实验程序ARM端所在目录

Host#cd/opt/dvevm_1_20/seed_exp/04.videoosd/video_osd_app

重新编译应用程序

Host#makeclean

Host#make

复制编译生成的可执行文件到NFS根文件系统中

Host#cprelease/video_osd_app/opt/nfs/opt/seed_exp

进入实验程序DSP端所在目录

Host#cd/opt/dvevm_1_20/seed_exp/03.videoloopback/servers/video_copy

重新编译DSPServer。

Host#makeclean

Host#make

复制编译生成的.x64P文件到NFS根文件系统中

Host#cpvideo_copy.x64P/opt/nfs/opt/seed_exp

启动系统后,登陆系统,进入可执行文件所在目录

root@xxx.xxx.xxx.xxx:

~#cd/opt/seed_exp

加载cmemk.ko和dsplinkk.ko模块

root@xxx.xxx.xxx.xxx:

/opt/seed_exp#./loadmodules.sh

执行应用程序

root@xxx.xxx.xxx.xxx:

/opt/seed_exp#./video_osd_app

视频显示设备上将实时的显示采集的图像,在图像的右上角显示叠加有SEED的log图标,下方显示采集的图像的帧率与DSP端CPU的使用率。

视频采集图像如下:

图像边缘检测实验

在linux主机上打开终端,进入实验程序codec算法包所在目录

Host#cd/opt/dvevm_1_20/seed_exp/05.videosobel/codecs/vidsobeledge

重新编译codec算法包

Host#makeclean

Host#make

进入实验程序ARM端所在目录

Host#cd/opt/dvevm_1_20/seed_exp/05.videosobel/video_sobel_app

重新编译应用程序。

Host#makeclean

Host#make

复制编译生成的可执行文件到NFS根文件系统中

Host#cprelease/video_sobel_app/opt/nfs/opt/seed_exp

进入实验程序DSP端所在目录

Host#cd/opt/dvevm_1_20/seed_exp/05.videosobel/servers/vidsobeledge

重新编译DSPServer

Host#makeclean

Host#make

复制编译生成的.x64P文件到NFS根文件系统中

Host#cpvidsobeledge.x64P/opt/nfs/opt/seed_exp

启动系统后,登陆系统,进入可执行文件所在目录

root@xxx.xxx.xxx.xxx:

~#cd/opt/seed_exp

加载cmemk.ko和dsplinkk.ko模块

root@xxx.xxx.xxx.xxx:

/opt/seed_exp#./loadmodules.sh

执行应用程序

root@xxx.xxx.xxx.xxx:

/opt/seed_exp#./video_sobel_app

视频显示设备上将实时的显示采集的经算法处理的图像。

实验中遇到的问题及解决办法

在实验过程中将系统配置为从NFS根文件系统启动遇到困难,将DSP芯片与Linux主机相连时失败多次。

首先检查网线跟串口的连接情况,然后修改Linux主机的IP地址,要注意Linux主机的IP地址要与DVS6446芯片的IP地址不同,但是IP的前三位要相同,最后一位不同。

在实验过程中对Linux操作系统的一系列操作不了解,对某些操作的目的不了解。

通过看一些讲解Linux操作系统的视频跟书籍了解操作系统的命令,通过询问指导老师了解实验操作的目的。

DVS6446通过NFS根文件系统启动后,在linux操作系统中将文件通过cp命令拷贝到opt/seed_exp目录后,等于把将要运行的文件存储到DVS6446的存储器,DVS6446可直接从存储器中调用文件执行。

 

五.申请成绩等级:

85分以上。

理由:

说实话,这个实验自己做的相当不顺利。

往往一整节课什么实验结果都出不来。

我都是实在没办法了才向老师请教,让老师来指导自己的实验。

所以可能在独立解决问题和实验能力上有所欠缺。

 

总结和感想:

在这一次的实验中,我们学习了SEED-DTK6446系列DSP芯片的开发技能。

其中css,linux平台下的软件操作和实际中硬件开发平台的连线都十分重要。

在学习的过程中,我们逐渐熟希了软件的使用方法。

但这其中也有许多困难。

比如在进行linux平台下的开发时,用命令行来编写文件。

一步一步跟着实验指导手册的要求来做。

我就碰到了在编辑完程序之后,不知如何退出并保存的问题。

这个问题对之前没有接触过linux的同学来说不请教别人是绝对克服不了的。

可是实验指导手册里并没有写清楚,这可能会给新手带来麻烦。

但这也教会我们学习一门技术需要主动的寻求帮助和查找资料。

另外这学期我还选修了一门《DSP原理与应用》,通过这门选修课我对DSP芯片的寄存器等内部结构有了更加深入的理解,对本实验有非常大的帮助。

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

当前位置:首页 > 自然科学 > 物理

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

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