基于FPGA的星载成像系统设计

祝庆贺+熊文卓+贺小军
摘 要: 针对卫星上相机成像噪音高、灵敏度低以及国外垄断的问题,提出一种基于FPGA和国产CMOS图像传感器的空间相机成像系统设计,应用于小卫星的空间成像。系统采用高分辨率的国产CMOS图像传感器作为成像元件,使用Spartan?6系列的FPGA作为主控芯片,CMOS输出图像信号进入FPGA进行缓存和排序,再通过CameraLink接口发送到上位机。实验结果表明,系统能采集到2 048×1 024像素大小的图片,图像信噪比高于36 dB,优于CMOS传感器技术手册提供的参考值31 dB,成像效果良好,能满足小卫星的空间成像要求。
关键词: FPGA; 高分辨率; CMOS图像传感器; 卫星成像
中图分类号: TN915?34; TP271 文献标识码: A 文章编号: 1004?373X(2017)15?0064?04
Abstract: Since the camera imaging in satellite has high noise and low sensitivity, and is monopolized by foreign countries, a design of spatial camera imaging system based on FPGA and domestic CMOS image sensor is put forward, and applied to the space imaging of small satellites. The domestic high?resolution CMOS image sensor is taken as the imaging component of system. The FPGA of Spartan?6 series is used as the main control chip of system. The image signal output by CMOS is entered into FPGA for catching and sorting, and send to the upper computer through CameraLink interface. The experimental results show that the system can acquire the image with 2 048×1 024 pixels, its SNR (signal?to?noise ratio) is higher than 36 dB, which is better than the reference value of 31 dB provided with CMOS sensor technical manual, the imaging effect is better, and can meet the space imaging requirement of small satellites.
Keywords: FPGA; high resolution; CMOS image sensor; satellite imaging
0 引 言
基于CMOS具有成本功耗低、成像速度快等优点,星载相机目前大多采用CMOS图像传感器作为成像元件[1],但是也带来了噪声高、灵敏度低等问题,而且国外垄断着高端CMOS器件的研发,对我国航天事业的发展造成了阻碍。随着商业卫星的不断发展,对星载相机的性能参数要求不断提高,这就需要解决目前星载相机的成像问题,并且积极研发和搭载国产CMOS图像传感器,打破国外垄断,填补卫星上国产CMOS图像传感器的空白,使卫星应用跟上国际商业市场的发展节奏[2]。
本文采用国产CMOS图像传感器GSENSE400作为成像元件,用FPGA处理CMOS传感器输出的图像数据,实现图像的高速采集,具有很好的信噪比和灵敏度。
1 系统结构
系统结构分为图像采集模块、FPGA主控制器和存储器模块三个部分,如图1所示。
图像采集模块采用400万像素、最高帧频48 f/s的国产CMOS图像传感器GSENSE400,具有高速、低噪声、高灵敏度以及高动态范围等特点,其内部集成12位ADC,具有片上时序发生器,能产生所有需要的控制信号。GSENSE400的主输入时钟频率是50 MHz,然后利用器件内部的PLL产生高速时钟。FPGA通过控制GSENSE400片上的12位编码器ROW[11:0]控制传感器的成像模式,利用SPI总线与GSENSE400通信,控制其图像采集和数据传输。GSENSE400采集到原始格式的图像数据,通过8对LVDS差分通道将图像数据传输给FPGA,同时还提供一对LVDS差分时钟,用于同步数据。
FPGA主控制器是整个系统的核心,负责驱动图像传感器采集图像,通过CameraLink接口与上位机通信实现对系统的命令控制,并将图像发送给上位机,还驱动存储器缓存图像数据。本设计采用的是Spartan?6系列的FPGA,它具有最高的成本优化,高逻辑引脚比以及各种多样化支持性I/O协议,非常适合本设计的要求。DS90CR287芯片完成图像数据的并串转换,再通过CameraLink将串行數据发送至上位机,图像数据传输模式为Medium模式,需要两个DS90CR287芯片和两个CameraLink接口。FPGA与DS90LV047A,DS90LV048A的连接是为了通过SerTC,SerTFG和相机控制信号来实现FPGA与上位机的通信,实现上位机对系统的命令控制[3]。
存储器模块用于缓存图像处理数据,同时实现FPGA硬件电路和片上系统之间的通信,对于存储器上的两块区域,FPGA硬件电路乒乓写一级运算结果,片上系统乒乓读,然后进行算法处理。Spartan?6系列FPGA具有专用的多端口存储控制器MCB,可以方便实现对DDR,DDR2,DDR3等存储器的时序控制[4]。为了保证计算结果的实时性,系统选用DDR3存储器,选择MT41J64M16芯片,其总容量达到1 Gb,能够满足系统存储数据的要求。
2 系统软件设计
2.1 时钟模块
时钟模块管理FPGA内部所有时序电路的时钟,该模块采用Verilog HDL语言编写,经過ISE14.4综合生成的寄存器转换级电路(Register Transport Level,RTL)原理图如图2所示。
其输入由50 MHz的有源晶振和GSENSE400输出的像素时钟clk_pixel提供,输出LVDS接收时钟和时序生成模块的时钟clk_rxg/clk_rxio、图像发送模块时钟clk_txg/clk_txio、GSENSE400的主时钟clk_main和系统时钟clk_sys等,同时提供图像接收和发送模块的复位信号rst_rx_n/rst_tx_n以及系统内部复位信号rst_sys_n。
主时钟频率和FPGA内部PLL和DCM设置决定了GSENSE400工作的帧频。FPGA内部的工作时钟频率为clk_pixel,该时钟决定了FPGA内部图像接收模块和时序模块的工作频率。时钟模块仿真波形如图3所示。
2.2 串行通信模块
串行通信模块包含FPGA 内部所有的串行通信模块,它通过CameraLink接口与上位机通信,接收上位机指令,实现对系统的控制。该模块包括上下位机控制接口、GSENSE400的时序模块和五线SPI模块。
上下位机控制接口主要实现FPGA与采集卡之间的通信。CameraLink协议中存在一个双向的LVDS串行接口SerTC/SerTFG,用来实现FPGA与上位机的通信,其协议符合422标准,在上位机至FPGA的下行链路中,FPGA程序实现了去毛刺、波特率计算、串行数据接收等工作;在上行链路中采用FIFO作为数据缓存,根据下行链路计算出的波特率进行并串转换。
时序模块提供GSENSE400工作所需要的时序,由上位机将生成的数据写入至FPGA片上BRAM,时序模块通过外部控制命令读取BRAM中的数据进行输出。
SPI模块实现了一个五线的SPI接口,控制FPGA对GSENSE400的寄存器进行读写。SPI模块的时序如图4所示。
SPI_IN的第一个数据应该至少在SYS_RST_N拉高2 μs后发出,SPI_IN中的数据在SPI_CLK的每个上升沿循序加载。在SPI_CLK的第256个下降沿时,SPI_WRITE拉高,表明SPI的写操作完成。写到SPI寄存器的数据也是按照同样的协议被读出,在SPI_CLK的下降沿,SPI_READ被拉高,然后在SPI_CLK的每个上升沿读出SPI寄存器的数据。
2.3 传感器控制模块
传感器控制模块实现了对传感器的状态控制,主要包括复位、training以及图像采集,其RTL原理图如图5所示。该模块的输入信号有时钟信号clk_rxg、复位信号rst_rx_n、相机控制寄存器reg_camera_control、测试图片使能信号reg_test_image_enable和training完成信号training_done,输出信号有开始training命令信号cmd_start_training、产生测试图片命令信号cmd_gen_test_image、传感器复位信号sensor_reset_n和帧请求信号frame_req。
相机控制寄存器reg_camera_control是8位寄存器,通过对该寄存器操作来实现对传感器的状态控制。具体位操作及命令控制见表1。
2.4 图像接收和发送模块
图像接收模块主要实现8对LVDS的串并转换、training以及CameraLink所需的FVAL,LVAL信号。该模块利用Spartan?6中的iserdes硬核实现数据的串并转换。
为了同步GSENSE400的LVDS数据对,可以通过控制SPI寄存器中的train_en来开启training模式对数据进行训练对齐,该模式以与时钟沿具有最小延时的数据为标准,将所有数据对进行位对齐、字对齐和通道对齐。位对齐利用Spartan?6中的iodelay模块,使采样时钟的上升沿处于稳定数据的中间位置;字对齐通过FPGA判断接收通道是否是预先写入GSENSE400中的training pattern来实现,通过bitslip信号控制;由于各个通道的数据到达FPGA端的时间不一定在同一时钟周期内,因此要采用通道校正的方式防止数据丢失,通道校正的核心思想是将所有通道的数据均通过shifter进行移位,以满足在同一时刻同时读出对应的数据。
图像接收模块实现数据的串并转换,硬件电路设计使用DS90CR287进行数据的并串转换,故只需对FPGA输出的并行数据按照DS90CR287的管脚关系进行映射,即可通过CameraLink接口将数据发送至上位机。
3 实验结果分析
根据图1所示的系统框图搭建成像系统,成像系统实物图如图6所示。
在对本系统的硬件和软件模块调试成功后,对系统的成像功能进行测试,验证系统的成像质量。使用本系统对室内靶标进行成像,成像结果如图7所示。
该图像大小为2 048×1 024像素,选择图像均匀区域,信噪比计算公式如下:
式中:和代表信号与噪声功率谱,但通常功率谱难以计算,所以用图像的灰度均值和标准偏差分别近似信号与噪声功率谱[5],再按照式(1)计算图像的信噪比,计算结果见表2。
由表2的计算结果可知,该图像信噪比在36 dB以上,优于GSENSE400技术手册提供的参考值31 dB,可知系统成像质量较好,信噪比高,能够满足空间相机成像要求。
4 结 论
本文论述了基于FPGA的星载成像系统,详细介绍了其硬件构成及Verilog HDL程序的实现方法。实验结果证明,本文系统能够实现对2 048×1 024像素大小图片的采集,信噪比高,上位机能够实现对系统的命令控制,能够控制系统采集图像和发送图像至上位机。
该系统采用国产CMOS图像传感器,该传感器还能用作卫星敏感器,有助于打破国外对CMOS图像传感器在卫星应用的垄断,对国产CMOS图像传感器在卫星上的应用和国产卫星相机的研发有极大的推动作用,在卫星上具有良好的发展前景。
参考文献
[1] TRIANA J S, BAUTISTA S, GONZALEZ F A D. Identification of design considerations for small satellite remote sensing systems in low earth orbit [J]. Journal of aerospace technology and management, 2015, 7(1): 121?134.
[2] 刘韬.Skybox公司高分辨率小微卫星星座开启商业遥感2.0时代[J].卫星应用,2014(3):70?71.
[3] 王小艳,张会新,孙永生,等. Cameralink协议和FPGA的数字图像信号源设计[J].国外电子元器件,2008,16(7):59?61.
[4] 张莎莎,李慧鹏,宋凝芳,等.基于FPGA的多路微位移精确监控系统设计[J].仪表技术与传感器,2016(1):56?58.
[5] 王学伟,王春歆,张玉叶.点目标图像信噪比计算方法[J].电光与控制,2010(1):18?21.
[6] MURTHY K, SHEARN M, SMILEY B D, et al. SkySat?1: very high?resolution imagery from a small satellite [C]// Proceedings of 2014 SPIE Conference on Sensors, Systems, and Next?Generation Satellites. [S.l.]: SPIE, 2014: 1?12.