吴峥,佟首峰,宋延嵩
(1.长春理工大学 光电工程学院,长春 130022;2.长春理工大学 空间光电技术研究所,长春 130022)
随着科学技术的发展,科学级相机在国内外科研工作以及工业生产中被广泛使用。近年来CMOS器件制造工艺不断进步,CMOS相机由于自身低成本、低功耗高集成度和高灵敏度等优势被轻小型、低能耗的图像处理系统所应用。由于进口相机价格昂贵,且有时很难满足一些特定要求,航空等部门产品国产化的需求日益紧迫[1-2],因此需要研发一款具有高分辨率可开窗口的科学级相机。
本文以Gpixel公司的GMAX0505光电传感器为基础,FPGA为核心器件[3-6],设计了相机系统的电路硬件,并编写FPGA程序,实现了整体相机系统的运行。
本文设计的可开窗口大面阵的CMOS相机,使用的CMOS图像传感器为Gpixel公司生产的GMAX0505。此图像传感器光学尺寸为1.1英寸,具有5 376×5 184个可读取像素,有效像素为5 120×5 120个,像素尺寸为2.5 μm×2.5 μm。GMAX 0505是一款电荷域全局快门高速图像传感器,快门效率可达80 dB,时域噪声小于1.6 e-,其峰值量子效率高达70%。GMAX0505使用差分信号技术来输出读取的图像数据,有48个差分信号数据通道,一个控制通道和一个时钟通道。可以选择2~48个通道用于数据的传输,它支持以减少输出通道的数量读出完整图像,帧频会按照比例减少,每秒最高可以输出150帧图像。相机主要系统结构如图1所示。
图1 系统结构框图
系统主要工作流程为:上位机通过异步串口向FPGA发送所要进行的控制信息。FPGA在接收到上位机传来的信息后通过配置SPI使CMOS图像传感器按照配置参数进行光电转换和AD转换,转换结果为10 bit或者12 bit的图像数据,转换后的数字信号通过LVDS接口传递给FPGA。GMAX0505可使用48通道进行数据传输,在一行数据传输过程中每条通道传输112个像素信息,通过FPGA中的处理,将其转换成标准的Cameralink格式,通过接口输出给带有采集卡的计算机,计算机再对所接收到的图像数据进行储存和处理。
整体硬件电路系统由三块PCB板构成,第一块是图像传感器板。图像传感器板主要由CMOS芯片、其他所需电阻、电容和接口等组成,其中,CMOS芯片为核心。GMAX0505图像传感器主要使用SPI进行配置,可以通过把寄存器配置写入SPI接口来控制相机时序,从而实现相机的多种功能。当相机上电或重新设置后必须对图像传感器重新编程。
第二块是FPGA控制板,电路原理如图2所示。FPGA电路是控制整体相机的核心器件,集中央控制和运算为一体,不仅需要对CMOS图像传感器提供驱动信号,同时还会从上位机接受控制信号,对传感器进行开窗口等操作,最后还要把图像数据上传给上位机。本相机所使用的FPGA为Xilinx公司的Artix-7系列的XC7A50T,使用28 nm工艺,内部拥有52 160个逻辑单元,收发速度高达6.6 Gb/s。
图2 FPGA配置电路原理图
第三块为Cameralink以及电源接口板,主要是两个MDR-26接口和一个电源口以及电源芯片。为将图像传感器中输出的图像数据信号上传给上位机,在FPGA中编写了相应程序,将图像数据在FPGA中转换为Cameralink格式,通过接口输出给上位机。电源供电电路为FPGA芯片XC7A50T、外部晶振SiT8008B、EEPROM芯片M25Q128FW以及图像传感器GMAX0505等。选用芯片TPS6215作为电源芯片,TPS6215x系列属于易用型同步降压DC-DC转换器,针对高功率密度的应用进行了优化。该系列器件具有3~17 V的宽运行输入电压范围,其输出电压为0.9~6 V,支持高达1 A的持续输出电流,可以很好地满足本相机的供电设计需求。同时,为使GMAX0505顺利工作,选用了多个运算放大器为传感器芯片提供参考电压。
硬件设计完成后,下一步要通过FPGA来实现GMAX0505的各项功能,在FPGA上编写Verilog语言,使相机顺利工作,GMAX0505的工作方式主要通过配置SPI寄存器来实现。在GMAX0505中总共有256字节的寄存器,当传感器通电后,所有寄存器将重置为默认状态,在传感器正确操作之前,一些寄存器需要重新配置,这些寄存器的读写是通过SPI接口进行的。在传感器工作时SPI需要的17个数据位都是由FPGA所提供,其中包括:一个控制位,发送的第一位指示操作说明是写入(1)还是读出(0);8位地址位,定义需要的寄存器地址,MSB为第一发送位;8位数据位,定义要写在选定寄存器的数据,MSB为第一发送位。也可以在一次操作中进行连续编写,在此情况下,只有第一个寄存器需要地址位,当第一个8位数据位编程到地址为N的寄存器后,以下的8位数据位将会被自动编程到地址为N+1的寄存器下。SPL_CLK的最大频率为10 MHz,当SPI_CLK上升沿时对GMAX0505的数据位进行采样。在第一个数据位被采样之前,SPI_EN信号在半钟周期内必须是高的,SPI_EN必须在最后一个数据位被采样后的1个时钟周期内保持高。采样的数据将在最后一个下降的时钟边缘写入序列器中,因此SPI_CLK必须在写入操作成功的最后再次降低。图3为时序仿真图像。
图3 SPI时序仿真图像
为了提升帧频[7],GMAX0505图像传感器可以在水平方向上进行开窗口。图像传感器的像素数据组最多可以分为16个区域,对于这16个可开窗口区域,每个区域需要配置两个规定的寄存器来表示开窗口区域起始行数,要求在0~5 147之间,另外还需要两个寄存器来确定此开窗口区域所持续的行数。以窗口1为例,若想在图像传感器上进行开窗口1操作,需对地址为20和19的寄存器进行配置,将两个寄存器合二为一,以寄存器20为高8位,寄存器19为低8位,共16位二进制数据来表示开窗口区域的起始行数。同理,需配置地址为22和21的寄存器来控制此开窗口区域持续的行数,通过FPGA对SPI的配置来完成开窗口的位置以及大小。此相机允许开窗口区域重叠,但重叠行的第二次读取将输出暗图像数据。
GMAX0505使用LVDS输出图像数据,共有48个LVDS数据通道。首先将所有输出的LVDS串行信号转换为并行信号。时钟信号输出双倍数据速率的时钟,用来在接收端进行采样,它与数据通道和控制通道同步,偏移最小,控制信道输出用于正确接收图像数据和监测传感器状态的必要信息。为了使接收数据准确,一般在图像采集前对输出端口进行训练,使用DDR时钟直接对数据进行采样以及控制输出是可以的。在这个训练中,通常只需要字词的对齐。训练模式(TP)将在STREAM_EN转变为“1”后在所有数据通道上连续输出,寄存器CTR_TRAIN_EN需要设置为状态“1”才能在控制通道上启用TP,可以实现字对齐。当训练过程结束后,将寄存器CTR_TRAIN_EN设置到状态“0”。
GMAX0505阵列数据输出被分割成24个区域,每个区域包含一个顶部输出(OUTT)和一个底部输出(OUTB),每个通道输出此区域像素数据的一半。在本相机中,共使用48个通道输出10 bit图像数据,通过OUTT输出像素数据的奇数列,通过OUTB输出像素数据的偶数列。每个通道输出112个像素信息,行输出包括训练模式以及输出数据,当出现起始同步码后,开始输出第一行的像素。如图4所示,以通道OUTB<0>为例,当通道输出同步码 SOL1,SOL2,SOL3,SOL4后,开始输出10位像素信息,从第0列开始一直到第222列共112个偶数列的像素信息,每个像素从最低位数据为起始输出,输出10位数据后,接着输出下一个像素的数据,当112个像素数据输出完毕,以 EOL1,EOL2,EOL3,EOL4同步码作为结束的标志。与此同时,其余47个通道也完成各自分配的112个像素的输出,一行结束后行输出继续下一行的像素数据的输出,直至一帧图像全部输出完毕。一帧输出后,行输出进入训练模式,等待下一帧起始的同步码,再次重复以上过程,接收新一帧图像数据。传感器输出仿真如图5所示。
图4 像素映射
图5 传感器输出仿真
本相机使用的连接接口为Cameralink,通过Cameralink接口把相机产生的实时图像高速传输到采集卡进行数据的实时处理,并通过PCIe接口实现采集卡和电脑的通信[8-9]。Cameralink是专门为数字相机的图像数据控制信号及相机数据传输提出的接口标准,通过将28位数据信号和一个时钟信号以7∶1的比例转换为5对差分信号来传递信息。考虑到本相机为5 120×5 120大面阵相机,所输出的数据量比较多,故使用Full模式。Full模式一般使用3个Cameralink芯片和两条电缆来进行数据传输,以便加快传输速率。
FPGA通过48个通道接收图像传感器输出的图像数据,将数据以OUTB<0>与OUTT<0>这种对应数据组组成一组,48组数据变为24组数据,每个像素点包含10位数据,以两组数据从低到高位的形式捏合为20位的数据写入FIFO[10],当一行图像数据输出后,以80位为一组通过FIFO读取出来。由于Cameralink每个端口只有8位,故取每个像素点的高8位,将80位的数据变为64位,以并行的形式输出出来,从而转换为Cameralink标准通过MDR-26输出各计算机的采集卡上,完成相机的输出工作。Cameralink输出仿真如图6所示。
图6 Camera Link输出仿真图像
通过对相机整体系统的设计,在硬件上自主设计出了整个系统的原理图,并完成了PCB设计以及焊接,制造出了相机的主体实物,如图7所示。软件上使用Verilog HDL语言对相机进行了编程,实现了SPI配置、开窗口、Cameralink输出以及串口通信等功能。成功驱动了GMAX0505图像传感器,完成了图像的采集、开窗口和输出图像等功能[11]。
图7 相机实物图
为了验证成像系统的成像效果,给相机配备了光学系统并进行了室内成像实验,图像通过Cameralink接口传输至带有图像采集卡的上位机,使用CamExpert软件可以采集到清晰的图像,且显示成像分辨率为5 120×5 120,采集到的图像如图8所示。通过对相机进行开窗口操作,可以采集到图9所示的图像,使用减小视场大小的方法能够提升相机的帧频,CamExpert显示输出给计算机的速率可达到100 f/s。
图9 开窗后图像
本文主要以Gpixel公司的GMAX0505图像传感器为基础,使用Cameralink为传输标准,设计并研制出基于FPGA的大面阵可开窗口的CMOS国产化相机。相机成像系统的分辨率可达到5 120×5 120,并且可以完成开窗口操作。通过使用结果可以看出,该相机成像稳定,运行可靠,集成度高,具有高分辨率、可开窗口提升帧频等特点,十分适合于科学应用的研究。