《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于FPGA的MT9P401图像传感器驱动设计
基于FPGA的MT9P401图像传感器驱动设计
来源:电子技术应用2011年第6期
张 帆,冯桂兰,田维坚
(中国计量学院 光学与电子科技学院,浙江 杭州310018)
摘要: 针对目前道路抓拍相机分辨率低的现状,提出一种基于FPGA的大面阵CMOS图像传感器驱动设计。设计采用Micron公司的CMOS图像传感器MT9P401,以Altera公司生产的EP2C8T144C8为硬件平台,将Verilog HDL编写的I2C总线模块嵌入FPGA内部实现对CMOS图像传感器参数的设置。软件仿真和实验结果表明驱动设计合理,CMOS图像传感器在驱动时序的作用下,进入正常工作状态。
中图分类号: TP212.1
文献标识码: A
文章编号: 0258-7998(2011)06-0062-03
Design of driving for MT9P401 image sensor based on FPGA
Zhang Fan,Feng Guilan,Tian Weijian
College of Optical and Electronic Technology, China Institute of Metrogy,Hangzhou 310018,China
Abstract: Aiming at the condition that the capture camera has low resolution,one design of driving circuit for large resolution CMOS image sensor based on FPGA is proposed. The CMOS image sensor MT9P401 produced by Micron was adopted in the design.The EP2C8T144C8 produced by Altera was adopted for the hardware platform. The I2C bus module written by Verilog HDL was embeded in the FPGA to achieve the setting of CMOS image sensor's parameters. It is can be seen from the software simulation and experimental results that the design of driver is reasonable and the CMOS image sensor can work normally under the control of the driving time.
Key words : FPGA;MT9P401;CMOS image sensor;I2C bus


    汽车在给人们生活带来便利的同时也带来了交通事故。其中超速行驶是造成交通事故的重要隐患之一。据研究表明,目前针对车辆超速行驶情况的道路抓拍系统中所使用的图像传感器大多为小面阵器件,普遍为100万~200万像素,从而导致抓拍图像的像素比较低、能够同时抓拍的车道数较少等等问题。面对这一系列问题,大面阵的图像传感器便逐渐成了人们关注的热点。在设计过程中,分析了具有500万像素的CMOS图像传感器MT9P401的工作模式,选用QuartusⅡ做为开发工具,使用Verilog HDL语言对驱动电路设计方案进行了硬件描述,并对所设计的驱动时序进行仿真和验证。
1 MT9P401图像传感器介绍
1.1 主要特点

    MT9P401是Micron公司的一款具有500万像素的CMOS图像传感器。该芯片的主要特点有:图像分辨率为2 592 H×1 944 V,像元尺寸为5.7 mm×4.28 mm,最大传输速率为96 Mb/s,相应的采样速率为14 f/s,动态范围为70.1 dB。
    MT9P401图像传感器将像素矩阵、串行接口、阵列控制器、A/D转换电路等集成在一起。当MT9P401的像素矩阵受到光照时,由于光电效应使光信号转变为电信号,由此产生的模拟信号传送至内部A/D转换器,输出相应的数字信号。控制像素矩阵的信号由矩阵控制器产生,矩阵控制器通过串行接口操作。
1.2 电子曝光方式
    MT9P401图像传感器有两种电子曝光方式,分别对应两种不同的快门模式。
    (1)电子卷帘快门(Electronic Rolling Shutter):对任一像素,在曝光开始时将其清零,等待曝光时间过后,将信号值读出。数据的读出是串行的,所以清零、曝光、读出也只能逐行顺序进行,通常是从上至下,和机械的焦平面快门非常像。此曝光方式的特点是每个像素曝光时长相同,但曝光时间点不同。
    (2)全局快门(Global Shutter/Snapshot Shutter):每个像素点增加了采样保持单元,在指定时间内对数据进行采样,然后顺序读出,这样虽然后读出的像素仍然进行曝光,但存储在采样保持单元中的数据却并未改变。因图像的积分时间相等,所以每个像素点在同一瞬间曝光。此曝光方式的特点是能同时复位所有像素,但曝光时长不同,可用机械快门实现同时结束曝光。
1.3 像素数据读出时序分析
    MT9P401图像传感器共有256个内部寄存器,内部寄存器的设置决定了MT9P401的工作状态。MT9P401与外部控制器的通信依靠I2C总线[1],在I2C总线协议下输出每一帧图像数据。默认情况下,MT9P401的像素时钟与外部输入时钟同步,MT9P401一帧图像的像素包括1 944行和2 592列,每经过一个像素时钟周期,都有一个12 bit的像素数据通过数据输出引脚输出,帧有效信号(Frame_Valid)的周期为70 ms,行有效信号(Line_Valid)的周期为35 μs。当帧有效信号(Frame_Valid)和行有效信号(Line_Valid)均为高电平时,输出像素数据。当帧有效信号(Frame_Valid)为低电平时,出现垂直消隐。当行有效信号(Line_Valid)为低电平时,出现水平消隐。像素数据读出时序如图1所示。

 

 

2 电路设计
2.1 电路硬件设计
    电路硬件由电源模块、时钟模块、CMOS图像传感器与FPGA通信模块构成。
    (1)电源模块
    CMOS图像传感器部分按照MT9P401数据手册上的要求应提供5种电源,分别为:+1.8 V的数字电源VDD、+2.8 V的IO口驱动电源VDDIO、+2.8 V的模拟电源VAA、+2.8 V的成像核心电源VDDPIX、+2.8 V的锁相环电源VDDPLL。FPGA部分按照EP2C8T144C8数据手册要求提供3种电源,分别为+1.2 V的数字电源VDD、+3.3 V的IO口驱动电源VDDIO、+1.2 V的模拟电源VAA。
    由于CMOS图像传感器的供电电源需要有较高的纹波抑制和噪声,同时输出压降要低,结合设计低成本、低功耗等因素,在电源部分选择TI公司的单端输出LDO[2](TPS77001、TPS79003)作为供电模块。LDO的工作原理是通过负反馈调整输出电流使输出电压保持不变。LDO是一个降压型的DC/DC转换器,因此Vin>Vout,它的工作效率可以用式(1)表示:
  
    LDO的工作效率一般在60%~75%之间,产生的静态电流较小。
    (2)时钟模块
    时钟是整个电路中最重要、最特殊的信号,电路中各器件的动作基本在时钟的跳变沿上进行,这就对系统时钟信号的时延差要求非常小,否则容易造成时序逻辑状态的错误。因而在电路设计中保持时钟信号的稳定性有着非常重要的意义。在本设计中,FPGA的控制时钟由外部50 MHz的有源晶振提供。为了防止振荡器干扰电源,在有源晶振旁加上104去耦电容。CMOS图像传感器的外部输入时钟EXTCLK需要100 MHz,其由FPGA中的PLL[3]倍频得到。
    (3)CMOS图像传感器与FPGA通信模块
    MT9P401图像传感器的内部寄存器决定了图像传感器的工作状态,在图像传感器复位后,需要对这些内部寄存器进行配置,从而需要选用合理的外部控制器对其内部寄存器进行相关读写操作。本设计选用Altera公司生产的EP2C8T144C8作为MT9P401图像传感器的外部控制器,其有足够的逻辑容量、PLL和I/O数量。通过EP2C8T144C8对MT9P401的内部寄存器进行设置,配置方式采用串行模式,通信协议采用I2C总线传输协议,从而驱动出MT9P401的帧有效信号(Frame_Valid)和行有效信号(Line_Valid)。
    除此之外,考虑到数字系统设计中的信号完整性(Signal Integrity,SI)、电源完整性(Power Integrity,PI)和电磁完整性(Electromagnetic Integrity,EMI),在PCB板布线过程中尽量避免过孔,采用差分对设计走线,增加PCB电源/地平面的层数,等等,使设计整体的性能达到最优状态。
2.2 电路软件设计
    根据具体应用环境,选用MT9P401的电子卷帘快门模式作为图像采样模式。为了采集到连续的帧有效信号(Frame_Valid)和行有效信号(Line_Valid),通过I2C总线对MT9P401内部的(11)H和(30)H两个寄存器分别进行设置,其余内部寄存器保持默认值。整个程序采用Verilog HDL语言编写,采用自顶向下的设计方法,根据MT9P401的驱动时序分析划分功能模块,将各个输入输出信号分配给相应功能模块,并对各功能模块进行Verilog HDL设计输入以及仿真。各功能模块的功能都实现后,再完成顶层的Verilog HDL设计输入以及仿真。整个程序主要包括时钟产生模块和I2C总线控制模块[4]两部分。
    时钟产生模块主要提供I2C总线的串行时钟SCL和CMOS图像传感器的外部输入时钟EXTCLK。由于I2C总线协议一般有3种速度模式:正常速度模式100 kb/s、快速模式400 kb/s、高速模式3.5 Mb/s[5]。设计中采用速度模式为500 kb/s,FPGA的外部输入时钟为50 MHz,所以I2C总线的串行时钟SCL需由FPGA分频得到,通过设计时钟计数器的方式来编写时钟分频程序。CMOS图像传感器的外部输入时钟EXTCLK需要较高的稳定性,为了产生合理的时钟信号,利用Altera的IP工具,在QuartusⅡ软件中通过MegaWizard设计一个PLL倍频时钟,使其输出频率为100 MHz,满足CMOS图像传感器的外部输入时钟要求。
    I2C总线控制模块是程序设计的核心模块,主要完成控制I2C总线上主从设备的起始、读写、停止等状态的转换。首先对EP2C8T144C8的内部寄存器进行初始化,此时如果写使能信号(wr_enable)为高,则EP2C8T144C8向MT9P401发送从器件写地址(BA)H,收到响应位后发送需要进行写操作的MT9P401的内部寄存器地址,收到响应位后继续发送需要写入寄存器的数据。若写使能信号(wr_enable)为低,则开始对MT9P401的内部寄存器进行读操作。其程序流程如图2所示。

3 电路仿真与实现
    本设计选用Altera公司的QuartusⅡ6.0软件工具进行开发。通过QuartusⅡ6.0建立系统工程文件,根据设计要求设置文件类型和参数,在工程文件下建立各个功能模块的Verilog HDL文件,再对整体进行编译、综合和仿真,然后下载配置到EP2C8T144C8中进行板级调试[6]。
    如图3所示,I2C总线控制仿真时序一共包含两个输入端和三个输出端的波形状况。其中EP2C8T144C8的控制时钟CLK为50 MHz,MT9P401的输入时钟EXTCLK为100 MHz,复位信号RST为高电平,I2C的串行时钟SCL为500 kHz。同时通过I2C的串行数据线SDA依次对MT9P401内部的(11)H和(30)H两个寄存器进行配置,配置过程遵循I2C总线传输协议。

    对EP2C8T144C8下载配置完成后,用示波器探头测量MT9P401的帧有效信号(Frame_Valid)和行有效信号(Line_Valid)输出引脚,查看输出波形,如图4和图5所示。从图中可以看到有连续的帧有效信号和行有效信号输出,而且帧有效信号的周期约为70 ms,行有效信号的周期约为35 μs,符合MT9P401的驱动时序要求,说明FPGA完成了对MT9P401的驱动设置。

    实测数据证明I2C总线控制时序设计正确,MT9P401图像传感器在I2C总线控制作用下,工作状态正常,能够输出有效的数据信号。同时结合复杂可编程逻辑器件使设计的驱动电路具有集成度高、功耗低、速度快、接口方便等优点,为基于大面阵CMOS图像传感器的抓拍相机系统的研究提供了可能性。另外FPGA的可编程性和Verilog HDL编程语言的可移植性,使得该设计具有更加广范的应用价值。
参考文献
[1] 夏宇闻.Verilog数字系统设计教程(第2版)[M].北京:北京航空航天大学出版社,2008.
[2] 程军,邬小林,周民,等.一种LDO线性稳压电路设计[J]. 现代电子技术,2010(6):16-19.
[3] 梁九鹏,李永亮,郑佳.FPGA器件中PLL的设计应用[J]. 无线电工程,2007,37(9):62-64.
[4] BRUCE J W.Personal digital assistant(PDA)based I2C bus  analysis[J].IEEE Transactions on Consumer Electronics,2003(11):1482-1485.
[5] 刘韬,楼兴华.FPGA数字系统设计与开发实例导航[M]. 北京:人民邮电出版社,2005.
[6] 王诚,吴继华,范丽珍,等.Altera FPGA/CPLD设计(基础篇)[M].北京:人民邮电出版社,2005.

此内容为AET网站原创,未经授权禁止转载。