基于DSP的PCI图像采集卡设计
摘 要:介绍了CMOS黑白图像传感芯片OV5017的性能与特点,给出了采集卡软硬件设计实例,他利用TMS320VC5402对OV5017的图像数据进行采集和一些预处理工作,其数据通过DSP-PCI桥芯片PCI2040送给主机,从而实现图像采集系统的高速性和灵活性。
关键词:TMS320VC5402;OV5017;PCI2040;图像采集;驱动设计
随着计算机电子技术的不断发展,图像采集系统在各个方面得到了越来越广泛的应用,同时也对图像采集系统提出了更高的要求,快速、灵活、方便及可控性成为图像采集系统发展的方向。本文设计的采集系统以通用的DSP芯片TMS320VC5402作为核心处理器、OV5017作为系统的图像传感器,而数据通过PCI桥电路发送给PC机,因此该系统结构简单,具有即插即用、传输速率高的特点,并且由于OV5017可通过编程实现对该芯片的控制,TMS320VC5402又可对图像做一些预处理工作,因此具有采集系统的灵活性、可控性,鉴于该系统采集过程中的灵活性、快速性和可控性,故可更好地应用于一些需要实时采集、控制的图像监控、多媒体应用等领域。
1 OV5017简介
近年来发展较快的CMOS图像传感器,内部采用了相同的CMOS技术,因此可以将象素阵列与外围支持电路集成在同一块芯片上。CMOS图像传感器主要包括:一个图像传感器核心、单一时钟、所有的时序逻辑、可编程功能和A/D转换器。与CCD相比,CMOS图像传感器将整个图像系统集成在一块芯片上,具有性价比高、编程简单、功耗低的优点。
美国OmniVision公司开发的OV5017将CMOS光感应核与外围支持电路集成在一起,具有可编程控制与视频A/D混合输出等功能,其输出的视频为黑白图像,与CCIR标准兼容,该芯片适用于图像识别领域。
基本参数为:
(1)内置8 b的A/D。
(2)帧频为50~0.5,曝光设置为1~1/100帧。
(3)芯片图像尺寸为4.2 mm×3.2 mm,单个象素尺寸为11μm×11μm。
(4)信噪比SNR>42 dB;自动增益控制为0~18 dB。
(5)帧频为50且f1.4时,最小照度为0.51 ux。
(6)帧频为50时,峰值功耗小于100 mW。
(7)5 V模拟供电和5/3.3 V数字供电。
芯片内部有11个8 b寄存器,通过对地址线A[3…0]的设置来选择寄存器,通过读写数据线[7…0]来读取或设置寄存器。在对寄存器进行读/写时,应使片选CSB与输出使能OEB/写使能WEB有效。
OV5017输出模拟视频信号,格式为逐行扫描,可以同步输出8 b的数字视频流D[7…0]。在输出数字HREF、垂直同步信号VSYNC,便于外部电路读取图像。
2 图像采集系统硬件设计
图像采集系统硬件结构图如图1所示。
在本系统中,OV5017作为系统的图像传感器,其内部将获取的图像采集量化,在TMS320C5402的控制下输出数字图像,经过DSP存入图像存储器。根据OV5017视频读取时序(如图2)可设计如下连接:OV5017的管脚A[3…0],D[7…0]与TMS320C5402的管脚A[3…0],D[7…0]直接相连,用DSP的R/W产生OV5017的读写使能信号;用DSP的IS产生OV5017的片选信号,即只在DSP的I/O空间读写;用OV5017的PCLK,VSYNC产生读数据的中断信号,HREF作为数据有效的判断信号与BIO连接,OV5017的时钟信号由DSP的一个串口发送时钟CLKX0分频产生。
TMS320VC5402的HINT与本身的INT2相连用于HPI方式引导,HPIENA,HDS2,HAS接高电平;HDS1接PCI2040的HDS;HBIL接PCI2040的HWIL;HAD[0…7]接PCI2040的HAD[0…7];RS接PCI2040的HRST0;HRDY接PCI2040的HRDY5X0;HCS接PCI2040的HCS0;HR/W接PCI2040的HR/W;HCNTL[0,1]接PCI2040的HCNTL[0,1]。基本电路图如图3所示。
3 图像采集系统软件设计
由于DSP内部存储器容量不能存放一帧图像数据,故把DSP内部存储器分设出2个384×8=3 072存储空间,即每个存储空间可放1帧数据的8行,一个存储空间用于接收OV5017的图像数据,另一个存储空间用于向PC机发送图像数据,即1帧数据要被主机读取288/8=36次,主机每隔一段时间查询有关两段存储空间的2个标志字,标志字的最高位用于判断该存储空间数据是否有效,低15位用于判断该存储空间的数据属于1帧数据36部分的哪一部分。通过对2个存储空间的标志字的判断可得到该存储空间的数据的有效性和该数据在1帧数据中的位置,读取后置该存储空间的标志位为无效,直至DSP又在该存储空间存好数据,这时再改写该存储空间的标志位。
3.1 DSP采集数据软件设计
DSP复位后,通过HPI口引导加载程序,然后初始化DSP,初始化两块存储空间的标志字使之无效且低15位都为0,当VSYSNC即帧同步中断到来时,选择一个标志字无效的存储空间作为当前接收数据的存储空间,并设置该标志字的低15位为0,接着根据PCLK中断和HREF值依次读入各象素值直至该帧数据的前8行,这时标志字的低15位加1,并改写该存储空间标志位为有效,选择另一个标志字无效的存储空间作为当前接收数据的存储空间,并且使该存储空间的标志字低15位等于上一存储空间的标志字的低15位,接着继续根据PCLK中断和HREF值依次读入各象素值直至读取到该帧8行数据,这时标志字的低15位继续加1并改写该存储空间标志位为有效,这样依次读入1帧数据,并且每读取8行数据就被主机查询接收。该系统的DSP采集数据软件是通过CCS开发工具开发完成的。
3.2 主机采集数据软件设计
主机程序启动后,先初始化分配1帧大小的内存,99然后不断查询DSP中2个存储空间的标志字,当2个标志字有1个为有效时,就读取该标志位对应的存储空间的图像数据,并根据标志字的后15位知道该存储空间存储的图像数据在该帧图像中的位置,读取完后设置该标志字为无效,表示该数据已被读取,以供DSP继续用来存放图像数据。当读取完1帧数据后就可对该帧图像进行后期处理,直接显示或存储。该系统的主机采集数据软件是通过VC++6.0开发工具开发完成的。
在PC主机的软件设计工作中,首先通过DriverWorks开发一套针对该采集系统的驱动程序,然后根据上述流程编写应用程序,应用程序中对硬件的读写操作通过调用标准Win32 API函数DeviceIoControl来完成,下面就简单介绍一下关于DSP-PCI桥的驱动设计。
3.3 DSP-PCI桥的驱动设计
由于主机的操作系统是Windows 2000,故选取了微软公司主推的驱动开发模型WDM(Windows Driver Model)来设计自己的驱动程序,开发工具为DriverStudio。WDM模型使用了如图4的层次结构,图中左边是一个设备对象堆栈,设备对象是系统为帮助软件管理硬件而创建的数据结构,一个物理硬件可以有多个这样的数据结构,其中PDO为物理设备对象;FDO为功能设备对象。
其中总线驱动程序负责列举设备,总线驱动程序每发现一个设备就创建一个对应的物理设备对象,一些总线驱动程序只是简单地控制对总线的访问权,功能驱动程序负责完成特定的功能,知道如何控制设备工作,他在驱动程序堆栈中位于总线驱动程序上面,功能驱动程序负责创建一个功能设备对象。
一个完整的驱动程序包含许多例程,当操作系统遇到一个IRP时,他就调用这个驱动程序中的例程来执行该IRP的各种操作,通过DriverWorks的代码向导可生成专门为PCI设备定制的代码,PCI设备应用的各种例程都可通过向导生成,我们所做的工作是向各例程中添加代码。系统加载驱动时,在检测到硬件设备后,通过读写PCI配置寄存器中的内存基址寄存器(偏移10H)自动把PCI2040的CSR内存空间映射为Bar0(大小为4 k),通过读写PCI配置寄存器中的控制空间基址寄存器(偏移14H)自动把TMS320VC5402的HPI寄存器空间映射为Bar1(大小为32 k),共在驱动程序中映射为两段内存区。
由于该采集系统对硬件的操作大部分请求都是读写数据,需要设备执行IOCTL操作,应用程序使用标准Win32 API函数DeviceIoControl来执行这样的操作。在驱动程序一方,这个DeviceIoControl 调用被转化成一个带有IRP_MJ_DEVICE_CONTROL功能码的IRP,驱动程序中共设置了4对共8个这样的IOCTL操作,都使用METHOD_BUFFERED方式。这时I/O管理器创建一个足够大的内核模式拷贝缓冲区,当派遣例程获得控制时,用户模式的输入数据被复制到这个拷贝缓冲区,在IRP完成之前,向拷贝缓冲区填入需要发往应用程序的输出数据。当IRP完成时,设置IoStatus.Information域等于放入拷贝缓冲区中的输出字节数,然后I/O管理器把数据复制到用户模式缓冲区并设置反馈变量。驱动程序对Bar0有2个IOCTL操作,通过对HPIRESET寄存器(地址为BAR0的14H)读写来对DSP复位,通过DSP的HPIC寄存器、HPIA寄存器、HPID自增寄存器、HPID非自增寄存器(由于只连了一片DSP0,故A14,A13都为0,而A12,A11分别对应HCNTL1和HCNTL0,故各寄存器地址分别为BAR1的0,1000H,800H,1800H)的读写设置HPIC的读写操作、HPID自增方式的读写操作、HPID非自增方式的读写操作共对于Bar1相关的6个IOCTL操作。在DriverWorks向导生成框架时,申请2个属于KmemoryRange类的对象分别对应Bar0和Bar1,然后在这8个IOCTL操作中添加相应的对于应用程序的接口操作,在这里用KmemoryRange类对象的inw和outw函数来实现对硬件的读写操作。
最后在应用程序中打开设备,就可通过DeviceIoControl自如的读取图像数据了。
4 结 语
该系统的优点首先是结构简单,这是因为OV5017内部集成了A/D器件,同时可输出3.3 V数字电平,省略了很多外围器件,同时DSP通过主机接口HPI口连接PCI桥电路与计算机进行传输数据,因此还具有采集速度快的优点,再次由于OV5017可通过编程实现对该芯片的控制,TMS320VC5402又可对图像做一些图像的预处理工作,因此具有采集系统的灵活性。总之该系统可更好地应用于一些需要实时采集、控制的图像监控、多媒体应用等领域,为进一步做图像处理的其他工作做好了良好的准备。
|