当前位置:文档之家› 图像采集系统设计

图像采集系统设计

DSP实习报告题目:图像采集系统的设计班级:xxx姓名:xxx学号:xxx指导老师:xxxx目录一.实习题目 (3)二.实习背景知识 (3)三.实习内容 (5)四.实习程序功能与结构说明 (8)六.实习心得 (19)一、实习题目图像采集系统的设计二、实习目的:1、熟练掌握数字信号处理的典型设计方法与技术手段;2、熟悉D6437视频输入,输出端的操作及编程。

;3、掌握常用电子仪器设备的使用方法;4、熟悉锐化变换算法。

三、实习背景知识1、计算机2、CCS3.3.软件3、DSP仿真器4、EL_DM6437平台EL-DM6437EVM是低成本,高度集成的高性能视频信号处理开发平台,可以开发仿真达芬奇系列DSP应用程序,同时也可以将该产品集成到用户的具体应用系统中。

方便灵活的接口为用户提供良好的开放平台。

采用该系列板卡进行产品开发或系统集成可以大大减少用户的产品开发时间。

板卡结构框图如图所示:板卡硬件资源:TMS320DM6437 DSP ,可工作在400/600 MHz;2 路视频输入,包括一个复合视频输入及一个S端子视频输入;保留了视频输入接口,可以方便与CMOS影像传感器连接;3 路视频输出,包括2路复合视频,一路S端子输出;128MByte 的DDR2 SDRAM存储器,256MBit的Nor Flash存储器;用户可选的NAND Flash接口;可选的256K字节的I²C E²PROM;1个10M/100Mbps自适应以太网接口;1 路立体声音频输入、1路麦克风输入,1路立体声音频输出;USB2.0高速接口,方便与PC连接;1个CAN总线、1个UART接口、实时时钟(带256Byte的电池保持RAM);4个DIP开关,4个状态指示LED;可配置的BOOT模式;10层板制作工艺,稳定可靠;标准外部信号扩展接口;JTAG仿真器接口;单电源+5V供电;板卡软件资源:完整的DSP示例程序及实验指导书;USB演示软件,及读写示例C++程序;功能概述:EL-DM6437EVM 达芬奇视频开发板通过专用的DDR2存储控制器接口扩展了64MBytes的DDR2 SDRAM,为视频应用带来了高吞吐、高容量存储带宽,并可以扩展到最大256MByte;256MBit的Nor Flash为视频应用程序脱机运行提供了有力的容量保证;板卡通过一个视频解码芯片和CPU连接,使得CPU可以接受外部的复合视频信号输入和S信号输入,信号都是自动检测,大大提高了视频处理的灵活性;CPU还提供视频DAC,通过几个运算放大器即可把DDR2存储器内的数据输出为用户可观察到的信号,非常方便;除此之外,板卡还包括很多资源,包括音频输入输出、10M/100M的自适应以太网接口、USB2.0接口、实时时钟、4位LED 指示和4位DIP开关量输入、CAN总线及UART接口等等一系列功能;最重要的是所有外部存储器接口信号都连接到扩展接口上,用户可以通过设计外部子板扩展自己的功能。

板上还包括灵活的端口复用切换,使得用户可以根据不同场合使用不同的端口配置,最大的利用CPU各种功能。

板卡通过标准接口提供电源输入,采用单5v的供电方式,注意供电电流需要大于1安培,电源调节模块为微处理器及其他外设提供3.3V和1.04/1.2V(对应不同频率CPU)电压。

在使用该系列板卡开发过程中可以通过J1接口连接仿真器。

四、实习内容:1. 连接好电脑和仿真器,EL_DM6437和仿真器;2. 用视频线一头连接板卡的P3或者P5,另一头连接显示器的AV输入,并调制AV模式;注:如果带转接头的话,AV输入应该是黄色端子。

3. 用视频线连接摄像头输出和板卡的F9插座,注意摄像头输出制式为PAL;4. 给EL_DM6437和摄像头上电,打开CCS并连接;5. 打开ColorSharpen文件夹的工程ColorSharpen.pjt,此工程功能为:把摄像头捕捉到的一副图像进行锐化处理,并将之输出到显示器;6.编译源程序7. 下载程序out文件,如果没有就先编译一下Project—》Build;8. 把摄像头对准需要捕捉的图像场地;9. 设置第一个断点,在video_test.c的422行处;10. 点击运行,稍等片刻后程序停止在断点,此时可以从显示器看到图像;11.继续点击运行,如果成功,显示出锐化图像;并显示这时可以发现显示屏显示出摄像头所指影像已被锐化。

11.结束注:1)锐化算法最简单思想是前一个象素取后一象素与本身的差值;五.实习程序与结构说明/** Copyright 2007 by Techshine Incorporated.* All rights reserved.* Author: lyj*//** Video Test**/#include "tvp5146.h"#define COLORBARS 1#define LOOPBACK 0#define SVIDEO_OUT 1#define COMPONENT_OUT 0typedef struct __RGBC{Uint8 Red;Uint8 Green;Uint8 Blue;}RGBCOLOR;void PictureSharpen(Uint32 memaddr);/* ------------------------------------------------------------------------ ** ** vpfe_init( ) ** ** NTSC: ** Width: 720 ** Height: 480 ** ** ** ------------------------------------------------------------------------ */void vpfe_init( Uint32 buffer, Uint32 width, Uint32 height ){//同步、模式设置VPFE_CCDC_SYN_MODE = 0//0x00032F84; // interlaced, with VD pority as negative|(0<<19) //使能SDRAM端口输出到resizer的输入,0=disable|(0<<18) //使能视频口video port,输出到SDRAM,0=disable|(1<<17) //数据写使能,控制CCD列数据是否写入DDR,0=disable|(1<<16) //vd/hd使能,如果hd、vd定义为输出,那么内部产生时序,否则外部产生|(0<<15) //Field状态,表明当前的field状态,0=奇场,1=偶场|(0<<14) //3 tap低通滤波器,0=off|(2<<12) //INPMOD 数据输入模式,0=CCD Raw,1=YCbCr 16bit,2=YCbCr 8bit,3保留|(1<<11) //每个象素的包大小,0=16bit/pixel,1=8bit/pixel|(7<<8) //ccd 数据宽度,只有INPMOD=0(12bit-13bit)时有效// 0=16bit,1=15bit,2=14bit,3=13bit,4=12bit// 5=11bit,6=10bit,7=8bit|(1<<7) //传感器场模式,0=逐行扫描,1=隔行|(0<<6) //CCD数据极性|(0<<5) //外部WEN信号选择,如果VDHDEN=1(16bit),设置此位将使CCD数据加载到DDR// 0=不使用|(0<<4) //场指示器极性,0=正极,1=负极|(0<<3) //HD同步极性,0=正极,1=负极|(1<<2) //VD同步极性,0=正极,1=负极|(0<<1) //场ID方向,0=输入,1=输出|(0); //VD、HD同步方向,0=输入,1=输出VPFE_CCDC_HD_VD_WID = 0; //HD,VD信号脉冲宽度寄存器VPFE_CCDC_PIX_LINES = 0x02CF020D; //每行的水平象素,及一帧的行数//0|(0x2cf<<16) //每行的水平象素719+1=720//|(0x20d) //每帧或每场的半行数525+1=526/** sph = 1, nph = 1440, according to page 32-33 of the CCDC spec* for BT.656 mode, this setting captures only the 720x480 of the* active NTSV video window*/VPFE_CCDC_HORZ_INFO = width << 1; // Horizontal lines//水平象素信息,(31-16)=开始象素,(14-0)=输入到DDR的每行象素个数VPFE_CCDC_HSIZE_OFF = width << 1; // Horizontal line offset// 水平大小,(15-0)=每行的地址偏移,即跳行到DDR2读取数据?// 5 lsb 忽略,最好是256字节的倍数VPFE_CCDC_VERT_START = 0; // Vertical start line// 垂直线开始象素(16-31)=SLV0(Field0),(0-14)=SLV1(Field0)// 设定数据输入到DDR的开始行VPFE_CCDC_VERT_LINES = height >> 1; // Vertical lines(14bit-0)// 垂直线的线数VPFE_CCDC_CULLING = 0xFFFF00FF; // Disable cullng,水平及垂直方向的选择方式//(31-24)=偶场的水平选择,(23-16)=奇场的水平选择// (15-8)=保留,(7-0)=垂直选择模式/** Interleave the two fields*/VPFE_CCDC_SDOFST = 0//0x00000249; //DDR线偏移|(0<<14) //场标志信号翻转,0=正常|(0<<12) //场线偏移,0=+1线,1=+2线,2=+3线,3=+4线,|(1<<9) //偶线和偶场的线偏移,0=+1,1=+2,2=+3,3=+4,4=-1,// 5=-2,6=-3,7=-4,|(1<<6) //奇线和偶场的线偏移,0=+1,1=+2,2=+3,3=+4,4=-1,// 5=-2,6=-3,7=-4,|(1<<3) //偶线和奇场的线偏移,0=+1,1=+2,2=+3,3=+4,4=-1,// 5=-2,6=-3,7=-4,|(1<<0); //奇线和奇场的线偏移,0=+1,1=+2,2=+3,3=+4,4=-1,// 5=-2,6=-3,7=-4,VPFE_CCDC_SDR_ADDR = buffer; //buffer DDR地址,最低5位忽略VPFE_CCDC_CLAMP = 0//; //可选的黑色箝位设置|(0<<31) //CLAMPEN ,CLAMP使能,0=禁止|(0<<28) //采样象素长度,0=1pixel,为2^N(次幂),5-7保留|(0<<25) //采样线长度,0=1 line,为2^N(次幂),5-7保留|(0<<10) //采样的开始象素|(0<<0); //bit4-bit0,平均增益VPFE_CCDC_DCSUB = 0; //CCD数据要减去的值,当CLAMPEN=0时有效VPFE_CCDC_COLPTN = 0xEE44EE44; //调色板设置//0|(0<<30) //第三线调色板,3个象素,0=R,1=Gr,2=Gb,3=B//|(0<<28) //CP3LPC2,象素个数=2//|(0<<26) //CP3LPC1,象素个数=1// |(0<<24) //CP3LPC0,象素个数=0// |(0<<22) //第二线调色板// |(0<<20)// |(0<<18)// |(0<<16)// |(0<<14) //第一线调色板// |(0<<12)// |(0<<10)// |(0<<8)// |(0<<6) //第0线调色板// |(0<<4)// |(0<<2)// |(0<<0);VPFE_CCDC_BLKCMP = 0; //黑色补偿//0|(0<<24) //R红色//|(0<<16) //Gr// |(0<<8) //Gb// |(0<<0); //B蓝色VPFE_CCDC_FPC_ADDR = 0x86800000; //不知道干吗用的VPFE_CCDC_FPC = 0;VPFE_CCDC_VDINT = 0; //VD中断时序,(30-16)=VDINT0,(14-0)=VDINT1 VPFE_CCDC_ALAW = 0; //a 率设置VPFE_CCDC_REC656IF = 0//0x00000003; //rec656接口|(1<<1) //FVH错误纠正使能|(1<<0) ; //Rec656接口使能/** Input format is Cb:Y:Cr:Y, w/ Y in odd-pixel position*/VPFE_CCDC_CCDCFG = 0//0x00000800; //CCD配置寄存器|(0<<15) //使能VSYNC内部的锁存功能,0=使用VSYNC锁存|(0<<13) //MSBINVI,色度输入信号最高位是否在SDRAM中翻转,0=正常|(0<<12) //DDR的字节是否交换,如果字节包已经使能,象素个数必须为偶数// 0=正常|(1<<11) //YCbCr 8bit输入时Y的位置,0=偶像素,1=奇象素|(0<<8) //指定CCD有效范围,0=当WEN为逻辑“与”时内部信号有效,反之为“”|(0<<6) //FID检测,0=VSYNC时序锁存FID信号,1=不锁存,2=VD 边缘锁存,3=VD、HD的相位决定|(0<<5) //CCIR656输入数据宽度,0=8bit,1=10bit|(0<<4) //YCINSWP,YI输入和CI引脚输入交换,0=不交换|0;VPFE_CCDC_FMTCFG = 0; //数据重新格式化、图象口配置//0|(0<<16) //图象口数据准备好频率,跟内核频率有关,0=CoreClock*1/2=75MHz//|(0<<15) //video port 使能// |(0<<12) //video port输入选择,0=bit 15~6// |0;VPFE_CCDC_FMT_HORZ = 0//0x000002D0; //数据重新格式化、图象输入接口水平信息|(0<<16) //bit31~29保留,从HD开始的水平开始象素|(0x2D0<<0) //bit15~13保留,水平方向的象素个数=0x2d0=720|0;VPFE_CCDC_FMT_VERT = 0//0x0000020E; //数据重新格式化、图象输入接口垂直信息|(0<<16) //bit31~29保留,从vd开始的水平开始象素|(0x20e<<0) //bit15~13保留,水平方向的象素个数=0x20e=526|0;VPFE_CCDC_FMT_ADDR0 = 0;VPFE_CCDC_FMT_ADDR1 = 0;VPFE_CCDC_FMT_ADDR2 = 0;VPFE_CCDC_FMT_ADDR3 = 0;VPFE_CCDC_FMT_ADDR4 = 0;VPFE_CCDC_FMT_ADDR5 = 0;VPFE_CCDC_FMT_ADDR6 = 0;VPFE_CCDC_FMT_ADDR7 = 0;VPFE_CCDC_PRGEVEN_0 = 0;VPFE_CCDC_PRGEVEN_1 = 0;VPFE_CCDC_PRGODD_0 = 0;VPFE_CCDC_PRGODD_1 = 0;VPFE_CCDC_VP_OUT = 0//0x041A2D00; //video port输出设置|(0x20d<<17) //被时钟输出到video port的垂直线数=0x20d=525|(0x2d0<<4) //被时钟输出到video port的水平线数=0x2d0=720|(0<<0); //每个输出行的水平开始象素=0VPFE_CCDC_PCR = 0x00000001; // Enable CCDC,bit1=是否busy,bit0=enable//如果禁止的话,CCDC会向DSP发送中断,不需要中断需要配置INTC}/* ------------------------------------------------------------------------ ** ** vpbe_init( ) ** ** NTSC: ** Width: 720 ** Height: 480 ** ** ** ------------------------------------------------------------------------ */void vpbe_init( Uint32 buffer, Uint32 width, Uint32 height, Uint32 colorbar_loopback_mode, Uint32 ntsc_pal_mode, Uint32 output_mode ){Int16 basep_x;Int16 basep_y;RGBCOLOR rc;if ( ntsc_pal_mode == NTSC ){basep_x = 0x7A; // 122basep_y = 0x12; // 18}else{basep_x = 0x84; // 132basep_y = 0x16; // 22}/** Setup VPBE*/VPSS_CLK_CTRL = 0x00000018; // Enable DAC and VENC clock, both at 27 MHz VPBE_PCR = 0; // No clock div, clock enable/** Setup OSD*/VPBE_OSD_MODE = 0//0x000000fc; // osd模式寄存器// 最后8位指定背景色地址(ROM0)|(0<<15) //cb/cr顺序,0=cb/cr,1=cr/cb (修改这个1会把背景变红)|(0<<14) //osd窗口垂直扩展使能,如果使能,bitmap窗口//Y值将延伸为6/5。

相关主题