基于CPLD的全帧型CCD图像传感器驱动系统设计
扫描二维码
随时随地手机看文章
0 引 言
电荷耦合器件(Charge Coupled Devices,CCD)是20世纪70年代初发展起来的新型半导体集成光电器件。作为一种新型的MOS器件,与普通MOS器件相比,具有集成度更高、功耗更低、设计更简单、制造工序更少等优点。随着航天技术的发展,在航天器高姿态和高准确度测量、空间遥感和对地观测等领域中,性能优越的CCD相机越来越多地得到了应用。
在此,将CCD应用于数字航测相机中。数字航测相机是基于数字相机的基本原理,将图像以数字信息的形式存储、转移,并与地面实现通信。CCD图像传感器是相机的眼睛,它对相机的性能起到非常关键的作用,因此,实现电子扫描功能的CCD驱动电路是数字航测相机系统设计的关键。
DALSA公司的FTF4052M 22M Full-Frame型CCD是一款全帧型CCD图像传感器。这里在分析该器件的工作过程中,以及对驱动信号的要求后,采用了基于可编程逻辑器件(CPLD)技术,将CCD驱动电路集成在一块芯片上,实现了CCD图像传感器的驱动电路,并且结合Ahera公司的EPM7160SLC84-10完成了硬件电路的设计。
1 全帧型CCD驱动时序发生器原理
1.1 FTF4052M芯片介绍
FTF4052M是22兆像素(4 008 pixel×5 334 pix-e1)的超大分辨率全帧CCD图像传感器,其内部结构如图1所示。
其主要特性如下:
(1)36 mm×48 mm的光敏面;
(2)优异的抗光晕性能;
(3)22兆有效像素(8H×5 344 V);
(4)可实现垂直子采样;
(5)高的线性动态范围(>72 dB);
(6)数据传输率高达27 MHz;
(7)可实现单路,双路和四路同时输出。
该芯片在结构上分为3部分,中间最大的区域为光敏区,即光积分区域;上下两部分为两个输出寄存器。将光积分生成的电荷水平转移到4个角的输出放大器,输出放大器将光生电荷形成的电压信号放大并转移出CCD。
C1,C2,c3为水平像素转移寄存器的时钟信号。A1,A2,A3,A4为垂直行驱动时钟信号。TG是光敏区与输出寄存器之间的隔栅;OG是输出栅;sG是输出栅之前的最后一个栅;RG是输出放大器。该芯片的最大特点是将光敏区生成的图像分成W,X,Y,Z四个对称的象限,每个象限的电荷可以以不同的方向转移,通过四个输出端同时输出,有效地提高了帧速率,单端输出的帧速率为1帧/s,而四端同时输出就可以达到3.6帧/s。
1.2 帧转移时序分析
CCD的整个帧转移时序如图2所示,主要分为3个阶段,而且这三个阶段是周期进行的。在此,把空闲模式阶段定义为第一阶段,在CCD芯片空闲模式下,A时钟信号全部保持低电平。空闲模式后,CCD芯片开始进入第二阶段,即光积分阶段。
如图2所示,SSC为系统内部基准时钟信号,用于校准整个CCD的时序。VA high是控制四组A时钟的高低电平转换信号;TG信号的相位和频率与A1完全一致。由于CCD芯片FTF4052M发球全帧CCD芯片,光敏面占CCD面积的大部分,为了得到100%的污染点图像,必须加上机械快门。它的开启由Trig-in信号完成。当Trig-in信号上升沿到来时,触发快门使之进行开启动作,CcD准备进行光积分。在Trig-in信号上升沿之后,当基准时钟信号SSC的第一个上升沿到来时,产生脉冲宽度为190.6 ps的信号CR,用于对CCD进行初始化。当CR脉冲到下降沿时,快门彻底打开,ccD正式进入光积分阶段。A1继续保持低电平;A2,A3,A4上升为高电平。因为CCD芯片中的每个像素都可以看作是由四个栅极(每个栅极连接一相时钟信号)“覆盖”的,而且像素之间必须分离开,水平方向上可以通过沟道隔离像素。为了将像素与像素在垂直方向上隔离开,必须将四个栅极中的某一个栅极电压变为零。在该系统应用中,将A1保持低电平,以起到像素隔离的作用。然而光生电荷在保持高电平的A2,A3,A4栅极下积聚起来,形成信号电荷包。[!--empirenews.page--]
光积分结束后进人第三阶段,即帧转移阶段,而帧转移又可以看成是垂直行转移和水平像素转移交替进行的,它们之间的转换通过SSC电平的高低转换实现。
SSC上升沿的到来标志着一次水平像素转移的结束和一次垂直行转移的开始,CCD像素垂直方向的行转移是由A1,A2,A3,A4等时钟及像素传输门TG时钟来完成的,其频率都为50 kHz,且四相A时钟信号要满足严格的交迭原理。在SSC保持高电平时,如图3所示,光敏区里已经生成的电荷包在四相A时钟信号的驱动下逐行地向上和向下转移到输出寄存器。
SSC下降沿到来时,标志着一次垂直行转移的结束和一次水平像素转移的开始,CCD像素水平方向像素的转移是由C1,C2,c3等时钟来完成的,信号频率都为25 MHz。其转移原理与垂直行转移原理一样,三相C时钟信号亦要严格满足三相交迭原理。如图4所示,输出寄存器就是在三相C时钟信号的驱动下将这一行逐个像素向输出放大器转移的。
RG(Reset Gate)是通过复位管对输出放大器的浮置扩散电容(Floating Diffusion Capacitante,FD)进行复位的信号,其中FD可以将接收到的电荷包转换为电压信号。复位后FD可以接收下一个电荷包。SG(Summing Gate)是在输出栅OG之前的最后一个栅,SG信号和RG信号的相位与C3信号的相位相同。一行电荷包经过输出放大器的转换和放大后,以电压信号的形式从CCD输出。接下来再进行下一行的垂直行转移和水平像素转移输出,直到将光敏面上的所有5 356行电荷包输出完毕为止。由此可见,整个一帧图像是在A时钟信号和C时钟信号的交替驱动下从CCD芯片的输出放大器输出而完成帧转移的。
2 驱动系统设计
随着大规模可编程器件的迅速发展和广泛使用,传统的通过TTL标准电路构成的积木式电路系统已经慢慢被淘汰。目前较为流行的CCD驱动电路设计方案一般有两种:一是用FPGA或者是CPLD产生CCD的时序驱动信号,以及用模拟电路(功率放大晶体管和电位器)实现对CCD的直流电平驱动信号;另一种则是用专用的CCD驱动芯片,实现对CCD的驱动。前者要求开发者对硬件描述语言熟悉,而且实现灵活,集成度高,方便功能的升级和扩展;后者则只需对寄存器进行设置,编程较为简单,但是可扩展性稍差。在此,采用Altera公司EPM7160SIC 84-10型可编程逻辑器件(CPLD),使用Altera公司的QuartusⅡ集成开发环境,并通过与微机相连的下载线实现CPLD的烧写和在线编程。顶层的设计采用原理图输入,设计出各个功能模块,然后再使用硬件描述语言(VHDL)对各个功能模块编程的自上而下的开发方法,实现了高层次复杂逻辑的设计,从而实现了硬件设计的软件化。
通过对该CCD芯片的了解,将顶层设计分为3个功能模块,分别为倍频模块(模块1)、光积分时间控制及快门控制模块(模块2)、帧转移模块(模块3),各功能模块的关系如图5所示。模块1为倍频模块,通过调用该模块,可产生帧转移所需的频率脉冲信号。由于CPLD芯片一般不带有PLL模块,故可采用延时加异或的方式来实现倍频。不过目前较新的CPLD,如Lattice的MachXo系列器件则可直接调用PLL,此处不再赘述。模块2为光积分时间及快门控制,通过拍照指令产生CR脉冲信号,对CCD进行初始化,并生成一个在光积分期问保持高电平的使能信号ENA。将ENA分别发送至模块1和模块3。CR信号和ENA可通过对按键信号Trig—in的延迟处理来实现,也较为简单。该设计中最关键的是帧转移模块。其原理主要是利用3个计数器进行相互嵌套,从而产生所需的驱动信号,其简易流程如图6所示。
[!--empirenews.page--]
首先由CLK时钟产生模6计数器sell、模4764计数器sel2和模6计数器sel3。由于sell和sel2相互作用,当满足ENA=1且sel2≥683(由图3可得出)时,则相应可产生C1,C2,c3信号值,否则全部赋为0。而A1,A2,A3,A4则是在SEL2和SEL3的共同作用下,将主时钟信号进行分频后作为时钟,在满足图6中所罗列的条件后,根据SEL2值的变化即可给出A1~A4的值。
采用这种模块化的设计,其光积分时间、行转移频率和像转移频率、行转移数和每行像素转移数均可调整,程序的移植性较好,可适用于不同的需要,而且也方便调试。
3 实验结果分析
对程序进行系统仿真后的时序图如图7所示。可看出该时序符合CCD芯片的datasheet要求。将编译好的程序下载到CPLD中,通过示波器可以得到所需的驱动信号,如图8所示。
在实验中发现,虽然软件仿真中各个驱动信号能够严格符合CcD4052M要求的时序关系,但是实际输出到CCD信号的驱动信号却仍然有不同程度的延时。这主要是由两方面的原因引起的。首先,由于在设计初期采用的是集成开发环境下行为级的仿真功能,仿真过程不包括延时信息,只为验证代码行为的正确性,可以做到与器件无关,所以CPLD的输出会与仿真结果有所差异;其次,CCD驱动信号由CPLD产生后,需要经过后续的模拟驱动电路,由于电子器件本身的特性和差异,造成了抵达CCD管脚的驱动信号具有不同的延时。其中,第一种误差可以通过进行集成开发环境下的时序级仿真解决。这种仿真为设计的每一个底层器件加入了延时信息,可以模拟到比较接近实际电路的行为。第二种误差因电子器件本身造成的,存在个体性差异,无法进行精确的计算。解决方法是在电路设计中加入延时芯片,通过实际测量,设定不同延时芯片的延时,校正各个驱动信号间的误差。
4 结 语
该CCD驱动系统采用CPLD芯片进行设计,具有性能好,功耗低,体积小的特点。该驱动电路的研制结果表明,采用CPLD专用集成芯片进行系统设计有它自身的优点,可以简化设计,并且调试简单,可扩展性也比较强。