基于I2C总线的CMOS图像传感器接口电路设计
黄全平, 周荣政, 席占国, 张原, 洪志良
( 上海复旦大学微电子系,上海 200433)
摘要:详细阐述了一种用于百万像素数码相机的CMOS图像传感器接口电路设计及其 VLSI 实现:文章按照数码相机的功能要求进行整体设计,由上而下讨论了各个子模块的设计,并给出了电路的 FPGA 验证:本设计作为数码相机专用芯片的一部分用 0.6μ m工艺实现。
关键词: CMOS 图像传感器: I2C 总线;数码相机;降采样
中图分类号: TP212.14 文献标识码: A 文章编号:1003-353X(2004)10-0057- 04
1 引言
数码相机等图像消费类电子产品产业正在飞速发展,这使得图像传感器和数码相机专用集成芯片的研制获得巨大的市场支持。目前广泛使用的数码相机图像传感器主要是以下两种:CCD和CMOS。CCD 图像传感器具有技术成熟、图像噪声小等优点,但由于制作工艺复杂,与标准工艺不兼容,且需要高电压供电,芯片功耗大,目前仅在型数码相机市场上占有一席之地。而 CMOS 图像传感器采用了 CMOS 工艺,可以将图像采集单元和信号处理单元集成到同一块芯片上,因而具有集成度高、功耗低、价格便宜的优点,具有很好的发展前景。随着噪声消除技术的改进,目前 CMOS 图像传感器正由中、低档数码相机向型数码相机发展。
现在的 CMOS 图像传感器芯片大都把 I2C 总线的一个子集作为控制接口(如Motorola 公司的MCM20027,Omnivision 公司的OV9620等), 因而用户可以很方便地对芯片进行编程操作。与其他串行总线相比, I2C 总线以两根连线实现了全双工同步数据传送,可以极方便地构成多机系统,并进行扩展,适用于消费电子、通信电子、工业电子等领域的低速器件。 I2C 总线由双向数据线 SDA 和时钟线 SCL 组成川,用户使用集电极开路门以“线与”方式进行总线连接。图 1 为 I2C 总线的通信协议示意图,包括开始信号、结束信号、应答信号和数据有效等状态。当 SCL 持续为高电平时, SDA 由‘ 1 '跳变到‘ 0 ',表示开始信号; 当 SCL持续为高电平时, SDA 由‘ 0 '跳变到 ‘ l ',表示结束信号:在数据传输过程中, SDA 在时钟高电平时有效,低电平时更换数据。开始和结束信号均由主 I2C 产生,通过 SDA 传输的数据以字节 (8 — bit 为单位,高位在前,低位在后,在每个字节后面由接收端发送一个低电平的应答信号。
本文设计了一种基于 I2C 控制总线的 CMOS 图像传感器接口电路,能够有效控制 CMOS 图像传感器的指令,产生数码相机专用集成电路其他模块的同步时序,在 MCU 的控制下完成取景和拍照操作,并支持多种规格的 CMOS 图像传感器和液晶显示器。
2 顶层设计
根据所设计的数码相机专用集成电路芯片的系统要求 [2],CMOS 图像传感器接口用来控制达 400 万像素多种规格的 CMOS 图像传感器,并且在 MCU 的控制下,能控制传感器芯片的自动/手动曝光和自动/手动白平衡及其他芯片支持的功能。该接口电路能够在取景和拍照两种模式下工作,在取景模式下,实现可编程的降采样处理,能够输出以 4 的倍数为基准的任意分辨率的图像,并接受多种规格的液晶显示器,取景速度达到 30 帧/s。
根据上述功能要求将 CMOS 图像传感器接口划分为三个模块:主 I2C 总线接口模块、寄存器文件接口和可编程降采样模块,其总体框图和输入输出端口线如图 2 所示。端口线主要有:①和 MCU 接口的连接,包括 MCU_AB( 地址总线 ) , MCU_DB( 数据总线 ) , MCU_nWR( 写使能 ) , MCU_nRD( 读位能 ) , MCU — nCS(MCU 操作选中信号 ) 和 MCU nINT( 中断信号 ) ②和 CMOS 图像传感器的连接,包括来自 CMOS 图像传感器的帧同步 (VC L K) 、行同步 (H C L K) 、像素同步 (PCLK) 、数据 ADC(10 位 CMOS 输出的数值 ) ,以及 I2C 总线的 SDA , SCL , SCCB_E 等:③和数码相机专用集成电路芯片的其他子模块相连,如 VSYNC( 帧同步 ) 、 HSYNC( 行同步 ) 、 PSYNC( 像素同步 ) 、 ADCOUT( 输出图像数据 )。
3 模块设计
3.1寄存器文件模块
寄存器文件模块包括一个中断状态机和 MCU 接口。中断状态机用以控制主 I2C 总线模块,降采样处理模块和 MCU 接口的协调工作,它主要包括 5 个状态: INT_DECIDE , INT_I2C_READ , INT _MCU_READ,INT_I2C_WRITE 和 INT_CLEAR 。状态机缺省状态为 INT_DECIDE 判决状态, 表示状态机处于等待状态: INT_I2C_READ 表示 I2C, 总线正在从 CMOS 传感器读数据: INT_12C_WRITE 表示 I2C 总线正在从 CMOS 传感器写数据: INT_MCU_READ 表示 MCU 正从 I2C 上读数据: INT_CLEAR 表示清中断。
MCU 接口通过给内部寄存器读写参数,使 CMOS 图像传感器接口电路能够实现取景、拍照和软复位的功能:并通过 I2C 总线给 CMOS 传感器的内部参数寄存器读写参数,实现对 CMOS 传感器进行各种参数设置, 以充分发挥 CMOS 传感器的性能。其中内部寄存器包括控制寄存器和降采样寄存器,降采样寄存器主要给降采样处理模块提供可编程所需要的参数。控制寄存器为低 4 位有效,第 0 位为软复位位,当系统复位或系统设置该位为 l 时,整个接口置于复位状态;当系统设置该位为 0 时,则取消复位状态变为工作状态。第 1 和第 2 位一起用来控制拍照和取景操作,当两位均为 1 时表示拍照状态:当第 1 位为 1 ,第 2 位为 0 时表示取景状态;第 3 位用来表示中断位。
3.2 主 I2C 总线接口
由于 CMOS 图像传感器目前普遍采用的是 I2C 总线功能集中的一个子集,因此该接口比一个完整的主 I2C 总线要更简单。它的读写周期如下:当要进行 I2C 总线写操作时,先发送所使用的 CMOS 传感器特定 ID 写地址,紧接着发送需要写的寄存器的地址 (sub_address), 再发送数据 (data) ;当进行 I2C 总线读操作时,先发送所使用的 CMOS 传感器特定 ID 写地址,紧接着发送需要写的寄存器的地址 (sub_address), 再发送 CMOS 传感器特定 ID 读地址,接收数据 (data) 。对于不同的 CMOS 传感器产品,它们的 ID 地址是不同的,例如 Omnivision 公司为 60h( 写 )[3] 、 61h( 读 )Motorola 公司为 66h( 写 )[4] 、 67h( 读 ) 。
考虑该主 I2C 总线的读写周期的特殊性,将该 I2C 总线设计成如图 3 所示的总体结构。主要包括控制状态机、数据缓存器、 SDA 产生接收器、 SCL 产生器以及并 - 串转换和串 - 并转换。数据缓存器用来将要通过 I2C 总线传输的数据组合成所需要的格式,由于 CMOS 图像传感器的 I2C 总线特殊的读写操作格式,因此可以将需要传输的 ID 地址、 sub address 和 data 组合在一个 30 位的缓存器中,它的低六位用来表示高 24 位的 3 个字节的属性,以便正确的传输,通过这种数据组合,便于 I2C 总线传输和识别。串 - 并转换和并 - 串转换本质上是两个移位寄存器,用来将接收到的串行数据转变成并行数据或并行数据转变成要发送的串行数据。 SDA 产生接收器用宋生成主 总线的控制命令如开始、结束和应答位等 ( 和 SCL 配合工作 ) ,随后接收和读取数据。 SCL 产生器用来产生 I2C 总线的时钟信号和控制命令信号 ( 和 SDA 配合工作 ) 。控制状态机主要负责控制整个 I2C 总线的流程,其状态图如图 4 所示。主要包括以下八个状态: IDLE( 等待读取或写入数据 ) 、 LOAD( 加载需要传输的数据 ) 、 START( 发送开始信号 ) 、 WRRD(I2C 总线处于读取或写入数据状态 ) 、 DECIDE( 判决当前状态是读取数据还是写入数据 ) 、 WR _ACK( 写应答 ) 、 RD_ACK( 读应答 ) 、 STOP( 发送结束信号 ) 。例如给 CMOS 图像传感器的一个寄存器写一个字节的数据,需要经历以下状态: IDLE → LOAD → START → WRRD → WR_ACK → WRRD → WR_ACK → WRRD → WR_ACK → STOP → IDLE; 一个字节的写操作的 ActiveHDL 的仿真时序如图 5 所示。
3.3 可编程降采样模块
可编程降采样模块是通过 MCU 给内部的降采样寄存器写入需要的降采样参数来实现可编程的,接口内一共有 6 个降采样参数寄存器:总行数寄存器 (hrefprecnt) 、总列数寄存器 (pixprecnt) 、行丢寄存器 (hrefdropcnt) 、列丢寄存器 (pixdropcnt) 、行降采样寄存器 (vdscnt) 、列降采样寄存器 (hdscnt) ,各个寄存器参数所表示的意义如图 6 所示。操作过程如下:先跳过列丢寄存器值和行丢寄存器值数目的列和行,接下来保留总列数寄存器值和总行数寄存器值数目的列和行,在这些保留的行和列当中用列降采样寄存器和行降采样寄存器的值进行降采样:行降采样寄存器和列降采样寄存器分为两部分:保留和丢弃,保留和丢弃的像素和行的数目均为偶数且为连续的像素,从而保证降采样后输出的像素满足 RGRG … RG 或 GBGB … GB 的 Bayer 格式。通过这样几个降采样寄存器可以很方便实现的各种分辨率的降采样,能够输出任意 4 的倍数的分辨率的图像,因而可以很方便的支持多种规格的 LCD 显示器。
4 电路的 FPGA 验证
在经过上述顶层设计和各个子模块的设计后,用 Verilog 语言 [5] 来实现,并用 ActiveHDL 来进行 RTL 级仿真,并对电路进行了 FPGA 验证,使用的芯片是 Xilinx 公司的 SPARTANIIXC2S200PQ208 ,系统时钟为 54MHz , FPGA 综合的结果显示需要 FPGA 芯片的 11 %的 SLICEs , 22 %的 IOBs 和 25 %的 GCLKIOBs 。整个测试流程由 MCU 控制,在拍照模式下, CMOS 图像传感器的数据流经 CMOS 接口采样存储在 SDRAM 中,再由 EPP 接口上传至 PC 上:在取景模式下,则有 LCD 显示器实时显示。该接口电路在各种工作模式下功能验证正确。
FPGA 验证通过后,作为数码相机专用集成电路芯片的一部分采用上华 0 . 6 μ m 工艺库进行了 ASIC 的后端自动综合, 包括用 Design Compiler(Synopsys 公司 ) 进行逻辑综合、 Prime Time(Synopsys 公司 ) 做版图前验证、 Silicon Ensemble(Cadence 公司 ) 做自动布局布线、 Virtuoso(Cadence 公司 ) 做 DRC 和 LVS ,得到的版图面积约为 3. 7mm × 3.7mm ,综合频率为 25MHz ,在 5V 供电下,功耗约为 150mW 。
5 结论
CMOS 图像传感器接口电路的设计模块可以分为寄存器文件、主 12C 总线接口和可编程降采样模块 3 部分,经过电路的顶层设计和各个子模块的功能设计,进行了 Verilog 语言代码实现,用 ActiveHDL 进行了 RTL 级仿真,并进行了 FPGA 验证,功能设汁正确,并打算作为数码相机专用集成电路芯片的一部分到工艺厂流片。
[1]. OV9620 datasheet https://www.dzsc.com/datasheet/OV9620_1132300.html.
[2]. PC datasheet https://www.dzsc.com/datasheet/PC+_2043275.html.
[3]. 25MHz datasheet https://www.dzsc.com/datasheet/25MHz+_1136611.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。