当前位置:首页 >> 信息与通信 >>

cmos图像传感器一些应用参考


什么是 CMOS 图像传感器? 图像传感器? CMOS: 互补性氧化金属半导体 CMOS (Complementary Metal-Oxide Semiconductor) 和 CCD 一样同为在数码相机中可记录光线变化的半导体。 CMOS 的制造技术和一般计 算机芯片没什么差别,主要是利用硅和锗这两种元素所做成的半导体,使其在 CMOS 上共存着带 N(带-电) 和 P(带+电)级的半导体,这两个互补效应所产生的电流即 可被处理芯片纪录和解读成影像。 然而, CMOS 的缺点就是太容易出现杂点, 这主要是 因为早期的设计使 CMOS 在处理快速变化的影像时,由于电流变化过于频繁而会产生 过热的现象。 CMOS 图像传感器 IBIS5-B-1300 的驱动时序设计 1.2 工作原理 . IBIS5-B-1300 内部有 12 个寄存器,提供传感器工作所需的参数及工作方式。对寄存 器写入的数据决定了传感器的工作状态。寄存器的数据写入接口有 3 种:并行接口、 串行三线接口、串行两线接口。可通过芯片的 IF_MODE 和 SER_MODE 管脚接不同 的值来选择不同的数据接口模式(如表 1 所示)。

并行接口使用 16 b 并行输入来载入新的寄存器值。串行 3 线接口(或串转并接口)使用 串行接口将数据移入寄存器缓冲器,当完整的数据字移入寄存器缓冲器时,数据字才被 载入当前正在编码的寄存器。串行 2 线是一个单向的接口,本文暂不做分析。 IBIS5-B-1300 具有两种快门方式:卷帘快门和同步快门,用寄存器(0000)的 bitO 进行设定,“1”为卷帘快门,“0”为同步快门。时序如图 1,图 2 所示。

在卷帘快门模式下,帧频 Frame period=(Nr.Lines×(RBT+Pixel Period*Nr.Pixels))。 在同步快门模式下,帧频 Frame period=”Tint”+Tread out=”Tint”+(Nr.Lines× (RBT+Pixel Period*Nr.Pixels))。其中,Tint 为积分(曝光)时间;Nr.Lines 为每 帧读出的行数; Nr.Pixels 为每行读出的像素数; TBT 为行空白时间 (典型值为 3.5ms) ; Pixel Period 为 1/40MHZ=“25”。 卷帘快门中有两个 y 方向的移位寄存器,一个指向正在被读出的行,另一个指向正 在被复位的行, 两个指针由同一时钟 y_clock(行时钟)驱动, 它们之间的差值代表了光积 分时间。在卷帘快门模式下,像素的读出和复位同时进行,每行像素的复位和读出是顺 序进行的(见图 3)。 像素的积分时间可以通过寄存器 INT_TIME 来修改。 在这种模式下, 像素在不同的时刻感光,因而在采集动态图像时会产生模糊。

在同步快门模式下,所有像素的光积分在同一时刻进行的。所有像素同时被复位, 在经过光积分后,像素的值被存储在每个像素的存储节点上,然后逐行依次读出。像素 的光积分和读出是串行的,在像素读出时,积分被禁止,因而可以避免卷帘快门所产生 的动态图像模糊的问题。此外,同步快门支持多斜率积分,可获得比卷帘快门更高的动 态范围。 综上分析,在使用这款成像器芯片时,对快门方式要根据应用的场合进行选择,在 对快速运动的物体进行捕获或要求有高的动态范围时应选择同步快门; 而在对图像的帧 速率要求较高或要对图像进行连续采集时应选择卷帘快门。 2 基于 FPGA 的 CMOS 控制时序的设计 2.1 现场可编程门阵列 FPGA 随着集成电路的发展,大规模可编程逻辑器件广泛用于电路设计领域,它具有功耗 低,可靠性高的特点,同时大大减小了电路板的尺寸。FPGA 的内部结构决定了 FPGA 在时序设计方面的优越性。该设计选用 Xilinx 公司的 Spartan3 系列 FPGA 芯片 XC3$50 作为硬件设计平台。Spar-tan3 基于 VirtexⅡFPGA 架构,采用 90 nm 技 术,8 层金属工艺,内嵌硬核乘法器和数字时钟管理模块。从结构上看,它将逻辑、存 储器、数字运算、数字处理器、I/O 以及系统管理资源完美地结合在一起,使之具有 更高层次、更广泛的应用。 2.2 控制时序的设计 该设计采用 VHDL 硬件描述语言,根据自顶向下的设计方法,将时序控制部分分为 三个模块:复位模块、寄存器配置模块和快门模块。由于寄存器有两种配置方式,快门 模式也有两种,因而后两部分都可以再细分为两个小模块。三个大的模块有严格的先后 关系,必须在前一模块已完成后,才可开始后一模块。 图 4 显示模块的划分及其关系。

复位模块是用来产生图像传感器所需的 SYS_RE_SET 信号,使传感器正常复位,内 部寄存器清零,为寄存器的配置做好准备。 寄存器配置模块是用来配置图像传感器内部的 12 个寄存器,提供传感器工作所需 的参数和方式。其中,参数有积分时间、积分方式(单斜率或多斜率)、X 序列发生器的 时钟间隔、SS 序列发生器的时钟间隔、亚采样方式、开窗位置及大小等。 快门模块用于产生传感器工作所需的一些控制信号,针对快门方式的不同给出所需 的时序控制信号。在同步快门的设计中,该设计采用单斜率积分,在此设计基础上多斜 率积分容易实现。 该设计采用 VHDL 对各模块时序进行编程。其中,快门模块使用状态机来实现各状 态之间的转换(图 5 显示了卷帘模块的状态转移图,图 6 显示了同步快门的状态转移 图)。全局时钟和 ADC 时钟采用 DCM 即数字时钟管理单元来实现。

3 实验结果 3.1 仿真结果

时序控制电路设计完毕后,需要对各部分进行功能仿真、逻辑综合以及综合后仿真,最 后对整个系统进行综合、布局布线,完成时序仿真。对各模块编程并仿真通过后,将各 模块加载到主函数 top 中,采用并行的寄存器配置方式,对卷帘和同步两种快门方式 进行仿真,在 Modelsim 中的仿真结果如图 7,图 8 所示。

3.2 成像结果 将此驱动时序应用于相机系统,在全帧输出模式(1 280×1 024)下,对鉴别率靶和静 物进行拍摄,实验结果如图 9,图 10 所示。由所拍摄结果可以看出,图像清晰稳定, 无明显变形,CMOS 图像传感器满足了成像的需求。

4 结语 图像传感器驱动时序的正确与否对其能否正常工作起着决定性的作用。 本文在分析 CMOS 图像传感器 IBIS5-B-1300 工作时序的基础上,设计了两种寄存器配置方案和 两种快门方式, 并用 FPGA 内嵌的数字时钟管理单元(DCM)完成了系统时钟和 ACD 时 钟的设计。实验结果表明,所设计的驱动时序可以满足该图像传感器的驱动要求。

基于 CMOS 图像传感器 IBIS52A21300 的时序设计 摘要: 摘要:在分析 CYPRESS 公司的 IBIS5-A-1300 CMOS 时序的基础上,设计了串行、 并行两种配置寄存器的模式,完成了多斜率积分、开窗口、亚采样功能。选用复杂可编 程器件(CPLD)作为硬件设计载体,使用 VHDL 语言对驱动时序发生器进行了硬件描述。 采用 QuartusⅡ5.0 软件对所做的设计进行了功能仿真,针对 ALTERA 公司的 CPLD 器 件 MAXⅡEPM570T144C3 进行适配。 系统测试结果表明,所设计的驱动时序发生器满 足 CMOS 相机驱动要求。 关键词: 关键词:CMOS 相机;串行;并行;复杂可编程逻辑器件 CPLD;时序发生器 随着 CMOS 集成电路工艺的不断发展和完善,CMOS 图像传感器发展非常迅速。 CMOS 图像传感器具有低成本、低功耗、简单的数字接口、随机访问、运行简易、高速率、体 积小以及通过片上信号处理电路可以实现智能处理功能等特点而得到广泛应用。由于 CMOS 传感器的驱动信号绝大部分是数字信号,因此可采用 CPLD 通过 VHDL 语言编程 产生驱动时序信号。VHDL 语言具有广泛的逻辑综合工具支持,简洁易于理解。本文就 IBIS52A-1300CMOS 图像敏感器给出使用 VHDL 语言设计的寄存器配置电路和仿真 结果。

CMOS 时序发生器原理 IBIS52A21300 芯片 IBIS52A21300 是 131 万像素(1280×1024),20mm(2/3 英寸)的 CMOS 图像传感 器芯片。 它可以采用 SXGA/VGA 格式输出,最大帧速率可达到 27.5 帧/s(SXGA 输出) 或者 100 帧/s(VGA 输出)。该芯片将 CMOS 感光核心与外围辅助电路集成在一起,同 时具有可编程控制功能。 6.7?m×6.7?m 高填充系数像元,高达 66%的填充系数,光学 动态范围;片载可调整增益和偏置的输出放大器,以及 10bit,40MS/sADC;具有卷帘 快门和同步快门;随机可编程窗口和亚采样模式;片载抑制 FPN 电路;片载时序和控 制逻辑发生器。 内部寄存器 IBIS52A-1300 内部有 12 个 16bit 的寄存器,高 4 位是地址位,低 12 位是数据位。 寄 存器的值决定着相机的工作状态,必须根据需要进行设定,并实时作出修改。本设计中对 各个寄存器设定不同的值实现多斜率积分、开窗口、亚采样的功能。寄存器 0000 用于 设定快门方式,在多斜率积分中,会随上载不同寄存器而改变,如表 1 所示。

表1

多斜率积分时的寄存器设置

随机开窗口也就是基于感兴趣区域(Region-Of-Interest,ROI)读出。通过多种接口设 置传感器内部的 X 和 Y 移位寄存器起点指针,控制 X 方向和 Y 方向的起始读出位置,就 可以很容易地实现 ROI 操作。X 方向地址的最小步进距离是 2(只能选择偶数列作为起 始地址),Y 方向为 1(每一行都可以作为起始地址),所以最小可以输出 2×1 窗口大小的 像素单元。进行 ROI 操作时,帧速率近似成线性增长。由寄存器 0001(每行读出像元个 数)、 0010(每帧读出行数)、 0100(X 方向起始位置)、 0101(左侧 Y 起始位置)、 0110(右 侧 Y 起始位置)设定不同的开窗口的起始位置和大小。

亚采样也叫“抽点取样”,即通过选取某一区域的某点(或某些点)代替该区域,从而将影像 的分辨率缩小到指定点。IBIS5-A-1300 的 X 方向和 Y 方向分别有四种亚采样模式, 能够很好地满足用户直接输出压缩图像的需要。这是由寄存器 0111 设置的。 接口模式时序及分析 内部寄存器决定了图像传感器的工作状态,所以传感器复位后要对这些内部寄存器进行 配置。配置方式有两种:并行模式和串行模式,两种模式可以通过 IF_MODE 管脚和 SER_MODE 管脚进行选择,如表 2 所示。

表2

串行和并行接口的选择

16-bit 的配置数据中,高 4 位是地址位,用来选择要写入的寄存器,低 12 位是要写入的 数据。并行模式和串行模式的时序如图 1。 并行模式利用 16 位宽的并行端口(P_DATA〈15:0〉)给内部寄存器上载新的值,通过 写脉冲 P_WRITE 将值写入。 根据图示信号周期可以计算得出写入 12 个寄存器的时间 是 4.8?s。

图 1 两种配置接口的时序图

串行模式利用串行时钟(周期为 400ns)驱动串行数据。串行数据 16 位为一组,当 S_EN 为低时将 值写入。写入 12 个寄存器的时间为 76.8?s。 基于 CPLD 的 CMOS 时序的实现 复杂可编程逻辑器件 CPLD 为了产生系统所需的时序,采用复杂可编程逻辑器件(CPLD),包括可编程逻辑宏单元、 可编程 I/O 单 元、可编程内部连线三种结构,其集成度远远高于 PAL 等传统 PLD 器件,并在速度上有一定的优势。 本文采用 ALTERA 公司生产的 MAXⅡEPM570T144C3CPLD 器件,结合 QuartusⅡ开发工具,可 以实现电路设计、仿真、器件编程等全部设计,开发调试灵活。 CMOS 寄存器配置时序的 VHDL 描述 时序部分的主要功能是驱动 CMOS 图像传感器的正常工作,驱动时序的要求使得驱动电路的设计规 模较大,复杂程度高,很难用传统的方式描述,必须采用更高层次的描述方法,实现自顶向下的设计,因 此可以用 VHDL 语言与 CPLD 器件结合,设计的关键就是用 VHDL 语言描述 CMOS 的驱动时序关 系。根据自顶向下的设计方法,确定输入输出信号,同时根据时序分析划分功能模块,然后把所有的输 入输出信号分配到各个功能模块中,每个功能模块分别进行 VHDL 设计输入、功能仿真、后仿真。 在各个功能模块实现其各自功能后,例如到顶层设计当中,再完成顶层的 VHDL 设计输入、 功能仿真、 综合、后仿真,直至最后达到设计要求。 由时序图知,并行模式中一个数据的上载时间为 400ns,CLK 为 25ns,则需要 16 个时钟,设 16 进制 计数器 count,当 count 在 6 与 11 之间时,使 P_WRITE 为 1,数据开始上载,用变量 i 计哪个寄存器

上载。 12 个寄存器上载完,启动下一模块,使 SHUTTER_START 为 1,同时注意在多 当 斜率积分中当 12 个寄存器上载完后,第一个寄存器的值要随之改变,这里需要设不同的 寄存器,避免转换状态时计数器值不变出现死循环,上载数据方法与前面相同,流程图如 图 2 所示。

图2

并行模式流程图

串行模式中每个寄存器上载值都需要有 S_EN 和 S_CLK,由时序图知数据是由高位到 低位上载的,在最高位时产生 S_EN 信号,随后保持低电平,直至下一个数据上载。由于 数据是一位位上载的,因此对每一位数据要用一变量 j,每个时钟下降沿使 j-1,直至 16 位数据上载完,开始下一数据上载,用变量 i 表示,当 i 为 12 时启动下一模块。流程图如 图 3 所示。

图3

串行模式流程图

驱动时序发生器功能仿真 驱动时序发生器功能仿真 在进行了 VHDL 描述和编译之后,就可以应用 EDA 软件进行驱动时序发生器的功能仿 真。 功能仿真与器件无关,只是根据 VHDL 原代码生成相应的波形图,检验设计的合理性, 功能仿真是在 QuartusⅡ5.0 下进行的。图 4 和图 5 是驱动时序发生器在并行模式和 串行模式下的仿真图,都是在同步快门四斜率积分和卷帘快门下仿真的。

比较并行模式和串行模式波形,可知并行模式比串行模式上载速度要快,但两种方式都 可以满足 CMOS 图像传感器驱动时序要求。

图4

并行模式仿真图

图5 结论

串行模式仿真图

在分析 CYPRESS IBIS5-A-1300CMOS 驱动时序关系的基础上,提出了 CMOS 寄存 器配置时序发生器的设计方案,并且实现了多斜率积分、开窗口、亚采样的功能。CPLD 器件较其他器件具有延时小、设计简便、调试灵活等优点,且由其构成的驱动时序发生 器工作稳定可靠、体积小,为自行研制 CMOS 摄像机实用化提供了条件。

基于 USB 传输及 CMOS 图像传感器的指纹识别仪的实现 摘要: 介绍了基于 CMOS 图像传感器 OV762M 和 EZ—USB AN2131QC USB 数据 传输的指纹识别仪硬件实现,为匹配时序使用了 CPLD 技术实现了高速缓冲区,并重 点对 USB 批量快速传输和 CPLD 缓冲控制的实现进行了讨论。由此方法实现的指纹识

别系统反应灵敏,稳定可靠。 关键词: CMOS 图像传感器;指纹识别仪;OV7620;AN2131QC;CPLD 引 言 CMOS 图像传感器是近年来得到快速发展的一种新型固态图像传感器。它将图像传感 部分和控制电路高度集成在同一芯片里,体积明显减小、功耗也大大降低,满足了对高 度小型化、低功耗成像系统的要求。与传统的 CCD 图像传感器相比,CMOS 图像传感 器还具有集成度高、控制简单、价格低廉等诸多优点。因此随着 CMOS 集成电路工艺 的不断进步和完善,CMOS 图像传感器已经广泛应用于各种通用图像采集系统中。同 时作为一种 PC 机与外围设备间的高速通信接口,USB 具有许多突出的有点: 连接简 便,可热插拔,无需定位及运行安装程序,无需连接外设时关机及重启系统,实现真正 的即插即用;高传输速率,USB1.1 协议支持 12Mb/s;不占用系统硬件资源,能够自 动检测和配置外围设备,不存在硬件冲突问题。 因此,利用 CMOS 数字图像传感器与 USB 接口数据传输来实现的指纹识别仪具有结 构简单,体积小,便携化等优点。现将介绍利用 OMniVision 公司的 CMOS 彩色数字 图像传感器 OV762M 和 cypress 公司的 EZ—USB AN2131QC USB 控制传输芯片 (内部集成了增强形 51 内核)来实现指纹信息的采集和 USB 传输,同时由于指纹传感 器输出数据的速率(27MB/s)与 USB 控制器(AN2131QC)数据传输速率(12Mb/s)的 不匹配,故系统采用了 SRAM 和 CPLD 构成中间高速缓冲区。 系统结构 应用 AN2131QC、CPLD 和 OV762M 设计的指纹识别系统硬件框图如图 1 所示:

图1

指纹识别硬件系统简略框架图

首先, 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 输出时序如图 2 所示:

图2

0V762M 输出时序

VSYNC 是垂直场同步信号(也是每帧同步信号,CMOS 是按列采集图像的),其下 降沿表示一帧图像的开始,HREF 提供了一种有效的控制方式,当输出像素行列分别 处于设定窗口之间时 HREF 为有效高电平,此时输出有效的视频数据,PCLK 是输出 数据同步信号,上升沿输出一个有效的像素 Y[7∶M]。 基于 CPLD 技术的高速数据缓冲区的实现 在由 CPLD 和 SRAM 构成的高速数据缓冲区中,CPLD 充当了 SRAM 的控制器,其内 部电路实现框图如图 3 所示:

图3

SRAM 高速缓冲区控制器的 CPLD 实现

图 3 中 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 根地址线)。

图4

CPLD 实现的仿真波形

由图 3 中逻辑知道,当允许对 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 是基于 USB1.1 协议设计的,支持高速 12Mb/s 的传输速率,内嵌有增 强型 8051 微控制器、8kB 的 RAM 和一个智能 USB 内核的收发器,它包含一个 I2C 总线控制器和 3 个 8 位多功能 I/O 口, 8 位数据总线和 16 位地址总线用于外部 RAM 有 扩展。其结构如图 5 所示。

图5

AN2131QC 结构简图

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 所示(左图是未经任何处理的重现, 右图是经过平滑、 细化等算法处理后的重现)。

图6

采集指纹重现效果(处理前后)

嵌入式系统中 CMOS 图像传感器接口技术 摘 要:提出了 CMOS(互补金属氧化物半导体)图像传感器在嵌入式系统中的接口技

术, 通过设计软件驱动使嵌入式处理器能够控制 CMOS 图像传感器图像数据自动采集。 并对 CMOS 图像传感器采集的数据进行插值和自动白平衡处理。此接口模块已经成功 地应用于二维条码识读器的图像采集模块中,取得了良好的效果。 关键词:CMOS 图像传感器;嵌入式 Linux;总线;嵌入式系统 背 景 目前数字摄像技术,主要采用两种方式:一种是使用 CCD(电容耦合器件)图像传感器, 另一种是使用 CMOS(互补金属氧化物半导体)图像传感器。 CCD 图像传感器具有读取噪声低、动态范围大、响应灵敏度高等优点。但 CCD 技术难 以与主流的 CMOS 技术集成于同一芯片之中。因而 CCD 图像传感器具有体积大、功 耗高等缺点。 CMOS 图像传感器是近些年发展较快的新型图像传感器,由于采用了 CMOS 技术,可 以将像素阵列与外围支持电路(如图像传感器核心、单一时钟、所有的时序逻辑、可编 程功能和模数转换器)集成在同一块芯片上。因此与 CCD 相比,CMOS 图像传感器将 整个图像系统集成在一块芯片上,具有体积小、重量轻、功耗低、编程方便、易于控制 等优点。对于手持式设备来说,体积和功耗是进行软硬件设计时重点考虑的问题,因此

CMOS 图像传感器应用在手持式设备当中将会有广阔的前景。 文中将就嵌入式系统中设计 CMOS 图像传感器的图像采集设备硬件接口技术和软件驱 动进行研究。 系统硬件设计 嵌入式系统硬件平台选择 摩托罗拉 MC9328MX1 处理器基于 ARM920T 嵌入式处理器内核,能工作于高达 200MHz 的主频。它集成了许多模块,支持接口模块、GPIO(General Purpose I/O) 接口模块、时钟产生模块(CGM,Clock Generation Module)等,为各种外设提供了 灵活的接口控制功能。摩托罗拉 MC9328MX1 处理器内置的 CSI(CMOSSensor Interface)模块提供了时序控制模块,可以适应不同 CMOS 图像传感器的要求。 COMS 图像传感器的选择 ICM105C 是 IC Media 公司生产的一种单芯片数字彩色图像器件, 使用 1/4 英寸的光 学系统。它内置了一个 640×480(650×490 物理像素)传感器阵列、数模转换器和相 关双采样电路。它的控制部分使用 I2C 总线,只需要一个 I2C 总线的从设备地址就可 以对其内部的控制和状态寄存器进行设置和读取。 ICM105C 输出的是贝叶尔格式的图 像数据,其中的 RGB 颜色分量可以被数字增益所调整,可以反馈给嵌入式处理器进行 色彩处理或压缩。 接口电路的设计 接口电路设计主要应考虑图像传感器的电源驱动控制电路的接口以及数据输出电路的 接口。ICM105C 使用 3V 的电源驱动、24MHz 的时钟频率,输出 8 位的数据,控制 部分主要使用总线,要保证 ICM105C 正常工作必须提供这些条件。 (1)电源驱动电路的设计。 由于 CMOS 图像传感器是电源敏感元件, 如果电源不稳会给 成像效果造成很大影响。 ICM105C 对于供电电压的要求为 3V, 最小 2.8V, 最大 3.1V, 并且分开了数字电源和模拟电源。但是主处理板只提供了单 3V 的电源,而且这个电源 同时提供给主处理板芯片使用, 所以必须采取相应的机制保证电源的稳定和数字电源和 模拟电源的隔离,同时本系统的另一个设计目标是小型化和简单化。为了兼顾这两者的 要求,电源设计舍弃了使用复杂的稳压芯片的方案,仅使用电容和电感来稳定电压和消 除数字电源和模拟电源之间的干扰,其电路图如图 1 所示。

图1

电源驱动原理图

VDD 3V 是主板提供的电源,VCCD 和 VCCA 分别是提供给 ICM105C 的数字电源和 模拟电源,其中 L1,L4,C1,C3 起到隔离数字电源和模拟电源及滤波的作用。数字 地和模拟地也用电感消除干扰。 (2)数据输出接口电路设计。 摩托罗拉 MC9328MX1 处理器内置的 CSI 模块提供了时 序控制模块,这样可以简化电路的设计,只需要将 8 位数据线和输出时钟还有场频、 行频和像素时钟与 CSI 模块连接即可保证处理器的正确采集数据。具体的逻辑连接关 系如图 2 所示。

图2

ICM105C 和主处理板的逻辑连接图

其中时钟线是从 MC9328MX1 输入 24MHz 的时钟信号, PCLK 是 CMOS 输出的像素 时钟,VSYNC 是场频,HSYNC 是行频,DOUT[0-7]为输出的数据。其时序关系如图 3 所示。DOUT[7:0]在 PCLK 时钟上升沿有效,HSYNC 和 VSYNC 处于低电平时有 效。为了达到这种时序效果需要对芯片的某些引脚进行正确地初始化设置。ICM105C 的引脚 37 控制数据的同步模式, 用上拉电阻接高电平, 这样可以使传感器输出 HSYNC 和 VSYNC 同步信号。

图3

ICM105C 的数据输出时序图

HSYNC 和 VSYNC 的极性也可以进行配置,将引脚 46 和 47 接地,这样 HSYNC 和 VSYNC 在有效时为低电平。引脚 14 为时钟选择信号,将其接地表示使用外部时钟, 这样内部晶振输入引脚 12、13 就可以悬空。 (3)控制电路设计。要使传感器正常工作,必须对芯片内部的寄存器进行初始化。初始 化的工作必须通过传感器的 I2C 接口进行。ICM105C 提供了一种硬件初始化的方式, 如果引脚 33 在芯片启动时为高电平, 那么传感器的 I2C 接口将首先工作在主设备模式 下,并且试图从外部的串行 EEPROM 中读取初始化数据。然后,传感器又回到正常的 从设备工作模式下。为了使接口电路简单化,直接用主处理板的 I2C 接口来控制传感 器,将此引脚接地,使其工作在从模式,这样 EEPROM 部分的电路就可以舍弃。 软件驱动 CMOS 图像传感器需要嵌入式系统的软件驱动才能正常工作,并输出正确的图像数据。 由于处理端的嵌入式系统采用的是嵌入式 Linux 操作系统,I2C 接口的驱动程序已经 集成在操作系统内部,中断资源可以作为资源来申请,操作系统还提供了调用其它资源 的接口函数,这极大地方便了驱动程序的编写。在本次设计中采用了 Linux 系统下模 块形式的字符设备驱动程序的编写方法。整个软件驱动需要完成两个功能模块:接口的 初始化模块和接收输出的数据。 初始化 (1) CSI 模块的初始化。根据 ICM105C 芯片的数据手册,CSI 的重置信号需要保持 有效直至输入电压保持恒定大于两个时钟周期,图 4 是时序图。

图 4 软重置信号时序图

由于主处理板是一上电就开始工作, ICM105C 的驱动程序必须在处理板上的操作系 而 统启动后才开始工作。尤其是时钟信号只有在驱动加载后才开始提供给 ICM105C , 要造成重置信号的时序效果,必须使用一个软件控制的重置信号,在时钟输出到传感器 后至少两个时钟周期保持有效,然后拉高电平使之无效。在设计中,采用了摩托罗拉 MC9328MX1 处理器一个 GPIO 端口来实现软重置信号。 (2)设置时钟,初始化 I2C 接口。ICM105C 需要 24MHz 的时钟,摩托罗拉的 MC9328MX1 处理板的外频是 96MHz ,因此需要四分之一的主频。只需要设置相应 的时钟产生模块寄存器的值即可保证输出 24MHz。I2C 总线的两个信号线 SDA,SCL 需要设置相应 GPIO 的两个引脚,使其用来进行 I2C 传输。还需要挂载 Linux 操作系 统的 I2C 驱动,编写 I2C 读和写的功能函数。需要注意的是 ICM105C 的 I2C 地址值 为 21H。 (3)初始化 CMOS 传感器。ICM105C 内部控制和状态寄存器通过 I2C 总线来初始化 CMOS,初始化序列(寄存器的地址、值序列)由 IC Media 公司提供,初始化完成后, 就可以接收到数据和时序信号了。 接收数据 接收数据是驱动程序中最重要的一个部分, 它需要协调好中断和 DMA 传输, 保证数据 的正确接收,并且在出错时能够正确地恢复。这一部分的软件流程如图 5 所示。

图5

接收数据软件流程图

其中在开始阶段申请中断和 DMA 资源并申请内存空间存放接收的数据。中断的主要任 务是在每一帧开始时,开始 DMA 传输。DMA 传输主要将从 FIFO 中读出数据保存在

内存中,并处理可能出现的错误。本例中一旦出现 DMA 传输错误就丢弃该帧。 数据处理 下面就是数据的处理模块。由于接收到的数据还是原始数据,需要处理才能形成最终的 图像数据。 具体的处理过程如下: (1)线性插值。由于制作工艺的问题,CMOS 图像传感器中的感光点只能放置一种滤色 片,也就是说它的每个物理像素点只能感应 R 或 G 或 B 一种颜色,这就是贝叶尔格式 的数据(如图 6 所示)。它必须经过插值运算才能得到每个像素的 RGB 值。

图6

贝叶尔格式(Bayer pattern)

由上图可以看出,每个像素点都有 8 个相邻的像素点,而且这 8 个像素点的颜色分量 与此像素点不同。插值算法就是依据相邻的像素点的颜色值的空间相关性原理进行的。 其处理方法如下: a. 只有 R 颜色分量的像素点,其 G 颜色分量由周围 4 个 G 的平均值计算得出。B 颜 色分量由周围 4 个 B 的平均值计算得出。 b. 只有 B 颜色分量的像素点,其 R 颜色分量由周围 4 个 R 的平均值计算得出,G 颜 色分量由周围 4 个 G 平均值计算得出。 c. 只有 G 颜色分量的像素点,其 R 颜色分量由上下 2 个 R 的平均值计算得出,B 颜 色分量由左右 2 个 B 平均值计算得出。经过插值运算,每个像素点的 RGB 都得出了, 这就形成了完整的图像数据。 (2)白平衡。任何物体在不同的光线下具有不同的色温。所谓色温,简而言之,就是定 量地以开尔文温度表示色彩。色温越高,物体的蓝色分量就越多;色温越低,物体的红 色分量就越多。 由于人眼具有自调节性, 所以即使物体色温不同, 也能正确识别出颜色。 但是 CMOS 图像传感器没有自调节性,所以当在户外日光下拍摄物体时,物体的颜色

就会因为色温高而偏蓝。而在室内的荧光灯下拍摄物体时,物体的颜色就会因为色温低 而偏红。要得到正确的颜色,必须进行白平衡。白平衡的基本原理是调整颜色的色温, 使其保持在一个特定的范围内。在此接口的应用中采用了一个较简单的白平衡方法,其 处理过程如下: a. 首先求出一幅图像的数据每个颜色分量的平均值:

b. 求出最大的平均值:

c. 求出每个颜色数据的白平衡后的校正值:

经过这样的运算就得到了白平衡后的数据。 目前白平衡还没有很好的算法来处理一切情 况,这只是一个简单的算法。 结 论 文中提出的 ICM105C 图像传感器的接口技术已经成功应用在二维条码识读器当中, 为 了实际应用的需要,ICM105C 的电路模块被设计成只有 35mm×35mm 大小,通过 一个 20 芯的排线与主处理板连接。正常工作时功耗低于 50mW,采集的图像数据良 好,而且可以通过软件来控制图像传感器的工作方式,非常适用于手持式设备的应用。

选择性复位 CMOS 图像传感器电路结构 摘 要:采用数字处理和重构的方法,实现了一种新型选择性复位像素结构及其像素阵

列的设计,扩展了 CMOS 图像传感器(CIS)的动态范围。该方法在像素积分过程中, 通过在 3 个不同的设定时刻比较光电二极管电压值与阈值电压,进行有选择性的复位, 得到最终的电压值后,再将其与阈值电压进行重构,从而输出最终的像素值。整个系统 的动态范围扩展至 107.4dB,提高了成像质量。重构电路由数字电路实现,在保证速 度的前提下,减少了处理单元的存储器需要。 关键词:电子技术; CMOS 图像传感器;动态范围;选择性复位;阈值比较;数字重

构 引 言

CMOS 图像传感器与传统的 CCD 图像传感器相比具有工艺成熟、集成度高、读出速 度快、功耗低和电压低的特点,近年来发展十分迅速,并在汽车安全、生产线监控等许 多领域得到应用。目前, CMOS 图像传感器普遍采用光电二极管作为感光器件的线性 有源像素,这种结构存在的明显缺陷就是动态范围较小,即探测光强的范围不能满足要 求。这将从两方面限制图像传感器的应用: ①图像传感器只能应用在光强范围变化较小的场合。 ②同一幅图像中过亮和过暗的部分不能同时探测到。国内外针对 CMOS 图像传感器动 态范围不足的问题所采取的解决方案主要有: 利用非线性压缩光电响应曲线扩展动态范 围的对数像素结构;多次曝光技术;通过增加阱容扩展动态范围的横向溢出栅像素结构 以及选择性复位方法等。第一种方法由于受温度和噪声影响较大,生成的图像质量差; 多次曝光技术存在增加电路处理时间的问题,从而导致速度的下降;横向溢出栅像素结 构在扩展动态范围的同时, 带来的是信噪比(SNR)的下降; 选择性复位结构也称作自适 应积分时间结构,采用该种方法的图像传感器在图像质量、处理速度和信噪比等方面的 性能与其他几种方法相比具有明显的优势, 但也存在着需要增加存储器和重构电路的问 题。 作者在选择性复位结构的基础上,针对该结构的自身固有缺点,提出了一种具有数字重 构功能和低存储器要求的自适应积分时间 CMOS 图像传感器结构。在保证传感器性能 的同时,简化了电路的设计,增强了电路的抗干扰能力,提高了重构计算的精度,降低 了电路对存储器的需求。 选择性复位的基本原理 积分时间与像素电压值的关系 对于传统意义上的图像传感器来说, 同一像素在帧与帧之间存在一个固定的处理时间 间隔 T。如果 T 作为最大积分时间, 那么帧频就确定为 1/T。在积分过程中的某一时 刻( T/k) ,将光电二极管 PD 的电压值与一个阈值 th 进行比较,当 PD 的电压值超过 阈值的时候, 有选择性地重置 PD 的值(复位光电二极管) 。用这种办法缩短较亮像素 的积分时间,但由于积分时间各不相同,因此像素值需要进行重构。

从图 1 中可以看出, 通过这种方法可以成比例地降低较亮像素(光强较高)所对应的光电 转换的电压值,从而达到将原处于饱和区范围的光强转换到线性区内。图中 A 和 B 的 积分结果差值 b 被压缩为 A ′和 B ′的差值 a。

图1

选择性复位积分时间与像素值之间的关系

光强与像素电压值的关系 图 2 中表示出了普通输出值以及重构前后的电压值与光强的关系。以第一个阈值( k = 5, th =20)控制为例,在普通输出的情况下, 像素值超过 255 就称为饱和。而利用 自适应积分时间控制,当像素值超过 100 (20×5)时则降低像素值,然后将曲线加上 阈值 th 完成重构。实际上,这种方法是通过降低输入光强较高像素的灵敏度来完成对 传统传感器的动态范围的扩展。这里可以通过改变 k (比较时间)和 th (阈值)来灵活地 调整光强与像素输出值之间的关系。 直线 B 的斜率是由 1-1/k 决定的, 直线 A 和 B 之 间的拐点也依赖于 k 和 th。

图2

三次阈值比较后的重构曲线

当把这种比较复位操作重复多次时, 就可以进一步加宽动态范围,如图 2 所示。这里 以三次阈值比较为例( k1 = 5, th1 = 20; k2 = 2, th2 = 60; k 3= 50 /49, th3=160) , 在积分过程中, 光电二极管值在不同的时间分别与 3 个阈值进行比较。 每当像素值超过阈值则将电压复位, 并且将一个标志位信号写入存储器。在积分结束 之后,重构电路将标志位高的信号对应的所有阈值加到最终得到的像素值上,从而完成 输出值的计算。 图 2 中,直线 A、B、C 和 D 为不同阈值的重构曲线,其斜率分别是 1, 1-1/k1 , 1-1/k2 , 1-1/k3 ,而两直线之间的拐点应满足公式:

阈值比较所需参数的选择条件 如果假设阈值比较的次数为 n, 为了保证光强和像素值之间特性曲线的连续性, 需要 满足以下 2 个条件: (1)如果比较的时刻为 T/ki ( i = 1, 2, 3, ., n) ,阈值为 thi ( i = 1, 2, 3, ., n) ,那么各时刻的关系为:

其中 T 为最长的积分时间; Vs 为最大光强条件下进行最长的 T 时间积分所作用的像 素值变化。 (2)各阈值之间的关系为:

传感器的设计与实现 像素处理单元的基本结构设计 如图 3 所示,处理电路主要包括阈值比较单元、比较时钟产生单元、阈值选择单元、 存储器单元、复位单元和重构单元。 k 比较时钟产生单元在相应的时刻产生脉冲信号, 启 阈值比较时间由 k1、 2 和 k3 决定, 动阈值比较单元对比较结果进行采样。当 VPD 值超过阈值时则值被复位, 并且一位标 志位信号“1”被送入存储器。如果 VPD 值没有超过阈值, 则继续积分,并将一位标志位 信号“0”送入存储器。与此同时,控制阈值选择单元改变阈值电压,等待下一次比较。 在一次积分过程中共比较 3 次,阈值分别为 Vth1 , Vth2 和 Vth3。当积分完成后,重 构单元将对应阈值加到经过 AD 转换的 PD 值上。像素处理的整体流程如图 4 所示。

图3

像素处理电路基本结构

图4

像素处理流程

每个 VPD 值在积分结束和超过阈值时复位,因此各个像素的积分情况都不相同。这里可 以灵活地对阈值电压和比较时间进行控制。 存储器单元的优化 对每个像素来说, 在一个积分过程中(即一帧中)共需要进行 3 次比较,同时会得到 3 个标志位信号。在重构单元中,由于是根据对应的标志位将阈值加到 PD 值上的(计算 标志位为“1”的阈值,忽略为“0”的阈值) , 因此需要将每个像素的标志位信息保存在 3 位寄存器中, 这将增加电路对存储器的需求。 经过对阈值比较原理的分析发现, 为了保证最终重构曲线的正确,在设定阈值和时间 的时候,应该满足如果一个像素在某次比较时没有超过阈值,那么它也不会在以后的比 较中超过阈值,即可得到公式:

由此可以推算出, 实际的标志位信息只可能有以下 4 种情况,即 0 0 0, 1 0 0, 1 1 0 和 1 1 1 (从左到右依次为无复位和有一、二、三次复位的采样结果) 。也就是说, 对于每一个像素,只需要 2 位的存储器就可以保存其标志位信息用于最后的重构计算。 从总体上将系统所需的存储器减少了 1/3,减少了电路面积,降低了电路的功耗。

数字重构单元 当一个像素的曝光过程完成时, 将会得到最终的积分电压值 VPD。此时可以采用像素 电路级的模拟加法电路,但会增加电路的复杂程度,而且精度不高。这里采用的是数字 重构的方法,电路整体采用列并行结构, 数字重构单元采用列共用结构。在一帧中每 个像素的 VPD 都要经过放大与 AD 转换,并得到一个 8 位的 PD 值。将 3 个阈值电压 也分别转化成 8 位字节, 然后调用相应的标志位信息, 将 PD 值与对应阈值相加,最 终结果得到一个 10 位像素值。这种方法提高了最终结果的精度, 并且可以根据需要 提取其中的高 8 位,以适应通用电路的要求。与同类设计相比,采用模拟重构电路的 方法简化了电路设计, 增强了电路的抗干扰能力, 提高了计算精度,增加了图像传感 器的动态范围。 像素阵列设计 对于采用上述像素结构的图像传感器阵列来说,采用的是列并行滚筒式曝光处理结构, 如图 5 所示。这种结构可以有效减少像素处理电路的面积,同时保证处理速度和帧频。 列并行结构中同一列的像素分享同一个处理电路,即以每一行为一个单位,在时钟的控 制下逐行操作,而同一行中的像素并行进行积分、阈值比较和 AD 转换,在积分完成时 对每一行的各个像素进行数字重构处理,串行输出最终结果。

图5

图像传感器阵列结构

图 6 显示了像素处理结构的时序关系,基于滚筒式流水线的思想,利用行积分时间进 行 AD 转换的处理。从图中可以看出,第 1 行积分结束之后,下一步将进行 AD 转换, 由于 AD 转换器为列共用,因此第 2 行的 AD 转换必须等待第 1 行转换结束之后才开 始,与此同时第 1 行开始下一帧的积分,其他各行同上所述。由于积分时间具有可调 性,因此与 AD 转换需要的总时间比较会有以下 2 种情况: ①积分时间长于 AD 转换 时间,这时只需要在相应的时刻进行行复位操作就可以满足时序要求。②积分时间短于 AD 转换时间,因为各行处理共用 AD 转换器会出现争用现象,导致冲突,此时应根据 二者的时间差值,在每一行的总积分复位信号前,插入一段等待时段(或者说延长复位 信号) ,如图中的白色部分,从而保证第 1 行的 AD 转换开始于最后一行之后,避免冲 突。

图6

列并行滚筒式曝光流水线时序

模拟和仿真结果 根据上述原理,对自适应积分时间的选择性复位的像素结构进行模拟,采用 XILINX 公 司的 ISE 配合 Modelsim 软件,通过 Verilog-HDL 描述数字处理电路功能,然后结合 前端的光电二极管模型,使用 Nanosim 进行模数混合信号仿真,并将最终的结果导入 Matlab 中,得到固定积分时间下光强与输出像素值的对应关系曲线。所选参数值如表 1 所示。 表1 参数 k 和 Vth

图 7 中曲线 A 和 B 分别为传统像素和选择性复位像素的结果。 传统像素结构中的像素 电压值随着光强增加,接近直线上升至饱和,动态范围约为 80 dB;改进型选择性复 位的上升曲线更接近于理想的指数曲线 C,动态范围为 107. 4 dB,达到现阶段国外 同类设计指标。

图7

像素输出曲线比较

结束语 作者利用数字处理和重构的方法实现了一种选择性复位像素结构。 这种结构在整个积分 过程中,通过在不同的设定时刻 ki 比较光电二极管电压值 VPD 与阈值电压 Vth ,进行 有选择性的复位,得到最终的电压值后,再与阈值电压进行重构,从而输出最终的像素 PD 值结果。 与传统像素结构相比,使用该结构的像素阵列显著提高了动态范围,实 现了像素单元对光强的自适应调节。与国内外同类设计进行比较,本设计达到了目前高 动态范围的图像水平要求, 同时这种结构只需要较少的存储器,而且完全由数字电路 实现,在保证速度的前提下,改进了该设计思路自身固有的缺陷,提高了成像质量,具 有更高的可靠性和兼容性。

基于 CMOS 图像传感器的 USB 接口图像采集系统设计

摘要:介绍以 CPLD 控制为核心的 CMOS 图像采集系统,系统选用彩色图像传感器 OV7620,并通过 USB 接口以类似 DMA 方式进行快速的图像传输。最后给出了单片 机固件程序和设备驱动程序的实现方法。 关键词:CMOS 图像传感器;图像采集;CPLD;USB 系统设计 图 1 为图像采集系统的原理框图。系统选用 OminiVision 公司生产的 CMOS 芯片 OV7620,它是一款集成了一个 640×480 (30 万像素)图像矩阵的彩色摄像芯片,在 隔行扫描模式下工作频率可达 60Hz, 逐行扫描时为 30 帧/s。 其像面大小为 1/3 英寸, 支持 8 位或 16 位数字信号从单通道或双通道输出, 输出信号的类型可在 YCrCb 和 RGB 之间选择, 图像矩阵支持 VGA 或 CIF 规定,数字输出格式遵循 CCIR601,ZVPorts, CCIR656 等标准。OV7620 有很强的摄像和控制功能,如暴光控制,γ 校正,增益, 色彩矩阵,窗口选择等,所有这些功能都可以通过 I2C 接口进行编程控制。

图1

系统原理框图

CPLD 选用 ALTERA 公司的芯片 EPM7128S,它在系统中处于核心地位,既要负责将 OV7620 输出的视频数据存入 SRAM,又要与 MCU 配合完成视频数据的 USB 传输。 MCU 是 Cygnal 公司的高性能单片机 C8051F020,它通过 I2C 总线控制 CMOS 芯 片的工作方式和状态,C8051F020 自带 SMBUS 总线接口, 可以把 I2C 的时钟线 SCL 和数据线 SDA 通过交叉开关分配到端口引脚, MCU 作为 I2C 总线通讯的主机, OV7620 用 42H (Write) 、43H (Read)作为从机地址与 MCU 进行通信。另外 MCU 还控制 USB 通信,负责 USB 芯片的初始化和与 PC 的通信连接,其 64KB 的 flash 程序存 储空间足以存放 USB 通信固件。SRAM 芯片采用 IS61LV5128AL 芯片,该芯片为高 速静态 RAM,存储时间在 10ns 左右, 可以满足 OV7620 的速度要求, 其 512KB

的存储空间足以用来存储 30 万像素的视频数据(Bayer2pattern: 每一像素包含一个 字节的 RGB 信息) 。USB 接口芯片采用 PHILIPS 的 PDIUSBD12 芯片,该芯片支 持 USB 1.1 标准协议和 DMA 传输模式。 图像采集部分 OV7620 的输出特性 OV7620 工作方式和输出格式非常多,可以适应不同的应用场合,针对我们的较小系 统, 采用了单通道 Y 输出, 以及逐行扫描的工作方式。 这些工作方式的实现是通过 MCU 的 I2C 编程控制的。当 OV7620 设置工作方式稳定后,它就会输出视频数据,同时还 有 3 个重要的参考信号输出:帧同步信号 SYNC,水平同步信号 HREF,和像素时钟信 号 PCLK。参见图 2,每一个帧同步信号 SYNC 周期包含 480 个水平同步信号 HREF 脉冲,而每一个 HREF 周期包含 640 个 PCLK 时钟脉冲。每一个 PCLK 时钟输出一个 像素的视频数据(8 位标准的 Bayer-pattern 彩色 RGB 数据) 。

图2

图像采集信号时序

图像存储方式 根据 640 ×480 的像素输出特点, 将 512KB 的 RAM 分成 512 行, 每行 1KB 空间, 由 A0~A9 共 10 条地址线选通行内地址记为低位地址:ADDR-L; 高位 A18~A10 共 9 条地址线选通各行记为高位地址:ADDR-H。为保证 OV7620 采集的数据同步写 入 SRAM 中,用 CPLD 宏单元设计了 2 个地址计数器:低位计数器 ADDR-L 和高位记 数器 ADDR-H。当图像数据采集开始时( SYNC 信号低有效) ,记数器由 0 开始记数, 每来一个像素时钟 PCLK 使低位计数器顺序加 1,完成 1 行像素的写入,OV7620 产 生的行同步信号 HREF 使低位计数器清 0,并使高位记数器顺序加 1,改变行地址直到

完成 480 行写入后产生帧同步信号,并使高位计数器清 0,这样完成 1 帧图像数据的 缓存, 详细的图像采集信号时序如图 2。 512KB 的 SRAM 芯片实际上只用了 640 ×480 约 300 多 KB 的存储空间。芯片工作方式设定在 PCLK 信号的下降沿更新数据;在上 升沿,数据是稳定时期,所以如图 2,在 PCLK 信号的下降沿更新 SRAM 的地址信号 ADDR; PCLK 信号上升沿使/WR 信号有效, 然后写数据到 SRAM 中。 在 其中 CPLD 控制 SRAM 的写数据逻辑用 VHDL 语言编写,用 MAX+PLUSII 工具进行仿真设计, 最后实现了图像数据的连续采集。 图像传输部分 类似 DMA 方式数据传输 视频数据按行列关系有序存入 SRAM 芯片后,就可以顺序读取数据并进行传输。传统 的 USB 传 输 方 式 是 MCU 先 从 SRAM 中 取 得 数 据 再 送 到 PDIUBD12 ; 通 过 PDIUBD12 发送到主机。 不管是 MCU 从 SRAM 取数据还是向作为外设的 PDIUBD12 写数据,速度都较慢。因此我们考虑用系统中的 CPLD 控制来实现类似 DMA 方式的 数据传输。在系统工作过程中,单片机负责解释 USB 的控制传输。当要进行从外存取 数送到 PDIUBD12 时,单片机让出总线,由 CPLD 完成该工作。CPLD 产生外存的读 信号和地址, 同时产生 PDIUBD12 的写信号和地址, 自动实现外存数据到 PDIUBD12 接口芯片的传送。 这种类似 DMA 方式的数据传输解决了由单片机控制引起的速度瓶颈, 极大提高了传输速度,最大限度发挥了 USB 的优点。 数据传输的具体实现 当主机需要传输数据时, 通过控制管道发送请求, MCU 接到命令后立即让 OV7620 让 出 SRAM 的数据总线,并通知 PDIUBD12 准备好用于批量数据传输的主端点,然后 发送 TXCOM 命令信号给 CPLD (见图 1) ,通知 CPLD 开始传送数据;当完成 64B 的数据传送后, CPLD 向单片机发送 TXEND 信号,以示 64B 传送完毕,并等待下一 个 TXCOM 信号, 进行下一个 64B 的传送。 单片机和 CPLD 通过这两个信号完成握手。 CPLD 在接收到 TXCOM 命令后, 地址总线正确恢复上次传输到的 SRAM 地址(第一次 传输时地址为 0) ,并且控制 MCU 让出 PDIUBD12 的数据总线,然后产生 SRAM 读 信号/RD,此时数据总线上就有了要传送的数据; 同时产生 PDIUBD12 的写数据标 志信号 A0 和写信号/D12WR,将数据总线上的数据写入 PDIUBD12,完成数据从 SRAM 到 PDIUBD12 的传送。其传送数据的时序如图 3。注意, PDIUBD12 的写

数据信号/D12WR, SRAM 的读数据信号/RD 和 SRAM 的地址信号 ADDR 时序要 严格配合。当每一次完成 64B 的数据传输后, CPLD 要发送 TXEND 信号给 MCU。 整个传输过程控制严密紧凑,所有 CPLD 逻辑控制程序均采用 VHDL 语言编写,经过 测试,系统传输速度摆脱了单片机的影响,几乎接近 PDIUBD12 的极限速度。

图3

图像传输信号时序

系统软件设计 系统的软件包括 USB 设备固件、设备驱动程序和应用程序。 设备固件程序 设备固件是设备运行的核心,其主要的功能是控制接口芯片 PDIUBD12 并完成 USB1.1 协议(包括标准的设备请求、厂商请求处理、设置设备接口等) 。值得一提的 是,此系统的单片机程序除了 USB 设备固件程序外,还有单片机对 OV7620 的 I2C 控制软件,与 CPLD 的握手程序等,所有程序都用 Keil C 进行编制,最后链接后下载 到 MCU 中。 设备驱动程序 在 Windows 操作系统中通过运行内核层的驱动程序才能控制硬件, USB 设备驱动程 序采用标准 WDM 设备驱动。WDM 采用 IRP 驱动机制。当应用程序提出 I/O 请求时, 它调用 WIN32AP I 函数向设备发出命令,然后由 I/O 管理器构成一个 IRP,USB 设 备驱动程序收到该 IRP 后,取出其中的控制码来找到对应的例程入口。在本系统开发 中,驱动程序采用了 DR IVERSTUD IO 提供的 DR IVERWORKS 工具包,工具包提 供了完善的源代码生成工具(DR IVER WIZARD)及相应的类库。开发驱动项目时,应 用 W IZARD 工具开发,自动生成驱动程序的. INF 安装信息文件。对 USB 设备驱动 DR IVERW IZARD 生成的代码只需做少量的修改便可,最后对项目编译链接后生 成.SYS 驱动程序。 应用程序

在 Win2 系统中,把每个设备抽象为文件,应用程序就通过几条简单的文件操作 AP I 函数实现与驱动程序中某个设备通信。USB 通信常使用的 API 函数有:CreatFile, WriteFile, ReadFile, DeviceControl, CloseFile 等。在应用程序时只需将上述 函数加入到相应的功能模块中便可完成应用程序对 USB 设备进行打开、读、写操作, 这样就完全实现了两者的通信。应用程序最终实现了 VGA, CIF 等图像格式的应用。



相关文章:
CMOS图像传感器的工作原理及研究
安捷伦科 技[13]采用一种新型的业内标准——32 针 CLCC (陶瓷无引线芯片载体) 研制出应用 CMOS 图像传感器的数码相机原型产品,只有 30mm× 30mm×2.5mm 大小,...
CMOS图像传感器的基本原理及设计
由于 CMOS 图像传感器应用,新一代图像系统的开发研制得到 了极大的发展,并且...参考文献 [1]Cavador C,Solhusvik J.,et al.Design and Characterization of...
CMOS图像传感器
为了便于 摄像头的应用,还要求该芯片能输出一些时序信号,如同步信号、行起始信号、场起始信 号等。 CMOS 图像传感器和 CCD 图像传感器是目前应用最为广泛的图像...
使用51单片机配置CMOS图像传感器
使用51单片机配置CMOS图像传感器 小论文,包含硬件设计过程和软件代码(附录二14-21页),word版可下载作为写论文或编程参考 使用51 单片机配置 CMOS 图像传感器 本项目...
CMOS图像传感器产业现状
CMOS图像传感器产业现状 - 18芯城是富创源科技有限公司旗下的电子产业服务平台,全方位满足新兴领域中小电子企业对电子元器件、技术支持、金融服务和信息数据等多元化...
=基于CMOS图像传感器的数据采集方案设计
22 参考文献 ......在图像 传感器的应用中成为备受欢迎的产品,研究学习 CMOS 的使用将会对以后的工作奠 1 定基础。 1.3 CMOS 图像传感器国内外研究现状 CMOS...
CMOS图像传感器噪声综述
CMOS图像传感器噪声综述_互联网_IT/计算机_专业资料。CMOS 图像传感器及噪声研究综述 13210720146 刘宗宗 摘要目前, 图像传感器市场主要有CMOS图像传感器和CCD图像传感器...
CMOS图像传感器芯片OV5017及其应用
CMOS 图像传感器芯片 OV5017 及其应用 1 CMOS 图像传感器的一般特征 目前,CCD(...并根据 OV5017 输出的参考信号,即 VSYNC、HREF 与 PCLK,生成图像存储器的片...
2017年CMOS图像传感器发展现状及市场前景趋势分析 (目录)
行业整体发展态 势及经济运行状况,旨在为企业或投资者提供方向性的思路和参考。...CMOS 图像传感器主要应用领域分析 1.3.1 应用一 1.3.2 应用二 1.3.3 ...
CMOS光电图像传感器原理及应用
CMOS 光电图像传感器原理及应用姓名:张欣(南昌大学信息工程学院,南昌,330031) ...参考文献 [1] 康光华,陈大钦,张林.电子技术基础模拟部分.高等 教育出版社,2006...
更多相关标签: