084、Xilinx FPGA可编程ISP流水线设计——从MIPI输入到HDMI输出的低延迟架构与时序收敛去年做车载环视项目,客户要求从MIPI sensor到HDMI显示的端到端延迟必须压进12ms以内。当时用的平台是Xilinx ZU7EV,ISP逻辑全部自己写。第一版架构图看着挺漂亮,MIPI RX进来,经过RAW域处理、去马赛克、色彩校正、Gamma、缩放,最后走HDMI TX出去。结果上板一测,延迟直接飙到28ms。查了半天,问题出在帧缓冲上——中间插了两帧DDR缓存,一帧RAW一帧RGB,每帧都按1080p60算,光DDR读写就吃掉8ms多。后来把架构改成全流水的行缓冲方案,延迟才压到9ms左右。这里想说的核心是:FPGA做ISP,架构决策的第一优先级永远是数据流形态,不是算法精度。MIPI输入侧,CSI-2 RX IP核配置时有个容易忽略的点——LP/HS切换的时序裕量。很多工程师直接按手册推荐值配,但实际sensor输出波形受PCB走线和驱动能力影响,HS enter的T_hsen_prepare经常不够。我们当时用的SONY IMX390,在长走线场景下,默认配置会出现偶发性的帧头丢失。调试手段是抓MIPI协议分析仪,发现lane0的同步码偶尔被吞掉。解决办法不是去调sensor端,而是在FPGA内部加一个弹性缓冲,用sensor的byte clock写入,用RX IP恢复的pixel clock读出,深度设成16字节就够。别小看这个缓冲,它能把LP/HS切换抖动完全吸收掉,代价只是增加约1行延迟。RAW域处理这块,黑电平校正和坏点校正必须放在最前面,而且要用行流水方式实现。黑电平校正的减法操作,注意数据位宽——s