基于FPGA 的高速CCD 工业相机系统设计*
2013-12-22刘栋铖汪海洋孙宁建
沙 涛 ,刘栋铖,汪海洋,孙宁建
(1.南京理工大学电子工程与光电技术学院,南京210094;2.东南大学电子科学与工程学院先进光子学中心,南京210096)
CCD 是一种集光电转换、电荷存储、电荷转移为一体的半导体传感器件,具有寿命长、重量轻、体积小、性能稳定、响应速度快、分辨率高、抗电磁干扰性好等优点[1-2]。因此CCD 在工业现场检测有着广泛的应用。目前,国内已开展CCD 相机系统的研究。例如《基于CPLD 的μPD3575D 线阵CCD 驱动电路设计》[3]一文中主要介绍了基于CPLD 的CCD驱动时序设计,对CCD 相机系统的设计做出了较高价值的铺垫。在前人基础上,本文给出了CCD 相机系统设计的具体结构;详细介绍了CCD 外围电路的设计;为使相机输出图像具有边缘特征,便于检测,本文还研究了基于FPGA 的图像校正与处理方法。
1 硬件电路设计
1.1 系统硬件结构及分析
典型的CCD 相机系统主要包括CCD 驱动电路、信号处理电路、数据传输接口电路以及光学机械接口部分[4]。CCD 驱动电路一般由时序电路和偏置电压电路构成,主要实现CCD 的驱动时序信号以及CCD的偏置电压供电。信号处理电路主要完成CCD 输出信号的A/D 转换,转换后的数据采样,以及采样后的数据处理等功能。数据传输接口电路主要实现相机与外部通信,完成图像数据传输以及相机的外部控制等功能。光学机械接口是CCD 相机的辅助设备,提供与各种光学设备的辅助连接,从而实现光学系统与CCD 的耦合。本系统遵循典型CCD 相机结构的一般组成部分,结构框图如图1 所示。
检测物在光源照射下经光学镜头被CCD 拍摄,CCD 在偏置电压与驱动时序作用下产生像素输出信号OS,OS 信号经放大电路放大后再由AD 采样,AD 采样后得到的并行数据送入FPGA。FPGA 即可实现图像的噪声校正及预处理,并将处理好的数据转换成满足CameraLink 接口通信的图像数据。最终,图像经CameraLink 接口发给上位机图像采集卡,接受进一步处理。温度监控模块可实时监控相机温度,外部触发信号可实现相机曝光外同步。
图1 本系统结构框图
1.2 芯片选型
本文的相机系统主要用于工业流水线现场检测,如大蒜等,要求相机具有高灵敏度,采样速度快:约8 kHz 的线扫描行频,分辨率至少1 024 像素等性能,因此选用加拿大Dalsa 公司的一款高速CCD 芯片IL-P3-B。IL-P3-B 器件具有速度快,信噪比高,光积分时间可调等优点,广泛应用在高速运动图像扫描成像与计算机图像数据采集中。IL-P3-B的有效像素为2 048,像元尺寸为14 μm×14 μm,100%填充因子,单通道输出,还具有高响应度和高蓝光响应特性,而且动态范围高达1 820 ∶1。IL-P3-B 最高驱动频率为40 MHz,在有效像素为2 048 的情况下最高扫描行频为19 kHz,满足工业现场流水线检测的高实时性应用要求。IL-P3-B 需要6 路时序驱动和10 路偏置电压供电才能正常工作[5]。
主处理芯片选用Altera 公司的EP3C16F484 FPGA 器件。EP3C16F484 是Altera 公司的Cyclone3系列器件,具有低功耗、低成本、高逻辑资源等特点。和Cyclone2 系列器件相比,Cyclone3 器件密度提高1.7 倍,逻辑单元(LE)达到120 000,嵌入式存储容量提高3.5 倍,达到4 Mbit[6]。因此,Cyclone3 器件EP3C16F484 是本系统较为理想的选择。
1.3 IL-P3-B 外围电路设计
线型CCD IL-P3-B 的偏置电压都为固定的直流电压,其中VPR 为光积分场效应管的漏极电源电压,一般将其设置为14 V;VSTOR为存储势阱电压,一般为2 V 左右;VSET为输出栅上的偏置电压,常为1.2 V 左右;VBB为输出检测二极管的P 区偏置电压,常为-2 V 左右;VOD为输出复位场效应管的漏极电源电压[5]。对于偏置电压电路的设计可以使用线性稳压电源芯片LDO 和一些高精度的放大器输出直接供电,只要满足其电压值大小即可。
IL-P3-B 能否准确输出像素,最关键的是6 路时钟驱动信号(CR1、CR2、CRLAST、TCK、PR 与RST)的设计,且这6 路时钟驱动信号的幅值不都是常见幅值(如RST 信号的高电平为7 V,TCK 的低电平为-3.5 V,PR 的高电平为4 V[5])。因此需要选用一些专用的驱动芯片驱动,这些驱动芯片则由FPGA 内部逻辑电路提供时钟和控制信号,如图2 所示。
图2 IL-P3-B 驱动结构框图
CR2 与CR1 信号同频反相,CRLAST 与CR1 同频同相,因此采用一款快速COMS 时钟驱动芯片IDT49FCT805 同 时 驱 动 CR1、CR2 和 CRLAST。IDT49FCT805 有两块独立的时钟输出,每块有4 个输出引脚,其中一块用于CRLAST 与CR1,另一块用于CR2,但要注意此芯片会将信号反相。RST 信号则由ISL55110 MOSFET 芯片驱动,ISL55110 是一款专业CCD 驱动芯片,可以达到9 V 左右的驱动电压。TCK信号则由EL7156 驱动,但此芯片也会使信号反相。PR是用于积分时间(曝光)控制的信号,数据手册中对PR信号的要求较为严格:PR 应是一组平滑的脉冲,如果PR 信号变化的太快,OS 信号的均匀性会因PR 信号的时钟馈通效应而受到影响。因为电流驱动的PR 信号产生的时钟馈通效应会比电压驱动产生的要小[5],因此可以采用基于TLE2161 放大电路驱动。
FPGA 由外部80 MHz 晶振提供时钟,利用FPGA内部锁相环(PLL)可以分频得到40 MHz 的时钟。CR1 为40 MHz,占空比1 ∶2的信号,CR2 与CR1 同频反相,则可将CR1 取反得到CR2,CRLAST 与CR1 同频同相,可以使用同一个信号驱动。RST 与CR1 同频且其占空比为1 ∶4,可将80 MHz 的外部时钟取反后与CR1 相与得到RST 信号。图3 为FPGA 内部逻辑电路输出的QuartusⅡ仿真结果。图4 则为经过时序驱动电路后到达CCD 器件引脚的示波器(Tektronix 的TDS1012C-SC 型号,带宽100 MHz)实测结果,可以看出结果满足图5(a)中IL-P3-B 的时序要求,并且PR 信号(图4(d))的变化沿较为平滑,因而得到了较好的CCD 输出信号(图5(b))。
CCD 输出的信号幅度较小,而AD 采样需要的模数转换量化位数又高[7],例如对输出为1 V 的CCD 信号进行12 bit 的量化,那么量化的最低位只有244 μV。因此CCD 的输出信号OS 需要采用放大电路放大。放大电路采用大带宽的运算放大器MAX4224,带宽600 M,增益调至为2。另外CCD 的输出信号是交流信号,因此放大电路的输入端需采用电容耦合方式,隔去直流信号。
图3 FPGA 内部逻辑电路产生CCD 驱动信号的仿真波形
图4 到达IL-P3-B 引脚的驱动信号实测波形
图5 IL-P3-B 时序要求与其输出信号的实测波形
2 系统噪声分析与校正算法研究
2.1 系统噪声分析
噪声是决定图像质量的重要因素。CCD 图像传感器的输出信号是空间采样的离散模拟信号,其中夹杂着各种噪声和干扰,而噪声会影响CCD 成像器件探测微弱光的能力。从微观上讲,CCD 相机噪声主要有散粒噪声、暗电流噪声、转移噪声、复位噪声、输出放大噪声等[8]。而且这些噪声产生原因较为复杂,不利于在FPGA 的逻辑电路上建立模型,因而只能从宏观上分析。宏观上讲,CCD 相机噪声主要分为非均匀性噪声(PRNU)与固定模式噪声(FPN)。非均匀性[9]噪声主要是由传感器的光电响应不一致性产生的,固定噪声是系统固有的噪声。基于这一划分,可以采用一种两点法的实时校正方式加以校正。在深读其他文献[10-11]的实验结果的基础上发现两点法虽可以校正上述两种噪声,但也会带来一些影响,如两点法中减去的固有的噪声是固定的系数,但实际固有噪声值并不固定,其次两点法会使得图像的一些边缘信息弱化。对应用于工业检测的本相机系统并不能完全适用,针对这一问题,本文利用FPGA 逻辑电路的并行特性加入了一种两点法、边缘检测、均值滤波及图像融合相结合的实时校正算法原理,使得校正后的图像带有边缘信息,更加利于工业检测。
2.2 并行校正算法原理及硬件实现
利用可编程逻辑器件FPGA 与Verilog HDL 语言的并行特点,实现如图6 所示的算法流程。
图6 并行校正算法原理框图
算法流程分为3 个阶段,第1 阶段实现两点法中减法与乘法运算。接着将第1 阶段得到的图像分别送到第2 阶段的边缘检测与均值滤波模块中,并行处理,并将得到的图像在第3 阶段中进行融合得到校正后的图像。
两点法采用适用于FPGA 逻辑电路的线性两点法[10]:yi=(xi-bi)×ai。yi=输出数据,xi=相机原始数据,bi=从原始数据中减去的固有噪声值,ai=数据均匀校正系数。对于系数ai不为整数的运算可以使用定点法[11]实现,即定义一个6 bit 的寄存器型数据,高2 位表示整数部分,低4 位则表示小数部分。
边缘检测采用Sobel 边缘检测算子计算,Sobel边缘检测算子是一个3×3 的固定矩阵,很容易在空间上实现。Sobel 边缘检测不但产生较好的边缘检测效果,而且受噪声的影响也比较小[12]。但由于本相机系统是线扫描的,每次曝光只能输出一行像素值,所以需要FPGA 片内RAM 缓存3 行像素,从而形成动态的3 行流水线处理。均值滤波是求3×3窗口内像素的平均值,也需要3 行像素的RAM 缓存,但均值滤波最大的缺点是模糊了细节[13],因此需要与边缘检测相结合。
最后将对应的边缘图像与图像融合模块中设定的阀值作比较,边缘图像像素值大于阈值的像素点置为指定值(如最大值),反之则取对应像素点均值滤波后的像素值。在FPGA 实现上述算法流程后,所得的实验结果见系统测试与结果分析一节。
3 系统测试及结果分析
系统由两块6 层印刷电路板PCB 组成,在测试相机之前,需确定相机的硬件部分无任何设计性错误和工艺故障,且各元器件均能正常工作。测试的主要目的是为了验证系统的功能是否能实现以及系统性能是否达到要求。
试验方法与步骤:
(1)因为CCD 是极易受静电损坏的模拟器件,因而必须采用防静电操作。
(2)将样机(图7(a))接上CameraLink 电缆并同时接到上位机图像采集板卡。
(3)将样机对准被测物体(图7(b)),被测物是装有日光灯的滚筒,用于模拟工业流水线现场。
(4)打开总电源,调节镜头光圈与焦距直到观察到清晰图像(图7(c)、7(d))。
在上位机采用Dalsa 的X64-CL 采集卡并使用软件CamExpet,对所设计的相机系统进行数据采集,形成二维图像,实验结果如图7(c)、7(d)。图7(c)为未加入校正算法采集到的图像,图7(d)为加入校正算法后采集到的图像。可以看出,图7(d)得到了较清晰的图像,并且在实现了校正算法后得到了更加清晰及带有边缘信息的图像,满足项目中工业现场检测的特殊要求。但在实验结果中,我们也不难发现图像中夹杂着有规律的条纹信息(图7(d)),这主要是由测试光源使用的交流光源导致的,交流光源是50 Hz 的交流供电,与图像中的50 Hz 的条纹信息刚好吻合。因此,在工业检测中应使用隔离过的直流光源作为系统光源,这样就不会产生条纹信息。本文在经过多个版本的电路测试后,发现电路设计的不同会对系统的噪声有一定的影响,而相机的主要性能决定于CCD 器件。
图7 实验测试与实验结果
4 结束语
本文对用于工业现场检测的CCD 线阵相机进行了研制,给出了系统结构框图、驱动结构图及仿真与实测波形,设计的系统具有通用的CCD 相机功能,能结合上位机板卡采集完整图像。另外用FPGA 实现了时序驱动和相机校正与处理功能。为今后设计具有FPGA 检测处理功能的CCD 相机系统提供参考。
[1] 米本和也,陈榕庭,彭美桂. CCD/CMOS 图像传感器基础与应用[M].北京:北京科学出版社,2006.
[2] 王祖军,张勇,唐本奇.TCD132D 线阵CCD 总剂量效应的实验分析[J].电子器件,2010,33(1):18.
[3] 陈赟,何惠阳.基于CPLD 的μPD3575D 线阵CCD 驱动电路设计[J].传感技术学报,2006,19(6):2527-2528.
[4] 李丽莎,佟首峰,王雪松.基于双线阵的CCD 的数据采集系统设计[J].仪器仪表用户,2010,17(2):24-25.
[5] Dalsa.IL-P3-B Line Scan Sensors Datasheet[S].2000:1-8.
[6] Altera.Cyclone ⅢDevice Datasheet[S].2010:1-6.
[7] Analog.Complete 12-Bit 40 MHz CCD Signal Processor AD9945 Datasheet[S].2000:1-5.
[8] 许秀真,李自田,薛利军. CCD 噪声分析及处理技术[J]. 红外与激光工程,2004,33(4):344.
[9] 张之江,邹宾,陈迎娟.CCD 亚像素细分中的像素响应不均匀性补偿技术[J].传感技术学报,2005,18(1):57-58.
[10] 李玉珏.基于两点法的实用FPA 非均匀性校正系统[J]. 激光与红外,2007,37(8):754-755.
[11] 赵登超,胡君红,钟胜. 基于FPGA 的两点非均匀校正模块的设计与实现[J].微计算机信息,2006,22(29):4.
[12] 吴术路. 基于Sobel 算子图像边缘检测的MATLAB 实现[J].电脑知识与技术,2010,6(19):5314.
[13] 李秀峰,苏兰海,荣慧芳.改进均值滤波算法及应用研究[J].微计算机信息,2008,24(1):235.