CMOS图像传感器是近年来得到快速发展的一种新型固态图像传感器。它将图像传感部分和控制电路高度集成在同一芯片里,体积明显减小、功耗也大大降低,满足了对高度小型化、低功耗成像系统的要求。与传统的CCD图像传感器相比,CMOS图像传感器还具有集成度高、控制简单、价格低廉等诸多优点。因此随着CMOS集成电路工艺的不断进步和完善,CMOS图像传感器已经广泛应用于各种通用图像采集系统中。同时作为一种PC机与外围设备间的高速通信接口,USB 具有许多突出的有点: 连接简便,可热插拔,无需定位及运行安装程序,无需连接外设时关机及重启系统,实现真正的即插即用;高传输速率,USB 1.1协议支持12Mb/s;不占用系统硬件资源,能够自动检测和配置外围设备,不存在硬件冲突问题。
因此,利用CMOS数字图像传感器与USB接口数据传输来实现的指纹识别仪具有结构简单,体积小,便携化等优点。现将介绍利用OMniVision公司的CMOS彩色数字图像传感器OV762M和cypress公司的EZ-USB AN2131QC USB控制传输芯片(内部集成了增强形51内核)来实现指纹信息的采集和USB传输,同时由于指纹传感器输出数据的速率(27MB/s)与USB控制器(AN2131QC)数据传输速率(12Mb/s)的不匹配,故系统采用了SRAM和CPLD构成中间高速缓冲区。
系统结构
首先,AN2131QC通过I2C对指纹识别传感器(OV7620)的窗口设置等参数进行配置,光学透镜把像成在OV762M的像面上后,CMOS图像传感器(OV7620)对其进行空间采样,并按照一定的帧频连续输出8位的数字图像数据Y[7∶M](输出数字图像数据的帧同步信号为VSYNC,水平有效信号为HREF,输出时钟信号为PCLK)。为了实现指纹传感器输出数据与USB控制器(AN2131QC)读取数据速度与时序的匹配,使用了SRAM(IS61C1024)和CPLD构成高速缓冲区,利用此高速缓冲区将OV762M采集的指纹数据缓存。AN2131QC实现与上位机的USB通信,将高速缓冲区中数据的传输到PC机进行相应图像处理。
CMOS数字图像传感器OV7620
CMOS数字图像传感器OV762M集成了一个664×492 的感光阵列、帧(行)控制电路、视频时序产生电路、模拟信号处理电路、A/D转换电路、数字信号输出电路及寄存器I2C编程接口。感光阵列得到原始的彩色图像信号后,模拟处理电路完成诸如颜色分离与均衡、增益控制、gamMA校正、白电平调整等主要的信号处理工作,可根据需要输出多种标准的视频信号。视频时序产生电路用于产生行同步、场同步、混合视频同步等多种同步信号和像素时钟等多种内部时钟信号,外部控制器可通过I2C总线接口设置或读取OV762M的工作状态、工作方式以及数据的输出格式等。
AN2131QC通过I2C总线接口设定OV762M的寄存器来控制输出帧率在0.5帧/s~3M帧/s之间变化,输出窗口在4×2~664×492 之间可调(默认输出640×48M的标准VGA格式),设置黑白平衡等。根据指纹采集的需要,窗口输出设置为: 320×288,经过设定后的OV762M输出时
VSYNC是垂直场同步信号(也是每帧同步信号,CMOS是按列采集图像的),其下降沿表示一帧图像的开始,HREF 提供了一种有效的控制方式,当输出像素行列分别处于设定窗口之间时HREF 为有效高电平,此时输出有效的视频数据,PCLK是输出数据同步信号,上升沿输出一个有效的像素Y[7∶M].
基于CPLD技术的高速数据缓冲区的实现
在由CPLD和SRAM构成的高速数据缓冲区中,CPLD充当了SRAM的控制器,
中ram_rd,raM_wr为输出到SRAM的读写信号线,raM_data,ram_addr为SRAM的数据地址总线;latch_f为SRAM的读写允许信号,当为高电平时允许对SRAM写操作,为低电平时允许对SRAM读操作;两个8路三态门用于隔离总线,当对SRAM写时,输出cpu_datA为高阻态,当对SRAM读时,将采集数据信号Y [7∶M]隔离;cpu_rds,vsync为开始读写信号,单个正脉冲将SRAM地址置0;cpu_rD作为SRAM快速读脉冲,pclk为SRAM写脉冲;irq为写满标志,用于向上提供中断标志;地址发生器用于产生SRAM地址(IS61C1024有17根地址线)。
中逻辑知道,当允许对SRAM写(latch_f=1)且采集的数据有效(href=1)时,pclk脉冲通过地址发生器产生地址(sync单个正脉冲将SRAM地址复位到0),将采集的数据Y[7∶M]写入SRAM中,当写满(写完一帧的32M像素×288像素)时,irq信号有效,通过中断将latch_f置低允许将SRAM数据读出(cpu_rds单个正脉冲将SRAM地址复位到0),此后cpu_rD通过地址发生器产生地址将SRAM中数据读出到USB缓冲区。上述逻辑仿真波形如图4 所示(由于数据线和地址线较多,故只取其中部分信号时序,cpu_datA为X 表示其值根据SRAM数据总线上具体值而定),由图4 可知,CPLD实现了对SRAM的控制,与SRAM一起组成了高速数据缓冲区。
USB 快速批量传输的实现
USB 控制接口芯片AN2131QC特性简介
AN2131QC是基于USB 1.1协议设计的,支持高速12Mb/s的传输速率,内嵌有增强型8051微控制器、8kB的RAM和一个智能USB内核的收发器,它包含一个I2C总线控制器和3个8位多功能I/O口,有8位数据总线和16位地址总线用于外部RAM扩展。
AN2131QC内部的USB差分收发器连接到USB总线的D+和D-上。串行接口引擎(SIE)对USB总线上串行数据进行编码和译码(即实现USB协议的打包和解包工作),同时执行错误纠正、位填充及其它USB需要的信号标准,这种机制大大减轻了8051的工作,简化了固件的编程。内核微处理器是一个增强型8051,其指令周期为4 个时钟周期并具有双DPTR指针,同时指令与标准8051兼容。它使用内部RAM存储固件程序和数据,上电后,主机通过USB总线将固件程序和外设特性描述符到内部RAM(也可以直接从板上E2PROM上读取),然后重连接,按照的特性描速符进行重枚举,这种设计可以实现软件USB快速批量传输的实现。
当采集的指纹数据导入了由SRAM和CPLD构成的高速数据缓冲缓冲区后,要通过USB接口将数据发送到上位PC机,AN2131QC必须先将数据读入到内部USB缓冲区,因此,AN2131QC将数据传到内部USB缓冲的速度将是整个USB数据传输速度快慢的关键。为了使USB数据传输(从外部读入数据并将之传到PC机)达到快,需要采用很多措施,下面就设计指纹识别仪固件(AN2131QC程序)中采用的USB批量传输进行探讨。
正常情况下,AN2131QC内核结构从外部读入数据到USB的端点缓冲区,要使用的汇编程序为:
movx a,@dptr;读外部数据到acc寄存器incdptr;外部地址加1
incdps;切换DPTR指针(内核有双DPTR指针,用dps进行切换)
movx @dptr,a;将acc内容放入USB缓冲区
incdptr;USB缓冲区地址加1
incdps;切换DPTR指针
由上述程序可知,数据在寄存器中完成操作后,都必须有一个“incdptr”和“incdps”指令来完成16位地址的增加和缓冲区指针切换。为了消除这种内部消耗,使用AN2131QC提供的一种特殊的硬件指针即自动指针(只用于内部缓冲区),8051装载USB缓冲区地址到两个AUTOPTRH (高字节地址)和AUTOPTRL(低字节地址)寄存器中,向AUTODATA写入的数据就直接存入由AUTOPTR/H2L指向的地址缓冲区中,并且内核自动增加AUTOPTR/H2L中16位地址的值。这样USB缓冲区可以像FIFO一样来顺序写入数据,节省了每次写内部USB缓冲区时的“incdptr”指令。同时内核还提供一种快速模式(只用于对外部数据操作),此模式从外部读数据“movx a,@dptr”时,直接将外部数据总线和内部缓冲区连在一起,由于使用CPLD和SRAM构成的指纹高速缓冲区具有FIFO的性质,所以使用快速模式读外部指纹数据时也节省了“incdptr”指令。将上述两种方式结合起来,读外部数据到内部缓冲区程序就只需要一条指令:movx @dptr,A(dptR存放AUTODATA寄存器地址),此指令需要两个8051机器周期(8个24MHz时钟周期)。这样,一个字节可以在333ns内读入到USB端点缓冲区。
在USB接口数据传输一侧,当PC机要对一特定端点进行读数据并发送IN令牌,如果一个IN令牌到达时8051还没有完成向USB端点缓冲区的数据装载(读外部数据),AN2131QC就发送一个NAK握手信号来响应IN令牌,表明PC机应该在稍后再发送一个IN令牌。为了解决这种等待从而达到快的传输速度,可以使用双缓冲技术(端点配对),使8051在前一个数据包在USB总线上传输的时候,装载块数据的下一个数据包。
结 论
利用CMOS数字图像传感器OV762M和USB控制器AN2131QC实现的指纹仪结构简单,体积小,使用方便。指纹识别系统中使用CPLD技术实现了高速缓冲,解决了速度时序匹配问题;使用了快速批量USB传输技术实现了数据的快速传输,使指纹数据的传输达到速(每帧传输只用80Ms)。使用现论述的方法实现的指纹仪采集的指纹数据经PC机重现后效果如图6所示(左图是未经任何处理的重现,右图是经过平滑、细化等算法处理后的重现)
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。