DSP技术及应用课程实验指导手册通信与电子工程学院2011-2012(1)实验一卷积运算(含VisualDSP++基础练习)1、实验目的(1)熟悉VisualDSP++集成开发调试环境的使用(2)理解并调试卷积运算的编程实现2、实验设备安装了VisualDSP++(4.5以上)的PC机。3、实验内容及原理(1)熟悉VisualDSP++的使用,主要内容包括:创建、打开工程;编译链接并执行程序;设置断点、观察变量和寄存器值的变化。(2)阅读并调试卷积运算程序:对于离散线性时不变系统,设输入为x[m][n],单位脉冲响应为h[m][n],则系统的输出y[m][n]可表示为x与h的卷积,可用公式表示如下:21]][[]][[]][[2121kkknkmhkkxnmy要求在VisualDSP++环境下对例程进行编译运行、调试和分析。4、实验步骤第一部分:(1)创建一个工程(以自己姓名的全拼命名),选择BF533作为处理器:’File’NewProject,选择StandardApplication类型,文件名自己定义,Next,处理器选Blackfin,处理器类型选BF533,Next,不选中Addtemplatecodetotheapplication,其余采用缺省设置即可。(2)生成一个打印HelloDSP!的带main函数的c文件,并加入工程中:’File’NewFile,然后在编辑区编辑文件,然后保存到工程所在目录。在工程名下的SourceFiles上点击右键,选择AddFilestofolder,选中新创建文件即可加入。(3)关闭当前工程,然后再次打开该工程。(4)(如无所需类型的Session)生成一个模拟器(simulator)型的Session:’Session’’NewSession…’,选BF533作为处理器,Next,选Simulator,Next,选ADSP-BF533ADSP-BF5xxSingleProcessorSimulator,Finish。然后选中其为当前Session。(5)完成编译、链接并执行,观察执行结果(在输出窗口打印出HelloDSP!):’Project’’BuildProject’,等待断点显示在编辑区域,然后执行’Debug’’Run’。第二部分:(1)在VisualDSP++下打开工程conv_2d_533.dpj(安装路径\Blackfin\Examples\NoHardwareRequired\2DConvolution(ASM)),将其设置为活动工程(在该工程名上点击右键,选中SetAsActiveProject)。(2)利用菜单项'Session'-'SelectSession',选择ADSP-BF533模拟器(Simulator)session。(3)执行菜单项'Project''BuildProject'(或用F7)编译该项目,这将自动加载可执行文件,程序会停在主程序的入口处。(4)执行菜单项'Debug''Run'(或用F5),程序执行到程序末尾的断点___lib_prog_term处,此时程序处于暂停状态。(5)执行菜单项'View''DebugWindows''ImageViewer…',打开ImageConfiguration窗口,按下图分别对input和output分别进行配置,然后点击OK。则在ImageViewer窗口可以观察到输入图像与输出图像。(6)执行菜单项'Debug''Reset',停止程序执行。然后在重复第(3)步,接下来执行'Register''Core''DataRegisterFile'、'Register''Core''DAGRegister'、'Register''Core''PRegister',打开寄存器窗口;再执行'View''DebugWindows''Expressions'打开表达式计算窗口,添加input、output、buffer等变量以便观察其值的变化。还可执行'Memory''BlackfinMemory'来观察内存,在其输入框中输入input、buffer等即可看到其地址和内容。(7)做好第六步的准备后,反复执行'Debug''Stepinto'(或F11键)进行单步执行,注意观察寄存器和变量的变化情况,理解每条语句的作用。5、实验报告内容要求(1)记下output的最终结果(2)解释第31行到37行零开销循环的执行流程和作用(3)请描述input图和output图的区别,并结合3×3低通滤波算子解释其原因。实验二4×4键盘实验1、实验目的(1)学习键盘扫描原理,学习基于ADSP-BF53x处理器的I/O扩展键盘程序设计方法。(2)理解并掌握ADSP的中断处理机制2、实验设备安装了VisualDSP++软件的PC机,VisualDSP++版本为4.5以上。ADSP_BF533_EZ_KIT_Lite实验台DM-KIT-EXBSSK-BF533(DM-KIT-EXBSSK模块、DM-KIT-EXBTFT模块)4×4键盘3、实验内容及原理内容:利用ADSP-BF53x处理器EBIU读取CPLD内部的键盘控制器键值寄存器,并将相应的键值信息打印出来。原理:BF53x通过EBIU接口和CPLD连接,利用CPLD在内部设计出键盘控制器,进行键值的行列扫描,将键值返回给键值寄存器,BF53x通过读取键值寄存器获得键盘的键值,根据键值做相应的处理。下图是矩阵键盘的硬件连接图,PA3~PA0为行线输入端,PA7~PA4为列线输出端,PA0-PA7全部接上拉电阻。PA7~PA4向所有的列线分别且循环输出低电平即0111,1011,1101,1110;读取各行线PA3~PA0的状态,若行线状态全为高电平,则表明无键按下,若行线状态中有低电平,则表明有键按下。即:PA7~PA4四条列扫描线在每次输出低电平期间,同时读取各行线PA3~PA0的状态,确定键值。例如:PA7~PA4输出1011,此时若读取PA3~PA0的状态为1110,则表明按键S2被按下。将键盘8条扫描线与BF53x地址空间的0x203E0000相连接,对应如下表(逻辑1表示高电平,逻辑0表示低电平)。在程序中不断向该地址循环写入0xfe,0xfd,0xfb,0xf7,经短暂延时后,再读取该地址的值。最后根据得到的值,判断被按下的键4、实验步骤(1)在DM-KIT-EXBSSK-BF5xx上插入4×4按键。(2)DM-KIT-EXBSSK-BF5xx采用内部供电模式,直接为DM-KIT-CBBF53x上电。(3)运行VisualDSP++,根据实际情况,将DM-EDU-SSKBF53x板与VisualDSP++连接。(4)加载DM_BF53x_KEYBOARD.dpj工程文件,编译并运行(5)将4×4键盘接入DM-KIT-EXBSSK-BF53x上的键盘接口,编译并运行。观察输出窗口的内容。5、实验报告内容要求(1)记录自己的按键过程和输出窗口对应的输出。(2)解释函数Init_timer0_Interrupts中语句的功能(3)列出按键’0’~’9’、’A’~’F’对应的键值实验三图像采集与处理1、实验目的(1)学习基于ADSP-BF533处理器PPI接口的CMOS图像采集原理(2)理解并掌握ADSP中DMA配置及使用方法(3)设计图像处理算法实现在YUV颜色空间的图像二值化。2、实验设备安装了VisualDSP++软件的PC机,VisualDSP++版本为4.5以上ADSP_BF533_EZ_KIT_Lite实验台DM-KIT-EXBSSK-BF533(DM-KIT-EXBSSK模块、DM-KIT-EXBCMOS-130mp模块、DM-KIT-EXBTFT模块)3、实验内容及原理利用ADSP-BF533处理器PPI总线接口单元与DM-KIT-EXBCMOS-130mp连接,通过对CMOS配置实现图像采集和处理功能。系统整体框图如下:系统硬件包括DM-KIT-EXBCMOS-130mp模块,它能驱动三款CMOS摄相头模组,分别为CN00303R0FD030万像素,CN01305Z3HH4130万像素,TGA130V10130万像素,它们选用的图像传感器分别为PO3030K,PO3130D,OV9653。本实验采用OmniVision公司的OV9653图像传感器为核心的型号为TGA130V10的CMOS摄相头模块。OV9653CMOSSensor,输出130万像素,支持SXGA、VGA、QVGA、QQVGA、CIF、QCIF、QQCIF输出模式;数据输出格式:YCbCr4:2:2、YUV4:2:2、8BitBayerdata、5:6:5RGB、5:5:5RGB、CCIR656;寄存器读写采用标准I2C总线结构。4、实验步骤(1)将DM-KIT-EXBCMOS-130mp与DM-KIT-EXBSSK连接,CMOS模组朝向外侧。(2)为DM-KIT-EXBSSK-BF533选择合适的供电方式,为EZKIT上电。(3)运行VisualDSP++,根据实际情况,将EZKIT板与VisualDSP++连接。(4)加载DM_BF53x_CMOS_OV9653.dpj工程文件,编译并运行,等待中断。(5)产生中断后会打印如图,说明捕捉图象成功。待打印出如图信息后,选择菜单栏中的Debug菜单下的Halt,将程序停下。(7)运行菜单项View-DebugWindows-Imageviewer,弹出如下会话框,如下图设置,设置结束后点击OK,在ImageViewer窗口观察拍摄到的图像。(8)(可选步骤)要采集1280*1024大小的图片,把dm_bf5xx.h头文件中的下面这段注释掉的代码还原,定义CAPTURE_MODE_SXGA。即将//#defineCAPTURE_MODE_SXGA//定义摄像头采集图片的大小为1280*1024更改为:#defineCAPTURE_MODE_SXGA//定义摄像头采集图片的大小为1280*1024(9)(可选步骤)重新Build程序(F7)并执行(F5),产生中断后会打印如下信息,说明捕捉图象成功。选择菜单栏中的Debug菜单下的Halt,将程序停下。(10)(可选步骤)运行菜单项View-DebugWindows-Imageviewer,弹出会话框,如下图设置参数。设置完成后点击OK,会在ImageViewer中观察到拍摄的图象。(11)在EX_INTERRUPT_HANDLER(DMA0_PPI_ISR)函数中实现对YUV图像的二值化。提示:YUV存储格式是YUYVYUYVYUYV……,Y代表亮度,UV代表色度,因此需要将UV置零,而Y则根据选定的阈值(比如100),大于阈值的就变成255(0xff),小于阈值的置零。5、实验报告内容要求(1)分析Init_Interrupts()与实验三的异同(2)在函数Video_Frame_Capture中,解释DMA0的参数配置的目的。(3)YUV颜色空间的图像二值化算法代码。