基于DSP和USB2.0的高速偏振图像采集处理系统
2009-03-02
作者:张伟伟,薛模根,袁魏华
摘 要: 论述了基于DSP和USB2.0接口的高速偏振图像采集处理系统的设计,详细介绍了偏振图像采集处理的实现方法和原理。利用TMS320VC5509和USB2.0接口芯片,实现了偏振图像的高速采集与处理,完成了图像的压缩传输。
关键词: DSP;USB;偏振图像采集与处理;图像压缩
DSP芯片凭借其强大的功能、越来越快的速度以及很高的性价比,被广泛用于通信、雷达、生物医学、机器人、控制、精密机械、语音和图像处理等领域[1]。USB接口的热插拔、速度快(速度高达480Mb/s)和外设容量大(理论上可挂接127个设备)以及便携等特性,使其成为PC机的外围设备扩展中应用日益广泛的接口标准[2]。基于DSP强大的数字信号处理功能和USB接口便携、高速和易于扩展的特点,设计并实现了基于TMS320VC5509和USB芯片的一套多功能高速偏振图像采集处理系统,利用图像压缩算法实现了偏振图像的高速采集。该系统的DSP主要负责数据的采集和偏振图像的合成压缩处理,采集到的图像数据通过USB口传到PC主机上进行显示、计算和分析等。
1 系统的硬件设计
1.1 系统的总体结构
器件选择方面,本系统在满足系统要求的前提下,应尽可能减少系统资源的冗余,提高系统的集成度。所以本系统的数据源是即得的数字信号,忽略了由模拟信号经采集、量化编码得到数字信号的过程。
整个偏振图像采集处理系统的硬件部分包括偏振图像的采集、存储、合成压缩和传输四部分。图1是高速偏振图像采集系统的原理框图。
由于每幅偏振图像达到1024×1024×8bit,所以在采集端选用了Cypress公司的CY7C68013作为偏振图像采集端。采集到偏振图像后存入SDRAM,图像压缩算法压缩后通过DSP自带的USB接口传送到上位机。
1.2 系统的主要组成部分
1.2.1 DSP处理模块
本系统的DSP芯片主要负责偏振图像的采集与处理。选择DSP处理器时主要考虑其运算速度、总线宽度和性价比。系统进行实时图像采集与处理,要求较高的运算速度,所以选用了TI公司的TMS320VC5509。TMS320VC5509的CPU的主时钟能够工作在144MHz,利用双累加器和算术逻辑单元,每个周期能执行一条指令或并行的两条指令,具有高达288MIPS的处理能力。TMS320VC5509启动模式可选,上电后执行驻留在低地址空间的BOOTLOADER,然后根据4个中断输入信号的状态判断启动模式,可以从RAM、ROM或串行口启动[3]。本系统选择从FlashROM加载方式。DSP将采集到的图像数据进行偏振图像的合成压缩后通过有线或者无线的方式传输出去。
1.2.2 USB接口模块
由于USB协议非常复杂,开发者不可能在底层基础上进行开发。系统选用CYPRESS公司的带单片机内核的EZ-USB FX2系列的CY7C68013。该芯片遵从USB2.0规范(480Mb/s),将8051单片机内核、智能USB接口引擎、USB收发模块、存储器、串行口等集成,从而减少芯片接口时序。CY7C68013有两种接口方式,设计采用的是外部主控制器(VC33),就像对普通的FIFO一样对FX2的多层缓冲FIFO进行读写。
DSP与USB接口原理图如图2所示。USB接口芯片CY7C68013由3.3V供电,XTALIN、XTALOUT连接无源晶振,晶振选择24MHz。DPLUS、DMINUS为USB差分数据传输线。EA是外部程序存储器和片上程序存储器选择输入控制位,1表示选择外部程序存储器方式,0表示选择片上程序存储器方式。PAO/INTO#选择INTO#工作方式,其中断级别最高。当FIFO全满造成数据溢出导致数据采集发生严重错误时,该中断请求发生,系统通知数据溢出错误,并停止数据采集。RESET#为USB接口芯片复位输入。
1.2.3 数据存储模块
在缓冲器件的选择上,可以使用双端口器件(如FIFO、双口RAM等)、SDRAM等方法。首先考虑采用双端口器件,原因是双端口器件在软硬件设计上很容易实现,但由于原始偏振图像太大,远远超过现有技术条件下所能制造出的双端口器件的最大容量,因此双端口器件不适用于该设计。其次考虑SDRAM,原因是它拥有足够的存储深度,且价格便宜,便于采购,适合本模块的需要。
在实时图像数字处理器中,采用SDRAM存储图像数据有两个优点:一是速度高,由于同步存储,存取时间可达6ns~7ns;二是单片容量大,有利于减少直观图像处理系统的体积。
由于TMS320VC5509只支持16bit的数据宽度,因此需要将DSP的BE1、BE0分别和SDRAM的DQMH、DQML对接,实现DSP和MT48LC4M16A2的无缝连接。其A10管脚对应precharge,因此和DSP的SDA10相连,CKE需要用一个上拉电阻拉为高电平。在采用CE0、CE1片选空间合并使用,只将CE0与SDRAM的片选信号连接,在CE0的空间寄存器中,存储器类型MTYPE=011b。DSP与SDRAM的连接图如图3所示。
2 系统的软件设计
系统的软件设计包括DSP图像采集和处理程序设计、Firmware固件设计、驱动程序和上层应用程序的设计。系统流程图如图4所示。
2.1 Firmware固件设计
Cypress公司针对其EZ-USB FX2系列的USB芯片给出了一个Firmware库和Firmware框架,均是用KeilC51开发的。Firmware库提供了一些常量、数据结构、宏、函数来简化对芯片的使用。用户只需要在源程序中包含fx2.h、fx2 regs.h和fx2 sdly.h,并把Ezusb.lib和USBJmpTb.OBJ添加到项目中即可。Firmware框架实现了初始化芯片、处理USB标准设备请求以及挂起下的电源管理功能。该框架不需添加任何代码,编译后产生的.HEX文件下载到芯片就能与主机进行基本的USB通信,只是不能完成用户特定的任务。对于用户而言,主要的工作就是选择适当的传输方式,添加需要使用的端点(Endpoint),在主要关心的TD_Init()、TD_Poll()等函数中添加初始化代码和完成特定的功能代码即可。由于系统要求的实时性较高,且对采集到的数据的正确性有严格要求,故采用了具有出错重传机制的BULK块传输模式和自动打包(AUTO IN=1),以提高数据传输的速度[5]。由于代码相对简单就不作特殊说明。
2.2 驱动程序及主机端应用程序设计
Cypress FX2开发包中提供了一个通用设备驱动程序ezusb.sys,可用于基于EZ-USB系列的芯片,且不需修改直接使用,完成基本的USB接口通信任务。开发USB设备驱动程序一般有两种有效、快速的方法:一是根据芯片公司提供的通用设备驱动结合自己的要求,用DDK等工具修改通用驱动源码以达到目的,例如将Cypress公司提供ezusb.sys驱动中一些不常用的读取描述符的函数去掉,添加一些和本设计有关的函数等;二是利用第三方提供的驱动程序开发软件如Windriver、DriverStudio等,生成USB 驱动程序基本框架,再添加一些具体函数实现设备功能。
主机端应用程序主要实现从USB 接口芯片中读取采样和分析数据及发送一些设置参数和DA 数据。Cypress FX2开发包提供的EZ-USB通用驱动程序为主机端的用户态应用程序提供了USB 标准设备请求和数据传输的接口。所有用户程序访问EZ-USB通用驱动程序都是通过I/O Control调用的。用户程序首先通过调用Win32函数CreateFile()得到设备驱动程序的句柄;然后调用Win32函数Device IOControl(),通过得到的句柄把I/O Control Code(IOCTL)和相关的输入输出缓冲区提交给驱动程序。EZ-USB通用驱动程序支持的IOCTLs和它们相应的输入输出结构都定义在开发包提供的头文件ezusbsys.h中,用户在使用时需要包含这个头文件。
2.3 系统的应用程序设计
在完成硬件和软件的综合调试后,用偏振图像采集处理模块与偏振相机连接进行了多次实验,并对模块的几个重要指标进行了测试分析。
其中,偏振相机与偏振图像采集处理模块连接,构成任务端部分。控制端则用一台P4计算机构成。在实际应用中,任务端与控制端之间的通信方式视具体运用环境而定,既可通过无线方式进行通信,也可通过有线方式进行通信。而在实验测试条件下,主要目的是为了检验模块工作性能。因此,用简便可靠的有线通信代替无线通信。为与偏振图像采集处理模接口保持一致,并保证较高的传输速率,有线通信采用了USB通信方式。在控制端,运行的是人机交互控制程序。
2.4 偏振图像的压缩传输
由于系统的需要,在模块得到原始图像后要进行合成处理,合成处理就是通过已得到的数学公式将三幅原始偏振光强度图像信号合成为另外五路图像信号:强度图像信号I、偏振度图像信号P、偏振角图像信号A、Q图、U图。
对合成处理后得到的偏振图像要分别进行有损压缩和无损压缩,以增强模块的工作效率,如图5所示。
在有损压缩算法的选取上,选择了目前较为常用的JPEG算法。JPEG算法的实现通常有三种方式[6],即普通PC机上的纯软件实现法,基于DSP数字信号处理器件的实现法和基本可编程逻辑器件的专用集成电路实现法。其中,基于PC机的纯软件实现法不适用于小型化的军用装备,基于可编程逻辑器件的专用集成电路实现法具有更好的实时性和更高的运行效率,但程序复杂。基于DSP的实现方式,由于DSP具有较高的运行效率且算法实现相对简单。本文就是利用基于DSP的实现方式实现了JPEG压缩算法,达到了偏振图像的压缩要求。
对于合成处理后得到的偏振度图像和偏振角图像,必须采用无信息丢失的无损压缩,力求增强模块的工作效率,缩短模块响应时间。在无损压缩算法上采用了现阶段较为常用的LZW压缩算法。其基本原理是[7]:LZW把每一个第一次出现的字符串用一个数值来编码,在还原程序中再将这个数值还成原来的字符串。例如:用数值0x100代替字符串“abccddeee”,每当出现该字符串时,都用0x100代替,这样就起到了压缩作用。至于0x100与字符串的对应关系则是在压缩过程中动态生成的,而且这种对应关系隐含在压缩数据中,随着解压缩的进行,这张编码表会从压缩数据中逐步得到恢复,后面的压缩数据再根据前面数据产生的对应关系产生更多的对应关系,直到压缩文件结束为止。
实验表明,PC机处理后的偏振度图与系统处理后得到的偏振度图。在不放大的情况下肉眼无法分辨压缩图像质量与原图的区别。
本文介绍了基于USB2.0 接口和DSP 的高速数据采集处理系统的系统构成、硬件连接以及USB2. 0驱动程序和固件程序的开发以及模块的图像处理程序。经实验验证,本系统运行可靠,是一种比较好的高速偏振图像采集与处理的解决方案。
参考文献
[1] 王念旭.DSP基础与应用系统设计[M].北京:北京航空航天大学出版社,2001.
[2] 俞平,秦树人.基于DSP和USB2.0高速数据采集处理系统[J].重庆大学学报,2005,(5).
[3] Texas instruments Co.Using the TMS320VC5509 Bootloade.
[4] 廖良斌.基于DSP和USB的图像采集系统的研究[D].湖北:武汉理工大学,2005.(6).
[5] Cypress Semiconductor Corporation.Cypress USB 2.0 Mass Storage Device Driver for Windows.2003.
[6] JPEG 2000 Part I Final Committee Draft Version 1.0. ISO/IEC,2000.
[7] 王平.LZW无损压缩算法的实现与研究[J].计算机工程,2002,(7).