Lattice FPGA MIPI调试总结
本文将简要地介绍基于Lattice FPGA(XO2/XO3/ECP3/ECP5/CrossLink)器件的,MIPI CSI/DSI调试心得。如有不足,请指正。
第一步、确认硬件设计、接口连接
可以使用示波器测量相关器件的MIPI输出信号(可分别在靠近输出端和靠近接收期间接收端测量,进而分析信号传输问题),来确认信号连接是否正常;
如信号质量较差(衰减严重、反射现象等等),请先检查器件焊接是否牢靠,传输线上阻抗是否匹配等;
如果信号一切正常,但是仍然无法找到SoT(B8),请确认差分线PN是否接反了;
注:Lattice FPGA暂时未支持NP翻转功能,不能通过软件设置,实现类似SerDes支持的PN翻转功能。针对非CrossLink器件,请检查电路连接是否正确。具体请参考本文附件,以及Lattice各个器件的相关手册;
如果是MIPI N进1出的设计(N合一),建议各个输入器件采用用一个时钟发生器(晶振),即同源。同时FPGA MIPI Tx所需要的时钟源,最好也与其同源。如果不同源,建议Tx的时钟要略高于Rx的时钟(如Pixel Clock);
如果条件允许,可以通过示波器分析眼图,以获得更多的信号完整性信息。
第二步、关于非CrossLink器件的LP信号处理问题
非CrossLink器件,请参考FPGA-UG-02041文档,或者各个器件的相关文档设计MIPI Rx/Tx接口;
一般情况下,建议Clock和Data Lane上的LP引脚都连接,如果条件不允许连接,请参阅本文附件;
部分MIPI Rx器件,需要Clock Lane上的LP到HS的切换操作来使能相关电阻,进而“打开”MIPI Rx“开关”。即使用户使用的是连续时钟模式(Continuous Mode),这个切换操作任然是必要的。如果条件不允许连接,建议由Tx器件,模拟这一切换操作;
第三步、MIPI Rx相关问题
调试过程中,首先确保SoT(B8)可以找到,然后考虑字节对齐(Word Align)。如果多于一个Data Lane,还需要考虑Lane Align。
一定要确定Tx器件的时钟是否是连续的,只有连续的时钟才可以作为FPGA内部Tx的时钟源;
如果两边时钟不同源,或者Tx的字节时钟比Rx的字节时钟慢,一定要处理好FIFO的深度和读写等问题。
第四步、MIPI Tx相关问题
确保FPGA Tx的MIPI时序符合Spec的要求,设计者可以通过示波器以及Diamond Reveal工具分析这些时序数据;
MIPI时序中的TRAIL很重要,不能发完有效数据后,立即进入LP状态;
使用FPGA DSI Tx直接点屏时,建议先由FPGA自身产生ColorBar。先搞定在LP状态下发送的初始化命令,然后在处理HS状态下的命令传输。
补充信息、关于高通平台FPGA Tx,AP Rx的建议(MIPI CSI)
如果AP报UNBOUNDED_FRAME错误,建议检查帧短包(尤其是帧结束短包)是否正常发送;
如果AP报vERROR_ECC & ERROR_CRC错误,建议检查SoT之前是否有非零数据,并检查包尾之后是否有非1数据,具体请参考下图;
如果AP报vLane x over flow错误,请检查包的长度是否正确,且CRC的值是否正确;
强烈建议在调试初期,暂时关闭AP的CRC校验功能。
主要参考资料
MIPI CSI-2/DSI/DPHY Spec
Lattice XO2/XO3/ECP3/ECP5/CrossLink FPGA Datasheet
MIPI Debugging Summary_v0.3.pdf