基于DM642的多路视频采集系统

时间:2024-09-23 11:49:44 硕士毕业论文 我要投稿
  • 相关推荐

基于DM642的多路视频采集系统

引言
  
  随着数字信号处理器 DPS 芯片集成度,运算速度,数据吞吐率等性能的不断提高,己被广泛应用于许多实时视频处理和传输领域。一般图像处理系统由摄像机、图像采集卡、计算机构成,图像理解和处理算法全部以软件方式实现。这是因为实时数字图像处理信息量和计算量大,而大多数图像采集卡基于成本考虑没有处理器和大容量的存储器,绝大部分任务必须依靠计算机才能胜任。这种计算机参与的系统的应用场合受到很大限制,在工业或军事等复杂环境下应用极为不便,因此许多专用图像处理系统应运而生。脱离计算机独立运行的实时专用图像处理系统,由于集图像采集、处理等功能于一体,并易于满足图像处理中数据量大、运算复杂、实时性强等要求而受到众多研究人员的关注。
  TI 公司推出的TMS320DM642 型数字信号处理器可实时处理4 路模拟视频和音频输入、1 路模拟/数字视频和1 路模拟音频信号输出[1-2]。适应PAL/NTSC 标准复合视频CVBS 或分量视频Y/C 格式的模拟信号输入,可适于PAL/NTSC 标准S 端子或数字RGB 模拟/数字信号输出,也可适应标准麦克风或立体声音频模拟输入及标准立体声音频模拟输出,并进采用EDMA 的数字视频图像信号的实时传输,具有对多路采集数据进行实时处理和分析的功能。
  
  1 系统设计
  
  TMS320DM642 是32 位定点高性能处理器,最高工作频率可以达到720MHz,处理能力可以达到5760MIPS,因此可以实现对多路图像的实时处理[3-5]。DM642 在TI 的C64x DSP内核基础上进一步集成了完备的视频接口、音频接口、以太网接口、PCI-66 总线等片上外设。用户可以方便地对音频、视频等各种复杂的运算进行高速处理,因此DM642 已经广泛的应用于数字视频服务器、多通道数字视频录像机、多通道数字视频监控等领域。
  本系统配置了 4M 的Flash 和32M 的SDRAM,可以满足一般应用的需要。DM642 有三个视频口,分别为VP0、VP1 和VP2。其中VP2 为单一功能的视频口。VP0 和VP1 是与McBSP、McASP 复用引脚。DM642 上集成了一条I2C 总线,本系统中一共有4 个视频输入口,而一个I2C 中线能只能接两个SAA7113 视解编码器,因此需要在I2C 总线上做总线切换,分成I2C0 和I2C1,这样就可以接4 个SAA7113 视解编码器。I2C 总线切换电路见图1。
  整个系统是DM642 为核心,主要包括视频模块、存储模块、通信模块以及其他外围电路部分。视频模块由四块编码器芯片和一块解码器芯片组成,采用切换方式以支持四路复合视频输入和一路视频输出显示;以存储模块通过DM642 的EMIF 接口扩展片外存储器SDRAM 和FLASH,并通过CPLD 控制FLASH 片内分页寄存器的读写;通信模块部分利用CPLD 控制并口传输模式,实现时序逻辑以及数据传输,使整个系统作为从设备接受主设备控制以完成特定的图像处理运算等。整个系统的框图。
  
  2 软件设计
  
  本设计的驱动程序是按照TI 公司的DDK 驱动模型设计的,具有很好的复用性、移植性和借鉴性。DDK 是TI 公司为简化驱动开发复杂度,而定义的一个标准的驱动模型和一套API 函数[6-7]。该驱动模型主要分为两层:类驱动和微型驱动。其中类驱动通过每个外部设备独有的微型驱动对设备进行操作。微型驱动通过控制外设的寄存器、内存和中断资源对外部设备实现控制。微型驱动程序必须将特定的外部设备有效地表示给类驱动。
  根据 DDK 驱动模型,本驱动程序设计主要包括三个部分: I2C 总线控制部分,就是I2C总线读写操作的实现部分;类驱动部分,主要是为应用程序提供API 接口,它的设计在DDK模型里是通用的,可以不修改地直接采用,所以这里就不作具体介绍了;微型驱动部分是与硬件有关的,是驱动程序设计的重点。
  
  2.1 I2C 总线控制驱动程序设计
  该部分是实现 DM642 通过I2C 总线对SAA7113H 和SAA7121H 的控制,使用了底层函数。在TI 的CSL(Ship Support Library)中都有,只要包含相应的头文件即可直接调用。如I2C配置结构体(I2C_config)、I2C 写数据函数(I2C_writeByte)、I2C 配置操作函数(I2C_RSETH)等。
  要是实现对SAA7113H 和SAA7121H 的控制,就要先对其进行配置。
  对 SAA7113H 进行配置:
  SA7113H_ConfParams sa7113hPAL[28] = {{0x01,0x08},{0x02,0xC3},{0x03,0x33},{0x04,0x00},{0x05,0x00},{0x06,0xE9},{0x07,0x0D},{0x08,0x00},{0x09,0x01},{0x0A,0x80},{0x0B,0x47},{0x0C,0x40},{0x0D,0x00},{0x0E,0x01},{0x0F,0x24},{0x10,0x08},{0x11,0x0C},{0x12,0x7E},{0x13,0x02},{0x15,0x17},{0x16,0x35},{0x17,0x02},{0x40,0x02},{0x58,0x00},{0x59,0x54},{0x5A,0x07},{0x5B,0x80},{0x5E,0x00}
  };对SAA7121H 进行配置:
  SA7121H_ConfParams sa7121hPAL[45] = {{0x26,0x00},{0x27,0x00},{0x28,0x21},{0x29,0x1d},{0x3A,0x13},{0x5A,0x0c},{0x5B,0x21},{0x5c,0xAF},{0x5d,0x23},{0x5e,0x35},{0x5f,0x35},{0x60,0x00},{0x61,0x06},{0x62,0x2F},{0x63,0xcb},{0x64,0x8a},{0x65,0x09},{0x66,0x2a},{0x67,0x55},{0x68,0x56},{0x69,0x67},{0x6a,0x58},{0x6b,0x20},{0x6c,0x05},{0x6d,0x20},{0x6e,0xA0},{0x6f,0x14},{0x70,0x80},{0x71,0xe8},{0x72,0x10},{0x73,0x42},{0x74,0x03},{0x75,0x03},{0x76,0x05},{0x77,0x16},{0x78,0x04},{0x79,0x16},{0x7a,0x18},{0x7b,0x38},{0x7c,0x40},{0x7d,0x00},{0x7e,0x00},{0x7F,0x00}  
  };
    
  2.2 多路视频采集的驱动程序设计
  本驱动程序是基于 DDK 驱动模型设计的,通过 DSP/BIOS 配置工具在DSP/BIOS 应用程序中注册并使用一个微型驱动,配置应用程序使用该微型驱动。创建一个新的设备对象后,对其属性主要设置设备号、设备参数指针、设备实例的驱动函数表以及该驱动函数表的类型。
  FVID 模型是建立在GIO 模型之上的,并对GIO 模型进行了改进。典型的有FVID_create()、FVID_control()、FVID_alloc()、FVID_exchange()、FVID_free()函数。FVID 函数会在设备表中查找已注册的微型驱动,并调用微型驱动函数完成对外部设备的操作。然后创建FVID 采集、显示通道,配置 SAA7121, SAA7113,分配相应的缓冲区,对得到的视频帧进行处理等操作。
  本设计是对两路视频信号同时采集,通过三个任务来完成:两个视频采集任务任务、一个视频输出任务。任务间是通过SCOM 模块进行通信的,SCOM 模块管理SCOM 队列对象。
  每一个SCOM 队列内部使用一个队列对象(QUE)和一个旗语对象(SEM)。在SCOM 队列的结构在SCOM 模块中是私有的。应用程序不应该涉及到SCOM 队列的对象。
  视频采集任务的程序:
  void tskVideoCaptureVp1(){FVID_Frame *capFrameBuf;SCOM_Handle fromInput1toDIS,fromDIStoInput1;fromInput1toDIS = SCOM_open("IN1TODIS"); /*打开SCOM 模块*/fromDIStoInput1 = SCOM_open("DISTOIN1");FVID_alloc(capChan, &capFrameBuf); /*申请一个空间*/while(1){SCOM_putMsg(fromInput1toDIS, (FVID_Frame *)capFrameBuf);//向队列中写消息SCOM_getMsg(fromDIStoInput1, SYS_FOREVER); //重队列中读消息FVID_exchange(capChan, &capFrameBuf);}
  }
  这是其中的一路视频采集程序,通过同样的方法可以写出第二路的采集程序。视频输出的任务中完成了两路视频的输出,主要在循环中完成,程序如下:
  while(1){capFrameBuf=(FVID_Frame*)SCOM_getMsg(fromInput1toDIS,SYS_FOREVER);for(i = 0; i < numLines; i ++){DAT_copy(capFrameBuf->frame.iFrm.y1 + i * capLinePitch,disFrameBuf->frame.iFrm.y1 + i * disLinePitch, numPixels);}
  capFrameBuf = (FVID_Frame *)SCOM_getMsg(fromInput1btoDIS, SYS_FOREVER);for(i = 0; i < numLines; i ++){DAT_copy(capFrameBuf->frame.iFrm.y1 + i * capLinePitch,disFrameBuf->frame.iFrm.y1 + i * disLinePitch+352, numPixels);}
  DAT_wait(DAT_XFRID_WAITALL);CACHE_clean(CACHE_L2ALL,NULL,NULL);FVID_exchange(disChan, &disFrameBuf);SCOM_putMsg(fromDIStoInput1, NULL);/* loop forever */SCOM_putMsg(fromDIStoInput1b, NULL);/* loop forever */}
  整个软件设计的流程图见:
  
  3 系统调试
  
  本系统是一个多路视频采集系统,通过巧妙的硬件设计和精简的软件设计,可以实时输出各路图像。以两路为例,通过两个CCD 摄像头,分别接到四个视频采集口中的两个,然后通过把视频输出端口接到VGA 显示器上。显示器分左半边显示摄像头A 的图像,右半边显示摄像头B 的图像。实际效果图见。
  
  4 结论
  
  本系统通过 I2C 总线上切换的方法完成了多路视频采集系统的硬件设计,以 DDK 驱动模型做视频驱动开发,可提高驱动程序的可重用性和可移植性,简化视频驱动程序的开发,从而极大地提高驱动程序的开发效率。实践证明:基于 DDK 的视频驱动程序运行稳定,与应用程序实现了无缝连接,是一种高效可靠的开发方法。多路视频采集系统成功研制为多路视频实时处理系统的实现提供了软硬件支持。

中国硕士论文网提供大量免费硕士毕业论文,如有业务需求请咨询网站客服人员!
  
  [参考文献] (References)
  [1] Texas Instruments Incorporated.The DSP/BIOS Driver Developer’s Guide[Z].2002.
  [2] Texas Instruments Incorporated.TMS320DM64x DSP Video Port/VCXO Interpolated Control(VIC) Portreference Guide[Z].2003.
  [3] 刘琼,安涛,金钢等.基于 DM642 视频采集处理系统硬件设计[J].微计算机信息,2007,11—2.
  [4] 徐婉莹,刘建军,黄新生.基于CPLD 和DSP 的高速图像采集技术研究[J].电子工程师,2004,30(6):48-50.
  [5] 薛长松,杨国胜,李志强.基于DM642 的的双CCD 同步运动研究[J].计算技术与自动化,2006, 25(4):24-27.
  [6] T1 DSP/BIOS 用户手册与驱动开发[M].北京:清华大学出版社, 2007.
  [7] 吴江,迟学芬,刘娜等.基于DDK 的音视频编码器驱动的设计[J].吉林大学学报(信息科学版),2007,25(3):246-250.

【基于DM642的多路视频采集系统】相关文章:

基于FPGA的多路模拟量、数字量采集与处理系统03-18

基于PCI总线的雷达视频采集方案03-19

基于USB接口的数据采集系统设计03-18

基于USB总线的高速数据采集系统03-26

基于Verilog HDL设计的自动数据采集系统03-21

基于ADSL传输的网络视频应用系统03-18

基于DSP的USB口数据采集分析系统03-18

基于用电采集系统的计量异常监测与分析03-16

基于Web的MCF5249数据采集系统的设计03-19