4. 星载图像传感器接口与数据采集

星载图像处理流水线的第一道关口,是把探测器输出的模拟或低压差分信号,稳定、可校验地变成 FPGA 内部可用的像素数据流。这一步做不好,后面所有算法都建立在错误数据之上。本节围绕 CCD/CMOS 接口协议、LVDS/SerDes 串并转换、时序对齐、数据校验与坏点标记五个环节展开,重点说明工程上"怎么接、怎么对齐、怎么判断数据可信"。

一、CCD 与 CMOS 的接口差异

CCD 输出本质上是模拟电荷转移后的电压波形,通常需要外部 AFE(模拟前端)完成相关双采样(CDS)、增益调整和 ADC 量化,再以并行或 LVDS 形式送入 FPGA。其接口时序由垂直转移时钟、水平转移时钟和复位时钟共同决定,行有效、场有效信号往往由 AFE 或时序发生器给出。CMOS 图像传感器则把 ADC 集成在片内,直接输出数字像素,接口形态更接近标准数字总线:并行 DVP、LVDS、Sub-LVDS 或 MIPI 类高速串行。星载场景中,CMOS 因集成度高、功耗低、抗辐照设计成熟而被广泛采用,但 CCD 在部分高灵敏度、大动态范围任务中仍有位置。

无论哪种传感器,FPGA 侧要拿到的都是"行同步、场同步、像素时钟、像素数据"四要素。区别在于:CCD 链路中这四要素由 AFE 产生,FPGA 主要做接收和校验;CMOS 链路中,同步信号可能嵌入在串行数据里,需要 FPGA 从数据流中恢复。

二、LVDS 与 SerDes 的接收链路

高速 CMOS 常采用 LVDS 或 Sub-LVDS 差分对传输,每对线承载一路串行位流,多对线并行构成一个像素通道。FPGA 侧使用 ISERDES 或 SelectIO 的 SerDes 资源完成串并转换。典型配置是:差分对经 IBUFDS 进入 ISERDES,以 7:1 或 8:1 的串并比解出并行字,再由 Bitslip 调整字边界,最后由帧同步状态机识别同步码。

以某型 CMOS 为例,假设像素时钟 100 MHz,采用 7:1 SerDes,则串行位速率 700 Mbps,每对差分线每周期输出 7 bit。若一帧有效像素为 2048×2048、每像素 12 bit,则每行需要 2048×12/7 ≈ 3511 个串行字周期。工程上常用同步码字(如 0x1F7 或自定义 K 码)作为行起始标志,FPGA 检测到同步码后开始计数,计满一行像素数即认为行结束。

// 简化的 SerDes 接收与字对齐逻辑(示意)
always @(posedge clk_serdes) begin
    if (bitslip_en) begin
        // 调整字边界,直到同步码匹配
        if (deser_data == SYNC_CODE) begin
            bitslip_en <= 1'b0;
            word_locked <= 1'b1;
        end
    end
    if (word_locked) begin
        pixel_cnt <= pixel_cnt + 1;
        if (pixel_cnt == PIXELS_PER_LINE) begin
            line_end <= 1'b1;
            pixel_cnt <= 0;
        end
    end
end

三、时序对齐:从位对齐到帧对齐

时序对齐分三层:位对齐、字对齐、帧对齐。位对齐由 ISERDES 的采样相位决定,通常通过 IDELAY 或 MMCM 相位调整,使采样点落在数据眼图中心。字对齐由 Bitslip 完成,通过滑动串并边界,使同步码出现在固定位置。帧对齐则由状态机完成,识别行同步、场同步,建立像素坐标与物理位置的映射。

实际调试中,常用"眼图扫描"方法:固定数据模式,逐步调整 IDELAY 抽头,记录误码率最低的窗口。若窗口宽度小于 1/4 UI,说明链路裕量不足,需要检查差分对阻抗、走线长度匹配和终端电阻。星载环境下,温度变化会引起延迟漂移,因此 IDELAY 通常需要动态校准,或在设计中保留足够裕量。

星载图像传感器数据采集链路与对齐层次 CMOS/CCD 像素输出 AFE(CCD) CDS+ADC LVDS/Sub-LVDS 并行/LVDS IBUFDS + ISERDES 串并转换 7:1 IDELAY 相位调整 位对齐 Bitslip 字对齐 同步码检测 帧同步状态机 行/场对齐 CRC/校验 数据完整性 坏点标记 坐标+标志位 对齐层次: ① 位对齐(IDELAY) ② 字对齐(Bitslip) ③ 帧对齐(状态机) ④ 校验与坏点标记 判断依据:同步码匹配、误码率窗口、行计数一致性、CRC 通过率、坏点坐标表

四、数据校验:让错误可发现

星载链路受单粒子效应影响,数据位翻转不可避免。校验的目标不是"消除错误",而是"发现错误并标记"。常用手段有三类:一是同步码校验,每行起始的固定码字若匹配失败,说明字对齐丢失或链路误码;二是 CRC 校验,对每行或每帧像素数据计算 CRC,与传感器附加的校验字段比对;三是范围校验,像素值超出合理动态范围(如 12 bit 数据中连续出现 0xFFF)时标记为可疑。

工程上常采用"行级 CRC + 帧级计数"组合:每行末尾附加 16 bit CRC,FPGA 逐行计算并比对,错误行计入行错误计数器;帧结束时检查行错误计数是否超过阈值。若超过,则整帧标记为不可用,交由上层决定丢弃或降级使用。这种策略比逐像素纠错简单,且能覆盖大部分突发错误。

五、坏点标记:从检测到坐标输出

坏点分两类:静态坏点(暗电流异常、响应率异常)和动态坏点(受辐照后临时失效)。静态坏点可在发射前标定,形成坏点坐标表存入 FPGA 的 ROM;动态坏点则需在轨检测。常用检测方法是"邻域比较":当前像素与上下左右四个像素的均值比较,若偏差超过阈值(如 30%),则标记为可疑坏点。

标记结果通常以"坐标 + 标志位"形式输出,与像素数据同步写入帧缓存。后续处理模块可根据标志位决定是否用邻域均值替代该像素。坏点表需要定期更新,避免把真实目标边缘误判为坏点。实际设计中,阈值和邻域窗口大小需要根据传感器噪声水平和目标特性折中:阈值过小会误标,过大则漏标。

调试建议:先用固定灰度图或均匀光照场景验证链路,观察 CRC 错误率和坏点标记数量是否稳定;再切换到真实场景,确认标记不会随目标移动而剧烈变化。

六、一个可参考的采集参数配置示例

参数示例值说明
像素时钟100 MHzSerDes 参考时钟
串并比7:1每对差分线每周期 7 bit
同步码0x1F7行起始标志,需与传感器配置一致
行像素数2048有效像素,不含消隐
像素位宽12 bitADC 输出位宽
CRC 位宽16 bit行级校验
坏点阈值30%与四邻域均值比较

以上参数需根据具体传感器手册和 FPGA 器件手册调整。关键原则是:先保证位对齐和字对齐稳定,再建立帧同步,最后叠加校验和坏点标记。每一层都应有独立的锁定指示和错误计数,便于在轨诊断时快速定位问题环节。