图像采集系统设计
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字节的I2C E2PROM;
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 0
typedef 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配置寄存器