基于FPGA 的高分辨率科学级CMOS相机设计

2020-11-17 03:29时玮淞吕耀文
吉林大学学报(信息科学版) 2020年3期
关键词:时序时钟校正

时玮淞, 吕耀文

(长春理工大学 光电工程学院, 长春130022)

0 引 言

随着科技的发展, 高分辨率科学相机在国内外被广泛使用。 由于国外在CMOS(Complementary Metal Oxide Semiconductor)和CCD (Charge-Coupled Device)相机技术上的垄断[1-2],因此国内使用的科学相机大多数都是进口的。 同时, 进口相机的应用场景有很多限制, 很难满足某些特定的环境要求。 而且整装进口的相机可开发性低, 价格昂贵。 因此, 笔者设计了具有自主知识产权的高分辨率科学级数码相机,包括采集、 控制、 处理和传输等核心技术, 同时也积累了开发经验[3]。 这对于满足科学成像领域的需求具有积极意义。

1 总体结构设计

高分辨率科学级CMOS 相机系统采用基于sCMOS 传感器GSENSE400 组合FPGA[4-5]作为控制核心的硬件电路。 GSENSE400 是一个四百万像素分辨率的CMOS 图像传感器, 使用11 μm 高动态范围像素。该传感器采用电子卷帘式快门, 读出时间噪声为1.47e-RMS(Root Mean Square)。 高灵敏度结合极低的噪声和低暗电流, 使其非常适合科学应用。 该图像传感器有两种工作模式, 分别是帧速率为48 Hz(Frames Per Second)的STD(standard)标准模式和半帧速率(24 Hz)的高动态范围应用优化的HDR 模式。

GSENSE400 芯片的每列像素有1 个12 bit 高速A/ D 转换器, 每列像素有个12 bit 高速A/ D 转换器,由LVDS(Low-Voltage Differential Signaling)高速串行发送器将高速图像数据发给sCMOS 图像传感器, 提供SPI 接口用于控制和改变传感器的工作参数。 全速运行的图像传感器功耗小于600 mW。 系统中的FPGA 采用Xilinx Spartan-6 系列XC6SLX150-FG484 芯片, 芯片内部包含147 443 个逻辑单元, 180 个DSP48A1, 6 个CMT, 338 个用户I/ O 等, 性能非常优越。 此外, 采用45 nm 的工艺制造, 实现了低功耗和高性能的完美结合。 系统结构框图如图1 所示。

图1 系统结构框图Fig.1 System structure diagram

系统工作流程如下: FPGA 上电加载配置程序, 计算机通过异步串口向FPGA 发送控制信息, FPGA对接收的控制信息进行分析判断。 通过SPI 接口设置sCMOS 工作模式, 通过判断的信息产生GSENSE400 的驱动时序, 实现传感器的正常工作。 传感器被初始化后, 数字图像数据通过LVDS 信号输出给主控芯片FPGA, FPGA 将接收的图像数据进行处理, 转换为Camera-Link 标准数据, 通过Camera-Link 接口芯片输给后端装有Camera-Link 采集卡的计算机, 计算机对接收的数据进行处理、 存储。

2 硬件电路设计

2.1 传感器电路设计

GSENSE400 是长光辰芯公司设计的一款大靶面科学级CMOS 图像传感器, 分辨率为2 048( H)×2 048(V)像素, 采用了11 μm 的APS 像素和电子卷帘快门。 由于使用了相关双采样技术, GSENSE400读出噪声<2 ke-, 且具有高于96 dB 的动态范围, 即使在强光条件下也可对微弱信号清晰成像。GSENSE400 灵敏度高达1.81×108 ((W·m-2)·s)。

同时GSENSE400 的暗电流随温度快速下降, 在零下20 ℃时, 暗电流小于0.15 e-·( s·pix-1)。GSENSE400 采用了高可靠性的PGA 封装, 具有良好的散热和抗冲击能力。 这些特性使得GSENSE400 可广泛用于科研、 生物、 显微成像、 高端安防监控及工业领域。 GSENSE400 的驱动框图如图2 所示。

图2 GSENSE400 驱动框图Fig.2 GSENSE400 drive block diagram

GSENSE400 使 用 5 针 SPI ( Serial Peripheral Interface)对传感器进行编程。 用户可通过SPI 接口写入寄存器配置值从而控制时序电路产生相应时序。 通电或重新设置顺序后, 必须对传感器重新编程。ROW0 ~11是12 位行译码器, 用于控制像素阵列的行逻辑地址, 为了限制数据量或提高传感器的帧速率, 可以在垂直方向进行开窗操作。 时序信号用于控制传感器的读出时序电路。 译码器和时序信号必须同时工作。

GSENSE400 传感器需要一个高速时钟CLK_INTER 生成内部控制信号, 通过配置SPI 寄存器提供高速时钟, 并提供两种方法: 一种是使用内部锁相环和外部低速时钟(CLK_REF); 另一种是使用内部LVDS 接收器和一对外部高速差分时钟(CLKN_IN 和CLKP_IN)。

如图3 所示, 当使用内部PLL 时, CLK_REF 频率为25 MHz, 从FPGA 获得, CLK_REF 通过图像传感器内部PLL 产生300 MHz 的主时钟CLK_INTER。 SPI 寄存器配置默认使用内部PLL, 主时钟提供了GSENSE400 正常工作所需要的时序, 正确的时序设计是保障传感器正常工作的基础。 OUT 0_N/ P-OUT 7_N/ P是GSENSE400 的8 对LVDS 信号通道, CLK_OUT_P/ N 是随同8 对信号数据的时钟, SPI_CLK、SPI_READ、 SPI_WRITE、 SPI_IN、 SPI_OUT 是SPI 配置传感器所需要的信号。

图3 GSENSE400 电路原理图Fig.3 Schematic diagram of GSENSE400 circuit

2.2 FPGA 配置电路设计

FPGA 配置电路是设计者与电路之间沟通的纽带。 当前XILINX 公司支持的配置方式主要有5 种: 主串模式、 从串模式、 主并模式、 从并模式以及JTAG(Joint Test Action Group)模式。 JTAG 是通过调试时将配置参数下载到FPGA 的RAM 中使用。 而主串、 从串、 主并和从并模式是指通过下载到PROM 中使用。Spartsn-6 系列FPGA 共有5 种配置模式, 可通过改变模式配置引脚M1-M0 的值进行选择。

该设计中的FPGA 在主串模式下工作。 如图4 所示, 该模式下配置引脚M1、M0 上接3.3 V 电源, 下接地。 实际使用时可以根据使用模式选择在PCB(Printed Circuit Board)中的连接方式。 由于Spartan-6 系列FPGA 使用SRAM 结构实现其现场可编程性, 并且SRAM 属于掉电易失性存储器, 因此FPGA 每次上电后必须重新加载配置文件。 Xilinx 平台Flash Prom 的容量分别为8 MByte,16 MByte 和32 MByte, 根据本次设计(见图4a)XC6SLX150-FG484 的配置文件大小为8 652 943 bit, 因此在该设计中选择XCF16P 存放配置文件。XCF16P 的核心电压VCCINT 为1.8 V, 输出驱动电压VCCO 为3.3 V。 时钟频率配置为25 MHz。

图4 FPGA 配置电路原理图Fig.4 Schematic diagram of FPGA configuration circuit

2.3 Camera-Link 输出电路设计

为满足设计要求, 在节省成本的情况下, 根据相机的输出HDR 图像的数据量, 同时为了简化FPGA数据传输模块的设计, 通过使用1 片28 位的NI 公司生产DS90CR287 芯片进行图像数据传输。 其工作状态为Base 模式下。

如图5 所示, DS90CR287 的工作频率规定为20 ~85 MHz, 其负责将FPGA 的28 位LVCMOS / LVTTL数据转换成4 对LVDS 差分数据流, 同时发送一个锁相环驱动时钟在第5 对差分线上传输。 在85 MHz的传输时钟频率下, 28 位TTL 数据以595 Mbit/ s, LVDS 数据信道的速率传输。 使用85 MHz 时钟, 数据吞吐量为2.38 Gbit/ s(297.5 MByte / s)。 本次设计选用75 MHz 时钟, 将该芯片输出的5 对LVDS 信号通过差分电缆和MDR-26 接口传输给后端带有图像采集卡的计算机, 图像采集卡的接收芯片将5 对差分信号还原成28 位TTL/ CMOS 信号, 由计算机进行后续的图像数据处理。

图5 DS90CR287 芯片连接原理图Fig.5 Schematic diagram of DS90CR287 connection

如图6 所示DS90LV011A 是一款针对高数据速率和低功耗应用而优化的单路LVDS 驱动器件,其即使在高频下也能保持低功耗, 同时保证短路故障电流最小化。 该器件采用5 引脚SOT-23 封装。 LVDS 输出经过精心布置, 便于PCB 布局。 该芯片通过发送差分信号使相机与图像采集卡进行串行通信, DS90LV011A 与其配套的单线接收器DS90LV012A( 见图7) 配对, 从而实现对相机的参数配置。

[26]梁方仲:《明代国际贸易与银的输出入》,《梁方仲经济史论文集》,北京:中华书局,1989,第178—179页。

图6 DS90LV011A 芯片原理图Fig.6 Schematic diagram of DS90LV011A

2.4 供电电路设计

图7 DS90LV012A 芯片原理图Fig.7 Schematic diagram of DS90LV012A

电源供电系统分别对FPGA 芯片XC6SLX150, PROM 芯片XCF16P, 外部晶振OSC5X7, Camera-Link接口芯片DS90CR287, 串口通信芯片DS90LV011A、 DS90LV012A 以及图像传感器芯片GSENSE400 提供电压, 其数值如表1 所示。

选用低压差线性稳压器( LDO: Low Dropout Regulator) 作为相机硬件的驱动电源, 芯片型号为LT1764, 其专为实现快速瞬态响应而优化, 具有低压差, 极低的输出噪声, 压差模式下静态电流可控的特点。 LT1764 的工作状态分为固定模式与可调模式。 固定模式下可输出电压1.5 V、1.8 V、2.5 V、3.3 V, 可调模式下可输出电压在1.21 ~20 V 之间。使用该芯片完全满足本次相机设计的供电要求。

为使GSENSE400 传感器具有最佳性能, 需要3 个基准电压(VREF、 VRF 和VRS)。 参考信号的噪声水平将影响GSENSE400 传感器的行噪声性能, 因此选用AR510 1.000 V 精密基准电压源供电。

表1 芯片供电表Tab.1 Chip power supply

3 FPGA 内部功能模块设计

在FPGA 上编写硬件描述语言( VHDL: Very-High-Speed Integrated Circuit Hardware Description Language), 以驱动整个相机正常工作。 在VHDL 语言编写中, 采用自顶向下的构架方法设计整个成像系统, 相机系统可按照功能划分为以下几个模块: SPI 配置、 CMOS 时序驱动、 数据采集、 Camera-Link 数据转换以及串口通信模块。 FPGA 内部功能模块框图如图8 所示。

图8 FPGA 内部功能模块框图Fig.8 Block diagram of FPGA internal function

3.1 SPI 配置模块

GSENSE400 通过SPI 接口配置内部256 位寄存器, 对其进行初始化操作以及配置CMOS 的工作模式, 包括改变开窗地址, 增益控制, 灰度控制, 数据读出方向等, 配置的时序图如图9 所示。

图9 SPI 读写时序图Fig.9 SPI read and write sequence

在重新通电或复位后, 所有片上寄存器的默认值为 “0”。 寄存器通过串行到并行接口(SPI) 重新编程。 SPI_CLK 频率为25 MHz。 在系统重新上电后, 必须至少延时2 μs 后SPI_IN 才可以传输数据,SPI_IN上的数据在SPI _CLK 的每个上升沿到来时顺序加载, 在第256 个SPI _CLK 下降沿到来时,SPI_WRITE应设置为 “1”, 表示一个SPI _WRITE 进程已完成。 SPI_READ 在SPI_CLK 的下降沿拉高,然后SPI_OUT 在SPI_CLK 的每个上升沿到来时顺序读出SPI 寄存器数据以及片上16 位温度传感器数据。

SPI_WRITE 的modelsim 仿真如图10 所示, 寄存器接收到复位信号后产生SPI 时钟, 当配置的请求信号cmd_wr_spi_s 拉高时, SPI_IN 在SPI_CLK 的每个上升沿到来时开始发送数据, 延时20 μs 左右时,SPI_WRITE 电平被拉高。 仿真结果完全符合GSENSE400 手册上的SPI 写时序图, 证明模块功能完美实现。

图10 SPI 写时序仿真Fig.10 Simulation diagram of SPI write timing

3.2 CMOS 时序驱动模块

使GSENSE400 在HDR 模式下完成正常采集需要使用19 个外部时序控制信号, 全部由FPGA 产生。在CMOS 时序驱动模块中, FPGA 向CMOS 发送时序指令, 控制CMOS 的工作状态, 图11 为HDR 模式下所有控制信号的时序仿真图。

图11 HDR 模式下数字控制信号时序Fig.11 Sequence diagram of digital control signal in HDR mode

在GSENSE400 中, 控制信号在HDR 模式下具有513 个传感器像素时钟周期(CLK_PIX)。 并且所有数字控制信号应与CLK_PIX 的上升沿同步。 该模块设计必须实现这19 个控制信号的时序逻辑, 才能使GSENSE400 正常工作在HDR 模式下用仿真软件仿真了在513 个像素周期内, 19 个控制信号的时序如图12 所示, 可见与GSENSE400 芯片手册上的时序完全一致, 该模块功能完全实现。

3.3 数据采集模块

由于图像传感器GSENSE400 本身的设计, 8 个高速LVDS 通道数据和LVDS 输出时钟的相对相位未完全对齐。 如果使用时钟直接采样8 个通道的数据, 则会出现错误代码, 从而影响成像质量[6]。 图13 给出了4 个通道的输出结果。

图12 HDR 模式下控制信号时序仿真Fig.12 Simulation diagram of control signal sequence in HDR mode

图13 训练前LVDS 通道输出偏移误差Fig.13 Output offset error of LVDS channel before training

由图13 可见, 4 个通道输出的数据存在相位差, 因此要在训练模式[7-8]中进行数据的位、 字和通道校正, 以使采样时间对应于数据眼图的正中心。

设计采用Spartan-6 自带的ISERDES 模块进行数据的位、 字和通道校正。 为实现延迟, 使用FPGA 内部的IODELAY 延迟单元实现动态调整功能, 其可以用于高速数据的位校正。 GSENSE400 输出8 个数据通道(OUT)和1 个时钟通道(CLK_OUT)的LVDS 信号。 数据通道发送的是12 位的图像信号, 时钟通道发送的是双沿采样的DDR 时钟, 频率是数据信号的一半, 上升下降沿均采集图像数据。

数据采集模块接收LVDS 信号的步骤为: 首先将CMOS 输出的所有LVDS 信号转化为串行信号, 然后经过延迟模块进行动态调整, 最后使用DDR 双倍时钟采样, 将串行数据转化为并行数据。

该设计采用两段状态机实现延迟。 第1 阶段状态机主要负责实现控制校正状态的跳转, 开始处于CTRL_IDLE 空闲状态, 该状态下chan_sel 为000, 当接收到training_start=1 的训练指令后, 进入START_ALIGN 状态, 此时start_align =1, 之后进入ALIGN 校正状态进行位、 字和通道校正。 当align_done = 1 时校正完成, 依次执行对8 通道的判断, 判断所有数据通道完成校准后, 返回CTRL_IDLE 空闲状态。

第2 阶段状态机主要负责位、 字和通道的校正, 如图14 所示。 开始在IDLE 空闲状态下, 收到第1阶段状态机启动训练指令start_align =1 后, 进入RESET_1 复位1 状态, ISERDES 和ISERDES 的延迟, 然后进入眼图采样eye_sample 状态, 收集N个输入点数据并检测其是否稳定, 此时采样时钟的位置不一定是眼图中心。 然后进入EYE_DELAY 眼图延时状态, 通过iodelay 模块对输入通道进行延时, 之后进入EYE_CHECK 眼图检测状态, 开始位校正, 根据数据采样是否稳定改变eye_state, 依次移动采样位置找到FIND_EDGE_1、 FIND_EDGE_2。 此后进入EYE_CALC 眼图计算状态, 通过找到FIND_EDGE_1、 FIND_EDGE_2, 控制器就知道了稳定的采样点范围, 该范围的中点是最佳采样位置, 之后进入RESET_2 复位2状态, 重置ISERDES 和ISERDES 的延时, 最后进入EYE_CENTER 眼图中心状态, 在该状态下, 控制器将采样点移至稳定采样点范围的中点, 即最佳采样位置, 从而实现采样位校正。 位校正完成后, 进入WORD_ALIGN 字校正状态, 该状态下对已经位对齐的数据进行字对齐。 通过比较输出的并行数据和训练字是否相等, 如果不相等则反复使用bitslip 字滑动, 直到并行数据和训练字匹配为止。 之后进入CHAN_ALIGN 状态, 进行通道的对齐。 最后进入FINISH, 发送校正完毕信号(align_done =1)。

图14 校正流程图Fig.14 Correction flow chart

4 成像结果

图15 加工焊接后的PCBFig.15 PCB after processing and welding

根据上述总体设计加软硬件联合调试, 硬件上自主设计了国产相机系统电路原理图, 并进行了PCB(Printed Circuit Board) 设计最终加工焊接了PCB, 完成了相机的实体设计, 如图15 所示。 软件上FPGA 采用VHDL 语音设计了SPI 配置、 CMOS 时序驱动、 数据采集、 Camera-Link 输出以及串口通信模块, 实现了用FPGA 控制驱动GSENSE400 图像传感器, 完成图像数据的采集、 缓存以及整合输出给计算机的功能[9]。

为了验证相机的成像效果, 进行了室内的成像测试。 实验采用了25 MHz 的时钟作为主时钟, HDR 模式下每种增益图像数据传输速率为1 200 Mbit/ s, 图像通过Camera-Link 接口传输给带有图像采集卡的计算机, 成像分辨率为2 048×2 048 像素, 测试图像如图16、 图17 所示。 从测试的图像效果可以看出, 输出的两幅高低增益的HDR 图像分辨率高, 通过后期图像处理可以融合成高动态范围的图片[10]。

图16 高增益图像Fig.16 High gain image

图17 低增益图像Fig.17 Low gain image

5 结 语

笔者设计了以长光辰芯公司生产的高分辨率CMOS 图像传感器GSENSE400 为核心, FPGA 为主控制芯片, Camera-Link 为传输标准的国产高分辨率CMOS 相机成像系统。 相机成像系统可以在HDR 模式下输出24 f/ s, 2 048×2 048 像素分辨率的图像。 通过实验的成像结果可以看到, 设计的国产化相机系统具有高分辨率, 高动态范围, 高灵敏度以及极低的噪声和低暗电流的特点, 非常适合科学应用。

猜你喜欢
时序时钟校正
清明
别样的“时钟”
古代的时钟
劉光第《南旋記》校正
基于不同建设时序的地铁互联互通方案分析
基于MR衰减校正出现的PET/MR常见伪影类型
基于FPGA 的时序信号光纤传输系统
在Lightroom中校正镜头与透视畸变
机内校正
有趣的时钟