lvds在FPGA中的使用4 - 板级调试

趁着周末,写上一篇lvds调试文章,接着之前写的lvds连载系列,说说近期调试中遇到的一些问题。

电路板加工焊接回来后,先检查焊接、测试电源,FPGA程序下载及固化,各种调试。

好了,进入正是,说说lvds调试。如下图,采用软硬结合板设计,左侧为FPGA主板部分,右侧主要是一些接口,包括Camlink、VGA,中间采用柔性电路板相连。

lvds在FPGA中的使用4 - 板级调试_第1张图片

首先,按照连载3的程序调试lvds接口,使用bank5的差分管脚输出lvds信号,结果采集卡采不到图,这下坏了,最开始怀疑引脚分配不正确,一番检查,问题不在这;

lvds在FPGA中的使用4 - 板级调试_第2张图片

接着觉得走线可能不对,看了看PCB,5对差分信号,对内线长差控制在0.254mm内,对间线长差控制在2mm内,走线没有问题;

再接下来,怀疑Camlink位分配不正确,Camlink在base模式下包含11对差分线(4对数据,1对时钟,2对串口,4对相机控制),Camlink协议中有详细的位分配表,

lvds在FPGA中的使用4 - 板级调试_第3张图片lvds在FPGA中的使用4 - 板级调试_第4张图片

下表说明了在base模式下,各种图像模式(24bit RGB、8bit、10bit、14bit、16bit灰度等)下位分配情况。

lvds在FPGA中的使用4 - 板级调试_第5张图片

然后查看287手册,就可得到位分配信息。

lvds在FPGA中的使用4 - 板级调试_第6张图片

又是一番检查,位分配完全正确。

                datain3    <=    {spare,        1'b0,    1'b0,    1'b0,    1'b0,    tx_data[7:7],    tx_data[6:6]};

                datain2    <=    {dval ,        fval,    lval,    1'b0,    1'b0,    1'b0,    1'b0};

                datain1    <=    {1'b0 ,        1'b0,    tx_data[13:9]};

                datain0    <=    {tx_data[8:8] ,     tx_data[5:0]};

经过同学的点拨,发现了问题,原来在于时钟的串行化问题,我使用的是lvds_tx核的tx_outclock作为差分时钟,而287的手册上7倍时钟串化对应的时钟信号分别为1,1,0,0,0,1,1,问题已经比较明白了,clk差分通道数据如下,使用5个channels,如下图所示。

cl_clk <=     {1'b1,1'b1,1'b0,1'b0,1'b0,1'b1,1'b1};

lvds在FPGA中的使用4 - 板级调试_第7张图片

重新编译,下载,图像输出正常,lvds调试完成!!

由于lvds_tx核使用了一个ip核,逻辑中使用一个,qsys中使用一个,这样总共4个ip核就用了3个,所以相关使用外用pll,结果出来的数据又不对了,至今没有解决这个问题,后面有进展了再行总结吧。

你可能感兴趣的:(LVDS)