数字信号实验报告.docx
- 文档编号:29312538
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:19
- 大小:5.46MB
数字信号实验报告.docx
《数字信号实验报告.docx》由会员分享,可在线阅读,更多相关《数字信号实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
数字信号实验报告
北京科技大学
《信号系统与信号处理综合实验》实验报告
学号:
__________
姓名:
_____________________
专业:
____________
年月日
目录:
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芯片的寄存器等内部结构有了更加深入的理解,对本实验有非常大的帮助。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)