李华,朱波
(1.商洛学院电子信息与电气工程学院,陕西商洛 726000;2.中国科学院西安光学精密机械研究所,陕西西安 710119)
相比CMOS图像探测器,CCD图像探测器具有较高的量子效率、较好的光信号线性响应度以及较高的灵敏度等显著优点,因此,CCD图像探测器广泛应用于空间遥感、航空航天、工业、医疗等领域[1-2]。如:美国火星探测器“好奇号”就携带了17台相机,全部采用Kodak公司200万像素的CCD图像探测器KAI-2020[3]。因此,研制高性能CCD成像系统具有重要的应用前景和经济价值。但是,CCD成像系统普遍读出速率较低、帧频较慢,严重限制了其应用场合。针对这种情况,本文根据项目实际,研制了一台图像质量好、输出帧频高的CCD电子学系统,克服了传统CCD成像系统的不足。
本文根据某科研任务实际,选用加拿大DALSA公司生产的一款1 M像素的帧转移型CCD芯片FTT1010M作为图像传感器。FTT1010M是一款具有优良抗晕结构的高质量帧转移型CCD图像传感器,具有填充因子高(100%),动态范围大(>72 dB),像元输出速度快(≥2×40 MHz),电荷转移效率高(0.999999),读出噪声低(RMS读出噪声典型值25e),输出格式灵活(H&VBinning)等特点,非常适合作为高性能成像系统的图像传感器[4-5]。
设计上为了提高帧频,根据FTT1010M的结构特点,采用左右通道同时输出的方式,将CCD输出速率最大化。图像采集处理部分使用TI公司的高性能图像AD—LM98640,LM98640是TI公司一款双通道、14位量化、采用串行LVDS输出的高性能模拟前端图像AD,主要用于处理CCD/CMOS的模拟图像,被广泛应用于高精度、高速图像处理系统中。
本系统要求具有较高的数据更新率,帧频满足50 f·s-1。因此,电子学方面的指标除了图像质量,主要体现在像元读出频率和探测器帧频两方面。帧转移CCD时序设计中,读出频率的确定是关键[6-7],为了得到高帧频,系统的像元读出频率设为33 MHz。这样,一帧图像的读出时间为:
其中,Tp取33 MHz像元读出时间,105Tp为行逆程时间,543Tp为双路读出一行图像的时间(512个有效像元,24个暗像元,7个哑像元),1030表示读出的行数(1024行图像,6行暗行)。这样,一帧图像的读出时间为20.023 ms。
读出频率确定后,按照读出频率是帧转频率8N倍(N为整数)的关系确定帧转移期间的信号周期,本设计取N=1,得到帧转移时间Tf:
即帧转频率为4.125 MHz时,帧转1030行需要的时间为0.25 ms。这样,输出一帧图像所需要的时间为:
因此,每秒可输出约50帧图像,满足系统对图像帧频的需要。
此时,像元读出频率为33 MHz,即输出给LM98640的像元时钟为33 MHz,满足LM98640对输入像元时钟不超过40 MHz的要求,经过模数转换后,LM98640输出的数字串行数据时钟为33 MHz×8=264 MHz。
结合系统逻辑情况、数据缓存情况,系统在逻辑控制方面使用了xilinx公司330万门的FPGA—XC2V3000,除了资源丰富,该FPGA还支持差分输入/输出,可以兼容LM98640的差分接口,节省了差分转单端转换芯片。
整个系统主要单元组成:电源电路、CCD成像单元、视频信号处理单元以及外围接口电路等[8-9],系统结构框图如图1所示。成像单元是系统核心部件,用于完成图像的光电转换;电源电路为CCD系统提供所需的各种偏置电压;视频信号处理单元为CCD提供正常工作所必需的15路驱动时序,并完成模拟输出视频信号的放大、采样、数字化、图像数据的采集、格式转换与输出等功能;外围接口电路包括通讯接口和图像输出接口等。
系统的工作过程为:电源部分为CCD提供偏置电压,系统上电稳定后,FPGA为CCD提供时序驱动信号,经驱动芯片后送至CCD,CCD输出模拟图像,经过射随、运放等处理后进入AD进行采集并数字化处理,FPGA结合两片SRAM对数字信号进行后续处理、格式重组等步骤后,经CameraLink接口输出至应用单元。其间,通过RS422总线接收指令改变成像参数,并返回系统工作状态。
图1 成像系统结构框图
高速CCD成像系统硬件设计比较成熟,因此,本文主要研究高帧频CCD电子学系统的时序设计和高速图像信号处理方面的一些方法。
本文CCD时序驱动电路以FPGA为核心控制单元,其主要完成的功能包括产生CCD驱动信号在内的最基本的时序控制。
FTT1010M芯片正常工作于双路输出模式时总共需要15路时序驱动信号,分别是:图像感光区驱动信号A1、A2、A3、A4;存储区驱动信号B1、B2、B3、B4;水平寄存器读出驱动信号 C1X、C1W、C2X、C2W、C3;复位驱动信号 RG;信号求和驱动信号SG。应用FPGA产生这15路时序驱动信号,并组成具有周期性、且满足CCD手册给定的复杂逻辑关系,即可让CCD正常工作并输出图像。
根据探测器手册并分析帧转移型CCD工作原理可知,FTT1010M探测器的一个工作周期分为两个阶段:帧转阶段和读出阶段(曝光阶段)。在帧转阶段,频率为4.125 MHz,相位依次相差1/3 的帧转移控制信号 A1、A2、A3、A4 与行转移控制信号 B1、B2、B3、B4 相同,且一直有效,将感光区图像转移至存储区,从而在读出阶段将图像逐行输出。在读出阶段,图像感光区控制信号A1、A2、A3、A4保持固定电平不变,并根据曝光时间控制电子快门进行感光,同时进行像元读出,由宽度为450 ns,相位依次相差1/3的四相行转移控制信号B1、B2、B3、B4控制,电荷逐行转移到读出寄存器;每行信号中,各像元电荷受频率为33 MHz,相位交叠1/3的输出控制信号C1X、C1W、C2X、C2W、C3控制,结合 RG 和 SG逐次经过输出放大器输出[10]。
FTT1010M具有电子快门功能,可以精准控制CCD的曝光时间,电子快门在读出阶段打开,为下一帧图像曝光,且打开的开始时机放置在帧转期间,其宽度大于2 μs,如果电子快门宽度太窄,上一帧图像复位不彻底,在短曝光时会导致本帧图像质量变差,特别是图像上下边缘会变得非常模糊。
FTT1010M探测器输出的是1024×1024有效图像数据,探测器每一行左右各有24个暗像元和7个哑像元。同时,为了保证读出信号的完整性,在时序设计时采用了读出冗余的设计方法,即转移的行数和输出的行数均设定为1024+6=1030,比CCD实际工作要求的行数多出6行暗行。
本成像系统具体的驱动电路结构框图如图2所示。
图2 时序驱动电路框图
由图2可以看出,CCD工作所需的所有时序均由FPGA产生。首先,按照设计指标产生相应的曝光、帧转移、行转移和读出时序信号,这些时序信号通过垂直、水平驱动电路送给CCD,驱动其工作;FTT1010M需要三电平时序,因此,FPGA需要提供相应的时序,控制相应电路工作。期间,FPGA需要根据指令信号,实时改变CCD的曝光时间、增益等工作参数,满足不同成像条件下的图像质量。
整个时序框图中,CCD时序的设计最为复杂,为了提高设计可靠性,本系统采用了一个主状态机来控制,如图3所示。然后再对不同的子功能设计下一级状态机来实现,最终完成所有功能。
图3 CCD时序流图
具体的时序设计如下:当FPGA上电200 μs稳定后,系统复位信号Reset触发主状态机处于空闲状态(IDLE)。接着触发曝光(Integration)和行转(Line Transfer),分别开始曝光和行转操作。为了精准控制各过程,系统内分别定义了曝光计数器Inter_cnt、帧转计数器F_cnt、行转计数器L_cnt和像元读出计数器P_cnt。曝光时Inter_cnt开始计数,当Inter_cnt的值等于设定的曝光时间时,表明曝光完成,状态机会产生一个曝光结束标识信号,用于触发帧转控制状态,同时曝光控制状态会继续等待下一曝光时间的到来,再按照新的曝光时间重复以上过程。
帧转控制状态收到触发信号后开始进行帧转操作,F_cnt开始计数,每转移一行F_cnt数值加1,当F_cnt等于1030时,表示将图像区的所有图像转移完毕,这时状态机会产生一个帧转完成标识来触发像元读出控制状态,同时,帧转控制状态会空闲,直到下一次帧转触发的到来。
为了尽可能减少干扰信号对本帧图像的影响,帧转完成后,设计时没有直接去行转,而是先空读2行,消除帧转过程中积累的电荷对图像信号的影响。当像元读出状态收到触发信号后,P_cnt开始计数,每读一个像元,P_cnt数值加1,因为本系统工作在双路输出模式,当P_cnt等于543时说明像元已经读干净,这时如果空读完成则触发行转状态,否则进入IDLE状态。
行转状态收到触发后,L_cnt开始计数,数值累加直到其值等于105Tp时,表明行转结束,触发像元读出状态去读取像元。
重复以上过程,CCD就源源不断输出模拟图像数据,期间可以根据成像需要通过RS422改变系统的曝光时间,以适应多变的成像环境。
CCD输出的是模拟图像,为了方便传输和显示,需要将其进行数字化处理。高速图像数据处理包含两部分内容,首先介绍基于高速图像AD的数据处理方法,其次介绍基于FPGA结合外部存储器的数据格式处理策略。
AD转换是成像系统的重要组成部分,直接决定了采样的精度和速度,从而决定了系统的性能。为了适应高速、高精度的需要,本系统采用了TI公司的一款高性能AD—LM98640作为图像模数转换芯片,该芯片具有14bit转换精度,最高转换速率40MSPS,同时支持S/H和CDS工作模式,而且有高等级产品以适应苛刻的工作环境。LM98640要正常工作需要在上电稳定后进行相关寄存器配置,然后才能输出差分图像数据,本系统将配置管脚与FPGA直接连接,用于配置AD工作;由于XC2V3000支持差分输入、输出,因此,设计上将AD的数据输出管脚和像元时钟管脚与FPGA直接相连,不再需要额外的电平转换芯片,方便了硬件设计。
AD配置采用SPI接口进行数据写入和读出,写入信号分别为:时钟信号(SCLK),写使能信号(SEN)和写数据(SDI),读出信号为读出数据(SDO)。写数据时SCLK、SEN和SDI组成一定时序的序列,完成数据写入;数据读出时SCLK、SEN配合即可完成。其中,SCLK的频率应控制在20 MHz以内,以保证配置参数的顺利写入。
为了提高图像质量,本设计AD工作于CDS模式,工作频率为33 MHz,输出采用4路数据同时输出的形式,因此,通过设置Main Configuration、ADC power Trimming等 41 个寄存器完成AD的初始化,特别是Clamp和Sample的位置要结合实际的CCD信号进行微细调整以保证采样在模拟图像最稳定的地方,从而保证图像的质量。配置完成后,LM98640就会按照设置进行模数转换,输出6路差分图像数据,分别是:数据时钟(Clk)、数据同步标识(Frame)和4路图像数据(Data)。为了适应后续图像处理的需要,需要在FPGA内完成相应的转换。
本系统CCD输出的像元时钟为33 MHz,相应的AD差分时钟的速率为264 MHz,为了平稳的处理如此高速的信号,本系统采用了如图4所示的数据处理策略。
图4 高速数据处理逻辑
由于FPGA具有差分数据处理能力,因此,首先将差分时钟、数据同步和4路差分图像数据分别接入FPGA,通过原语IBUFDS将差分信号转成单端信号,时钟域为264 MHz,其中时钟信号送入全局时钟总线,并通过DCM进行时钟相位的微调以保证时钟上升沿采在数据和使能的中心位置,此时,时钟会将数据和使能平稳过度到FPGA内的264 MHz时钟域,接着就可以进行数据的串并转换,将4路串行图像数据分别转换成7位的并行数据,相应的时钟速率也会降到33 MHz,从而完成高速数据向低速数据的顺利转换,便于FPGA后续的图像处理。
为了提高帧频,FTT1010M工作于左右双路输出的模式,左路数据顺序输出,但是右路数据逆序输出,这样就会给后续图像处理带来不利影响,特别是实时性要求较高的场合,因为左右路图像不能直接进行拼接,同时图像数据速率又比较高(33 MHz),也不能进行片内图像顺序的调整和拼接。为此,本系统设计了基于两片片外存储器结合片内BlockRAM资源的数据处理机制,取得了较好的结果。本系统数据处理的原理框图如图5所示。
图5 数据整形单元
AD输出的数据经过FPGA串并转换后,左右路数据并行(28bit)输出,奇数帧存储在SRAM1内,偶数帧存储在SRAM2内,两片SRAM构成乒乓操作关系,当写SRAM1时,FPGA读取SRAM2内的数据,读SRAM1内的数据时,FPGA向SRAM2写数据,读写速率均为33 MHz。这样,保证了进入FPGA内的数据不冲突。
FPGA内例化了4个1030×14bit的BlockRAM,其中,两片设计为FIFO(First In First Out),另外两片设计成 LIFO(Last In First Out),一片FIFO和一片LIFO结合定义为一个存储单元,分别存储奇数行图像和偶数行图像,二者构成乒乓操作关系,当SRAM内的数据进入FPGA后,第一行图像顺序部分(14bit)存入奇数行的FIFO内,逆序部分(14bit)存入奇数行的LIFO内,当第二行图像从SRAM读出时,将顺序部分(14bit)存入偶数行的 FIFO 内,逆序部分(14bit)存入偶数行的LIFO内,在往偶数行写数据的同时,从奇数行读取数据,FIFO中的数据顺序读出,LIFO中的数据逆序读出,并拼接在FIFO数据的后面,这样就构成一行完整的图像(14bit),这时相当于对顺序和逆序图像进行了串并转换,因此像元频率由33 MHz升为66 MHz。同样,在读第二行图像的时候,将第三行图像数据写入奇数行。
经过两片片外SRAM乒乓操作结合4片片内存储单元乒乓操作,顺利完成图像数据的整形,最终将66 MHz像元速率、14bit量化的正常图像数据实时输出给应用单元。
本系统的数据处理部分实物如图6(a)所示,一片FPGA控制LM98640(FPGA左上角位置)进行模拟图像采集,同时,控制两片3D-PLUS公司的SRAM(FPGA左右两边位置)进行后续数据处理。
图6 系统实物及成像效果
系统结合光学部分,以 50 f·s-1的帧频可实现对5等星的探测,图6(b)所示为外场观星得到的4.6等星星点图像,图像信噪比优于25,具有较好的性能。
本文介绍了高帧频CCD成像系统电子学部分的组成结构,分析了FTT1010M图像探测器的特点以及驱动时序设计方法,重点阐述了高速图像AD的控制及其数据的处理方法,并结合片外SRAM完成数据的整形。以xilinx公司FPGA—XC2V3000为控制单元完成了整个设计,外场观星试验数据表明,系统的各项指标满足任务要求。同时,也可以看出,本文高速设计思路适用于基于xilinx公司FPGA的高速系统,具有非常好的通用性。
参考文献:
[1]林胜钊.科学级CCD成像系统关键技术研究[D].合肥:中国科学技术大学,2016:3-7.
[2]李华.基于FPGA的图像发生器的设计[J].商洛学院学报,2015,29(4):15-19.
[3]牛磊星.“好奇”号火星钻探概况[M]//中国地质学会探矿工程专业委员会.第十八届全国探矿工程(岩土钻掘工程)技术学术交流年会论文集.中国地质学会探矿工程专业委员会,2015:6.
[4]陈剑武,曹开钦,孙德新,等.高帧频低拖尾帧转移CCD驱动技术[J].红外与激光工程,2016,45(1):110-115.
[5]马天翔.面阵探测器KAI-04022成像系统设计[J].仪器仪表学报,2014,35(6):117-122.
[6]邸丽霞.基于FPGA的高速图像数据采集存储系统设计[J].电视技术,2013,37(13):49-52.
[7]郭宇琨,王衍,王建宇.“高分四号”卫星凝视相机视频电路设计与实现[J].航天返回与遥感,2016,37(4):49-57.
[8]陶淑苹,郑晓云,朴永杰.高分辨率大面阵微型相机设计[J].液晶与显示,2015,30(3):514-518.
[9]马天翔.面阵探测器KAI-04022成像系统设计[J].仪器仪表学报,2014,35(8):117-120.
[10]任航.高分辨率大面阵CCD相机高帧频设计及其非均匀性的校正[J].红外与激光工程,2013,42(6):1491-1495.