IBUFDS采集数据问题
数据通过IBUFDS缓冲,经过idelay调整延时
时钟经过IBUFGDS缓冲,用PLL 或者 DCM 2倍频
用iserdes采样串行数据
谢谢,加ideleay确实是一种解决办法;只是现在不知道原因在哪,输入数据和时钟用示波器测了,是没有问题的,为什么IBUFDS和IDDR数据不对
1.你在哪里测量的时钟和数据的相位,发送端 or 接收端
2.测量点的不同会带来误差
3.示波器探头延时不同也会带来误差
4.时钟和数据到达 iddr 或者 iserdes 之前,在FPGA内的延时是不同的
因此,最好的方法是用idelay调节时钟或者数据的相位,找一个合适的中间值。
另外,我听说idelay有一种自动相位调整的技术,可以动态调节时钟和数据的位置,你可以参考一下
谢谢你的耐心回复,idelay确实有动态调整功能,满足不同情况的严实要求。这个我也没研究过,还得慢慢弄。只是现在IBUFDS输出的就有问题,不知道问题的根源;解决是一方面,但是希望找到问题,以后彻底解决。 我们的板子都是参考开发板做的,功能也是在开发板上验证过的,画板时差分线等长控制在150mil以内。
测量是在FPGA端测量的,也就是接收端,不同通道确实严实不一致,我们通过测量不同数据线和时钟,得到的大致结论,数据和时钟没有问题,当然不能说没有一点相移。至少在低频应该好用,现在不管时钟是多少IBUFDS输出都不对,时钟12.5M都不对。
现在不管时钟是多少IBUFDS输出都不对
我猜测,你通过IBUFDS将差分的数据变为单端的数据,然后引到一个测试脚上,再通过示波器测量的,对吗?
我们之前也这么测试,个人觉得这种方法是不对的。首先,ibufds可能只是把差分的信号转换为单端的信号,而输出的时候也没有用寄存器打拍,因此示波器测量到的信号质量很差。但这并不能说明差分信号的质量差。
用差分表笔测量在100欧姆的电阻上测量,这样才能判断差分信号的信号完整性。
提醒一点的是,FPGA中delay tap的分辨率是有限的,idelay对于低时钟是没有意义的;
个人建议最简单的方法是用idelay直接调时钟要简单一些,数据不动;
要不然数据、时钟都采用idelay+iserdes架构,更稳定
你说的不对或者出错形式是怎样的?
检查下PR后的pinloc.txt报告,是不是经过IFF了,也就是第一级寄存器锁在IOB上了?
如果对于IBUFGDS出来的BUFG时钟再来采数据产生的时延没信心的话,可以改用BUFR,这样都是经过bank出来的,delay都差不多,然后数据经过chipscope采一下看看结果如何。(检查下进来时钟管脚的属性,是GC,还是CC?)
在这里BUFR的驱动并不大,所以布线等是没有问题的,如果方法可行,将开始进来的数据经过BUFR输出后再输出到FIFO中,然后用BUFG驱动的另一侧读出,这样完成时钟域转换。
