058、Xilinx FPGA可编程ISP流水线设计:从MIPI接入到HDR融合的硬件逻辑划分与软硬件协同调优

📅 2026/8/15 17:19:42
058、Xilinx FPGA可编程ISP流水线设计:从MIPI接入到HDR融合的硬件逻辑划分与软硬件协同调优
058、Xilinx FPGA可编程ISP流水线设计:从MIPI接入到HDR融合的硬件逻辑划分与软硬件协同调优去年做一款工业线扫相机,Sensor用的是Sony IMX530,接口是MIPI CSI-2,4 lane,10bit RAW。客户要求动态范围120dB,还得在-20℃到70℃范围内保证色彩一致性。我们选了Xilinx Zynq UltraScale+ MPSoC,理由很简单——要跑复杂的HDR融合算法,还得同时控制电机和光源,纯ARM扛不住,纯PL又太死板。结果一上来就被MIPI的byte clock和像素时钟的相位关系坑了一整天,示波器上波形明明是对的,但采集出来的图像就是隔行错位。后来发现是MIPI D-PHY的LP(Low Power)和HS(High Speed)切换时序没处理好,导致lane的FIFO出现了半满状态下的数据错乱。这里踩过坑:Xilinx的MIPI CSI-2 RX Subsystem IP核,默认的lane rate配置是按Gbps算的,但IMX530的datasheet给的是Mbps,差一个数量级,IP核内部的分频参数全错,图像能出才怪。硬件逻辑划分这事,得从数据流的角度倒着推。MIPI接入之后,第一件事不是做ISP,而是把RAW数据从连续的bit流里“抠”出来。Xilinx的MIPI CSI-2 IP核输出的是AXI4-Stream接口,每个像素是32bit对齐的,但IMX530是10bit RAW,这就意味着每个像素的高6位是无效的。别急着做移位,先看看后续模块需要什么格式——如果直接做HDR融合,需要的是多帧对齐后的RAW,那这里就得保留原始位宽,只做位宽转换,不做格式转换。我们当时在PL里写了一个简单的位