微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > IBUFDS采集数据问题

IBUFDS采集数据问题

时间:10-02 整理:3721RD 点击:
最近调试AD芯片,数据是DDR模式,运用IBUFDS+IDDR进行采集,发现数据不对。     后对采集方法做出调整,只用IBUFDS对数据进行采集,将AD输出给FPGA的时钟用MMCM二倍频,然后对IBUFDS的输出进行chipscop采集,数据仍然不对;但是如果将IBUFDS的输出直接用寄存器赋值到FPGA的外部引脚,chipscop采集数据正确

数据通过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驱动的另一侧读出,这样完成时钟域转换。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top