最近在用国产高云FPGA做MIPI CSI-2摄像头接口,D-PHY的LP和HS模式切换时经常报错,用示波器测眼图也不干净,上升沿有振铃。PCB上已经加了100欧差分端接,但感觉还是有问题。想问问大家,这种LP和HS切换不稳的情况,到底是PCB端接电阻没调好,还是FPGA内部IO delay约束没写对?有没有用国产FPGA调MIPI接口踩过坑的兄弟,求指点排查方向。
2026年了,FPGA工程师做MIPI CSI-2图像采集,D-PHY的LP和HS模式切换老是报错,眼图测试不过,是端接电阻还是时序约束的锅?
4 个回答

先别急着改时序约束,按我的经验,LP/HS切换报错加眼图振铃,八成是PCB端接位置和驱动强度的问题,而不是IO delay没写够。你虽然加了100欧差分端接,但高云FPGA的D-PHY硬核一般只负责LP和HS的协议层,物理层的阻抗匹配和摆幅还得靠外部电阻网络和IO配置一起凑。常见坑是:端接电阻放在了连接器端,但离FPGA引脚太远,反射路径太长;或者你用了100欧跨在差分对上,但没给LP模式用的共模偏置留路径,导致切换瞬间共模点漂移,示波器上就是上升沿振铃。建议先做三件事:一是用TDR或者至少拿网络分析仪看下实际阻抗,别信PCB厂家说的100欧,板材介电常数偏差很容易让实际只有85到90欧;二是查高云那个MIPI IP的例程里,HS_TX的驱动电流寄存器默认值是多少,国产FPGA很多默认是按低功耗设的,换到高速模式要手动调大,否则上升沿会软;三是把示波器探头换成差分探头,直接在FPGA引脚附近测,排除你测试点选得太远引入的寄生电感。时序约束这块,说实话LP和HS切换的setup/hold,FPGA工具一般会在IP内部帮你处理,你顶多约束一下byte clock和pixel clock的关系,真正容易出问题的是你跨时钟域取数时自己写的FIFO或同步器。如果这些都查完还不行,再回头怀疑IO delay,但记得用高云的在线逻辑分析仪抓LP到HS的切换码型,看是不是0101的进入序列被拉长了。你用的摄像头是哪个型号,输出分辨率多少?如果是4K以上还得考虑是不是byte clock频率太高把IO PLL的jitter放大了。

先量一下LP电平是不是0到1.2V干净切换,再看HS共模是不是200mV。振铃多半是端接位置离引脚太远,不是约束的锅。拿差分探头在FPGA焊盘上测一次,比改一百遍时序管用。

说个偏门但常见的坑:高云有些型号的D-PHY硬核,LP和HS切换需要你在顶层手动控制一个切换使能信号,不能全靠IP自动管理。我当初调的时候就是代码里没拉这个信号,导致HS进入序列发到一半被LP逻辑打断,示波器上看就是眼图中间突然塌一块。你查下IP例程里有没有类似mipi_tx_ready或者hs_enable这种端口,确认它在发帧前稳定拉高。另外端接电阻别只看阻值,还要看封装寄生电容,0603和0402在高频下差别挺大的,MIPI这种1Gbps级别的信号,建议用0402甚至更小的,位置越靠近FPGA引脚越好。先解决这两点,再回过去看时序约束,不然你约束写得再漂亮,物理层没建立起来也是白搭。你现在HS模式跑多少Mbps?如果低于800M,可能还涉及低功耗模式下的上拉电阻没配好,导致切换时电平回不到LP的1.2V。

先说结论:如果示波器上看到的是上升沿振铃,那大概率不是时序约束的问题,而是物理层阻抗不连续。时序约束管的是FPGA内部寄存器到IO buffer的延迟,它只能保证数据在正确的时间窗口被采样,管不了引脚外面的反射和振铃。你既然已经加了100欧差分端接,下一步不是去调IO delay,而是去确认这个端接的位置和参考平面。很多人犯的错是把端接电阻放在连接器那头,想着靠近摄像头端能吸收反射,但D-PHY的信号是双向的,从FPGA发出去的HS信号在到达端接电阻之前,会先经过一段阻抗不受控的走线,反射照样回来。正确做法是端接尽量靠近接收端,也就是靠近FPGA的引脚侧。另外,你量过实际阻抗吗?PCB厂家说的100欧很多时候是理论值,板材的介电常数、线宽蚀刻偏差都可能让实际只有85到90欧,尤其在1Gbps级别的信号下,10%的偏差就足以让眼图塌陷。建议先用TDR或者至少拿网络分析仪测一下那对差分线的实际阻抗,别信仿真报告。如果实测没问题,再去看IO Bank的电压域,高云的D-PHY硬核一般要求1.2V的MIPI电压域,如果你Bank电压配成1.8V或者3.3V,HS模式的共模电平会直接不对,LP切换时也会出现毛刺。最后一步才轮到时序约束,你可以查一下高云MIPI IP的例程里,LP到HS切换的setup/hold时间默认值是多少,一般来说IP会自动处理,但如果你手动改了PLL或者加了额外的逻辑,就可能破坏时序。按这个顺序排查,应该能定位到问题。你现在用的是高云哪个型号?不同系列对D-PHY硬核的支持和配置方式有点差别。
发表回答
登录后可在本页底部提交回答