大家好,我遇到一个问题: ads62p49输出ramp型测试码,但是FPGA无法准确可靠地接收到该测试码。
FPGA用的是Xilinx 的Kintex7, FPGA的数据捕获时钟是245MHz; ads62p49的采样时钟也是245MHz。 两者都来自cdce72010时钟芯片。
ADC配置成DDR模式,7对差分信号到达FPGA管脚后依次经过了 IBUFDS、IDelay2、 Iserdes模块,转换为SDR信号。
现在的问题是,让ADC输出测试码,通过调节IDelay2的延时,恢复出的SDR信号与测试码也是一致的,但偶尔会出现误码!
这是我在逻辑分析中观察到其中一个的误码情况:
恢复出的SDR信号:0 1 2 3… 16383, 0 1 2 3 … 16383, 0 1 2 3… 16383, 0 1 2 3…4095 4264 4097 ..
也就是说,FPGA在连续接收到3*16384 + 4095个正确码的情况下,突然接收到了一个错误码4264(理论值应该是4096)。
进一步分析一下这个错误码产生的原因:
也就是说chb[1] chb[2] chb[3] 这3个数据通道上的数据传输发生了错误。以chb[1]来看, 正确的序列应该是 11110000, 而FPGA接收到的序列却变成了11110100。 个人认为引起错误的原因可能有2个:
1) ADC芯片产生的ramp测试码出错了;
2) FPGA内部的时钟jitter或者skew导致的;
如果是原因2),那么接收到的序列应该是 11111000才对,而不该是11110100。
那么貌似只剩下原因1)了,难道ADC的测试码会有误码吗?
被这个问题卡了好几天了,请大家帮忙看看吧,多谢!
user151383853:
能否先测试一下通信波形, 这么高的频率信号, 传输比较容易失真变形导致错误。
liu meiyan:
回复 user151383853:
谢谢!
您的意思是用示波器看看ADC的信号吗?
示波器引出两根探针,分别接到chb[i]_p和chb[i]_n上面,然后示波器内阻设置成50欧姆,查看示波器的信号。 请问是这样操作吗?