2.2 图像采集模块
TMS320DM8168 的HDVPSS(HD Video ProcessingSubsystem)提供了视频输入接口和视频输出接口。视频输入接口提供了外部图像设备(如图像传感器、视频解码器等)的接入。
HDVPSS可支持高达3 个60 f/s的1080p通道、同时支持16 个通道的CIF 数据流的H.264 高画质D1 编码与8通道D1解码;支持2个独立的视频捕捉输入端口,每个视频输入端口支持缩放、像素格式转换。两个视频输入捕捉端口均能以1个16 b输入通道(带分离的Y和Cb/Cr输入),或2个时钟独立的8 b输入通道操作(带交织的Y/C数据输入)。第一个视频输入端口能以24 b模式操作以支持RGB捕捉。所有采集模式捕捉时钟高达165 MHz,可满足高速率的图像采集。
高清视频处理子系统(HDVPSS)有两个独立视频捕捉输入端口VIP0与VIP1.VIP0可配置成24 b、16 b、和两个独立的8 b 模式,VIP1 可配置成16 b、和两个独立的8 b.从捕捉频率和各种配置模式可看出,针对不同的流量,可以有多种实现方法。为了存储设计简单,本方案将VIP0配置为24 b进行采集。在此模式下,最高流量为165M × 24 8 = 495 MB/s,可以满足流量要求。
从最高捕捉时钟可知,每次采集间隔在1 165M,约为6.1 ns.经计算,也为了设计方便,拟采用三个帧频均为200 f/s的Base配置的Camera Link相机,帧频控制均为外部触发方式,该Camera Link相机一次输出两个像素,每像素12 b,即2×12 b,刚好可以和VIP0的24 b匹配采集。以三路信号分时采集为例,如图3所示,3路信号的采集方法为3个相机轮流采集,即一个循环内每个相机各采一帧,这就需要实现3路分时采集的时序信号。由定时器产生一个1/200 s的脉宽,经延时环节使帧频高电平分时分路送入三个相机;3路采集信号时序关系为一个相机不进行延时,一个相机延时1/200 s,最后一个延时2/200 s.
相机通过DS90LV047A收到指令后,将拍摄到的图像数据分为4路LVDS数据信号和1路LVDS时钟信号,通过接口连接器MDR26 传输到DS90CR288A;DS90CR288A 将串行数据转换成28 路并行信号和1 路随路时钟信号,并传送至TMS320DM8168视频捕捉端口VIP0进行采集。
2.3 图像存储模块
从上述设计方案,系统存储速率约为160 MB/s,数据量较大,可选择大容量、高速的固态硬盘,通过其SATA2接口写入。
数据采集结束后,通过配置HDVPSS子系统将数据送入VPDMA,最后转入DDR 内存,当DDR 内存的数据量达到设定的数据量时产生中断,中断发生后,根据存放地址启动内存和固态硬盘之间的DMA 传输,将采集的图像通过SATA2接口存储在SSD上,实现数据存储。
然后启动定时器产生下一个帧频脉冲,开始下一周期的数据采集。
外部扩展存储器选取系统支持的DDR3(1 600)存储器。按照系统存储控制器位宽32 b 来算,内存速率可达32/8×1 600M=6.4 GB/s.在该模式下,采集和存储可并行处理。缓存所采集的数据移动到DDR3内存,其速率远高于端口采集的每秒数据量。因为该方案的采集方式是每帧轮流采集,并且帧内数据已按顺序紧凑排列,可大幅减少数据的重排工作,仅需去除一些辅助数据。采集系统将其余相关信号全部置成一帧一行的形式,让相机的时钟信号与系统采集端口的时钟信号通信,图像信号前有少量的辅助数据,设置DMA起始地址时直接跳过辅助数据。所以在本系统几乎不运行程序的情况下,固态硬盘可以最少有80%的时间占据DMA控制权进行内存图像数据的存储。按所选取的硬盘的持续写入速率250 MB/s 来算,250×0.8=200 MB/s 大于160 MB/s,所以1 s采集的数据可以进行实时存储。数据上传后,可以选择清除原有数据,释放硬盘空间。
2.4 外围接口模块
基于TMS320DM8168芯片丰富的外设接口,本系统能够灵活的进行外部接口设计来控制外围设备,并实现与外部处理器的通信功能。根据需求可供选取的接口有:2 个具有GMII 和MDIO 接口的千兆位以太网MAC(10 Mb/s,100 Mb/s,1 000 Mb/s);2个具有集成2.0 PHY的USB端口;双DDR2/3 SDRAM接口等,可参考图2.
TMS320DM8168 的两个USB 口可满足将采集的图像数据上传给上位机时连接键盘鼠标,LCD、VGA 接口可用来直接显示图像。串口亦可用来同上位机进行通信,且可用来控制本设计方案用到的Camera Link 相机。千兆网接口以其超高的速率可满足图像数据的高速传输。
上述技术的实现主要通过软件编程驱动外设接口来实现,具体方案见软件设计。
3 软件设计
本系统采用Linux操作系统,带有友好的界面,使操作更加灵活自如,能运行多任务。可以通过界面进行相机控制、图像的采集、停止、显示、图像上传等。这部分的开发可由两部分组成,移植和自主开发。软件设计如图4所示。
3.1 移植的程序
移植的程序包括Linux内核、网卡驱动、USB 2.0驱动、LCD驱动、串口驱动、VGA驱动、SATA2驱动。在这个方面,TI 公司提供了很好的支持,有专门针对DM8168的Linux操作系统,版本为Linux 2.6.37,可以通过TI公司提供的Linux EZ 软件开发套件(EZ SDK)进行开发。
3.2 自主开发的程序
3.2.1 驱动程序
为了规范地在Linux操作系统下操作,图像采集的电路部分需要图像采集应用程序相关的驱动程序进行支持。采集电路可分为多个功能模块分别进行驱动程序的编写,其中包括相机采集驱动(相应于VIP0进入数据后的操作);控制驱动(相应于对Timer进行控制);如果要根据外界环境改变相机工作状态,还需该部分驱动支持。采集驱动实现open,close 方法。控制部分实现open,close,ioctl 方法。自适应速率调整要实现open、close、ioctl、read 方法。在/DEV 目录下分别建立设备节点,然后应用程序通过对设备节点进行操作。
3.2.2 应用程序
应用程序的开发拟采用QT开发工具。应用程序拟设计成一个多线程程序,一个主线程,一个自适应调节参数线程,应用程序主要实现采集程序,停止,显示,配置,上传程序,分别对应于相应按钮。
采集按钮相应程序调用设备节点的open方法,open方法中对相应硬件进行配置,注册中断程序,启动Timer开始采集。流程如图5所示。
因为系统已经带有串口驱动,配置程序可以直接对串口编程。自适应环境速率调整程序由主界面程序开启一个新线程,该线程通过相应设备节点读取数据,判断是否调整,如需调整,通过上面所述串口设备节点或者控制设备节点进行重设。
4 结语
本文所构建的机器视觉系统是一个具有操作系统的独立、可控制的小型多功能系统,通过硬件设计和软件设计两部分实现,其功能模块包括视频图像采集与处理、视频图像存储、视频图像通信和视频图像显示等模块。采用先进的双内核嵌入式处理器,将多路图像传感器获取的视频图像信号高速并行采集,并根据需要进行图像无损压缩和图像融合,数据可大容量实时存储,并通过多种接口与上位机通信,具有友好的人机交互界面,可驱动多种显示屏幕完成高清显示和信息回放等功能。
由于该平台具有Linux操作系统,无需上位机即可完成系统参数设置、功能选择等操作。该系统可为机载、弹载、车载光电系统完成高速扫描、快速探测、主动识别、精确跟踪任务提供所需要的高清目标信息,并有望在平安城市、安防行业、工业控制、医疗教育、物流管理、电网运行、智能家居、智能汽车、食品安全等多领域得到应用。(御风)