“CMOS 图像敏感器是近年来兴起的一类固态图像传感器。CMOS 图像敏感器具有低成本、低功耗(是 CCD 耗的 1/1000~1/100)、简单的数字接口、随机访问、运行简易(单一的 CMOS 兼容电池供给)、高速率(可大于 1000 帧/秒)、体积小以及通过片上信号处理电路可以实现智能处理功能等特点而得到广泛应用。
”CMOS 图像敏感器是近年来兴起的一类固态图像传感器。CMOS 图像敏感器具有低成本、低功耗(是 CCD 耗的 1/1000~1/100)、简单的数字接口、随机访问、运行简易(单一的 CMOS 兼容电池供给)、高速率(可大于 1000 帧/秒)、体积小以及通过片上信号处理电路可以实现智能处理功能等特点而得到广泛应用。
有些 CMOS 图像敏感器具有标准的 I2C 总线接口,可方便应用到系统中。有些没有这类总线接口电路的专用 CMOS 图像敏感器需要增加外部驱动电路。由于 CMOS 敏感器的驱动信号绝大部分是数字信号,因此可采用 FPCA 通过 Verilog HDL 语言编程产生驱动时序信号。Verilog HDL 语言是 IEEE 标准的用于逻辑设计的硬件描述语言,具有广泛的逻辑综合工具支持,简洁易于理解。本文就 STAR250 这款 CMOS 图像敏感器,给出使用 Verilog HDL 语言设计的逻辑驱动电路和仿真结果。
1、CMOS 图像敏感器 STAR250
STAR250 是一款专为卫星天文导航的星跟踪器(tracker)设计的 CMOS 图像敏感器。由于太空中含有大量辐射,芯片中加入了抗辐射电路以提高空间应用的可靠性。STAR250 的技术指标如下:
(1)0.5μm CMOS 工艺;
(2)512x512 分辨率,像素大小 25μmx25μm;
(3)每个像素 4 个光敏二极管,提高 MTF(幅值转换功能)和减少 PRNU(非均一化光响应);
(4)抗辐射设计;
(5)片上双采样电路抵消 FPN(固定模式噪声);
(6)电子快门:
(7)最大 30 帧/秒;
(8)可以取子窗口;
(9)片上 10 位 ADC;
(10)陶瓷 JLCC-84 针封装。
STAR250 是有源像素的线扫描 CMOS 图像敏感器。所有像素的输出都连接到列总线,并且在列总线上每例都有一个列放大器。使用二次采样技术,控制列放大器可以从读出信号中减去光敏单元上一次采集残留的电荷。片上 ADC 独立于敏感器,可以使用也可以通过软件关闭,而用外部的 ADC。STAR250 为了应用方便有多种读出数据的方法(窗口方式、电子快门等),不同的读出方式有不同的时序要求。
传统的计算机或打印机的图像座标系定义左上角为原点(0,0),在 STAR250 中定义右上角为原点(0,0),如图 1。这样敏感器输出数字信号后能够方便地转换为计算机格式的图像,方便后续的处理。窗口扫描方式是从上向下、从左向右一个像素一个像素地扫描。
2、STAR250 时序信号
STAR250 通过两个步骤完成图像的采集。第一步是逐行扫描 RESET 像素。行内像素 RESET 后,本行自上一次 RESET 或读出后积累的所有光敏电荷被排空。从 RESET 行像素开始新的曝光周期。第二步是本次曝光周期数据读出。以电压的形式读出,然后经过 ADC 转换为数字量。由于电荷采用排出式读取,CMOS 图像敏感器的像素读出不可恢复,读取过程也相当于 RESET 像素,所以 CMOS 敏感器行 RESET 的速度与读取速度一样。
STAR250 通过三个指针标定整个图像地址:Yrd 当前扫描行,Yrst 当前 RESET 行,Yrd 当前读出像素。这三个指针都有相应的移位寄存器,通过设置这三个寄存器的初始值可以调整采集窗口的大小和位置。图像采集的流程图如图 2。每秒钟的图像帧数通过设置 Yrd 和 Yrst 进行控制,曝光周期也由这两个量控制。这个时间量可以用空间距离(行距)表示,定义 DelayLines=︱Yrst-Yrd+︱。由于每一行的 RESET 和读取时间是固定的,所以 DelayLines 如果固定那么帧率也就固定了。将 DelayLines 转换成像素的有效积分时间(曝光时间),是将 Delay-Lines 乘以读取一行像素所用的时间。读取一行像素所用的时间由四部分组成:(1)行中有效像素的个数(由行的长度定义);(2)读取一个像素所用的时间;(3)像素累积电荷转换为数字量的时间;(4)选择新一行所用的时间。例如在主时钟频率为 12MHz 时,像素的输出频率为主时钟的二分频 6MHz,因此一行像素所需要的时间为 512×1/6MHz=85.3μs。再加上换行所需时间,一行像素的读取时间大约 90μs 左右。因此可以根据这个时间设置 DelayLines 来控制曝光时间。
3、Verilog HDL 驱动时序设计
经过以上分析可知,CMOS 图像敏感器采集时可以分为 RESET 过程和采集过程。时间上两个过程是独立的,如图 3。但在 FPGA 内部处理这两部分的电路物理上是同时存在,因此必须将相应的信号通过置标志位的方法置为有效或无效。
STAR250 所需数字驱动信号共 28 个,其中 SELECT 信号在正常使用时,直接接 PCB 板的 Vcc。因此需 FPGA 控制的驱动信号有 27 个。根据采集过程可以把信号划分为列放大器信号,包括 CAL、Reset、Lr、S、R、LdY。这 6 个信号在每一行的初始化部分都要用到,因此可以编写到一个模块(ColControl)中;模式信号(PaternCtrl)模块用来设置 CMOS 敏感器的工作模式及初始地址,包括 G0、G1、Bitlnvert 和 Addr[8:0]共 12 个信号。其中 G0、G1 用来设计输出的放大倍数,BitInvert 用于将输出取反,Addr[8:0]则设置采集的起始地址;行读出信号控制模块(YlCtrl)产生行读出地址的同步信号 SyncYl 及时钟驱动信号 ClkYl;行 RESET 信号控制模块(YrCtrl)产生行 RE-SET 地址的同步信号 SyncYr 及时钟驱动信号 ClkYr;像素控制模块(RowCtrl)产生行内像素初始地址的装载信号 LdX 及同步信号 SyncX;行内时钟信号模块(RowClk)产生列内像素的时钟驱动 CLKX、ADC 驱动时钟信号 CLkAdc 及输出三态控制信号 TriAdc。系统的输入信号为主时钟 CLK、EosX 行内像素结尾信号、EosYl 帧内行结尾信号、EosYr 帧内 RESET 行结尾信号、芯片的 RESET 信号。经过这样划分后的模块化 Verilog 程序就比较易写了。经过顶层模块综合生成的网表如图 4。布线仿真时序图如图 5,其中时钟信号过于密集变成黑色带状,同样输出时钟 CIkX 及 ClkAdc 也是黑色带状。在时序上 ClkX 与 ClkAdc 是反相关系,在 TriAdc 保持低电平时输出有效。所设计的驱动信号仿真波形与理论波形十分符合。这样就完成了 STAR250 的时序驱动电路设计。
使用 Verilog 语言设计时序逻辑具有很高的效率。结合 CMOS 敏感器特性可以方便地开发出驱动时序电路。但必须对 CMOS 图像敏感器的信号分析准确,正确分离那些独立的信号和共用的信号,用时序逻辑设计驱动信号,用组合逻辑实现不同采集过程时间上的分离。布线延迟是必须考虑的,采用流水线技术可以预测延迟,保证信号的正确性。虽然文中并未给出像素 ADC 输出的存储电路,但实际上直接使用 TriAdc 信号作为 SRAM 的片选,ClaAdc 的低电平作为写信号,SRAM 的地址在 ClkAdc 的上升沿增加、下降沿写入。这样就可以完成图像数据的存储。以上 Verilog 程序在 FLEXl0kl0 上布线实现。经示波器观察逻辑正确,CMOS 敏感器正常工作。
分享到:
猜你喜欢