lemonHe

主要关注FPGA信号处理和数字图像处理技术,欢迎交流 邮箱:heliminlemon@163.com

lvds在FPGA中的使用-板级调试【连载4】

1
阅读(4388)

这段时间弄毕业设计,没怎么写总结,看了看,有段时间没写博客了。趁着周末,写上一篇lvds调试文章,接着之前写的lvds连载系列,说说近期调试中遇到的一些问题。

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

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

image

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

image

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

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

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

imageimage

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

image

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

image

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};

image

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

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