This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADC09QJ1300:链路不稳定问题

Guru**** 2387470 points
Other Parts Discussed in Thread: ADC09QJ1300
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1297653/adc09qj1300-unstable-link-issues

器件型号:ADC09QJ1300

大家好、

下面是我们的一位客户遇到的问题、您能 提供一些故障排除建议吗?

我正在调试 ADC09QJ1300、发现 链路不稳定、AD 配置的采样率为600M、4通道模式、7.425G 通道速率、将 prbs31发送到 FPGA、FPGA 的 ibert 检测信号错误率和眼图。

1.硬件连接

AD9517时钟芯片产生两个150MHz 时钟、LVPECL 电平、一个时钟用于 ADC clk+/-、 另一个 时钟 用于 MGTHREFCLK+/-、用于 FPGA -zu4ev。 AD 的 D0+/-~D3+/-总共有4个差分对连接到 FPGA 的第 g 端口 Rx。

2. AD 配置

AD 输入时钟150MHz、为生成600MHz 采样时钟而传递的 cpll。 JESD 配置为 JMODE8模式、66/64b 编码、4通道输出、线路速率600MHz X12位 X 66/64=7.425Gbps、发送 prbs31、配置寄存器如下所示

send_buf[0]=0x00;
send_buf[1]=0x00;
send_buf[2]=0xb0;//μ 复位
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

while (recv_buf[2]!=0x01)
{
send_buf[0]=0x82;
send_buf[1]=0x70;
send_buf[2]=0x00;//μ 等待初始化完成
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x58;
send_buf[2]=0x81;//μ spi控制,PLL使能
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x02;
send_buf[1]=0x00;
send_buf[2]=0x00;//μ 先关闭JESD
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x61;
send_buf[2]= 0x00;//CAL_n ü EN关闭
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x02;
send_buf[1]=0x01;
send_buf[2]= 0x08;//配置JMODE 8
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x29;
send_buf[2]=0xb6;//μ 开启sys ref
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x29;
send_buf[2]= 0xF6;//开启sys _ref 配置sysfre _window
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x2a;
send_buf[2]=0x00;//μ 配置LVPECL
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x30;
send_buf[2]=0x00;//μ 配置模拟信号Vpp采样最大值
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x31;
send_buf[2]=0xA0;//μ 配置模拟信号Vpp采样最大值
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x5c;
SEND_buf[2]= 0x01;//CPLL_RESET
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);


send_buf[0]=0x00;
send_buf[1]=0x3f;
send_buf[2]= 0x4a;// CPLL_VCOCTRL1
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x3D;
SEND_buf[2]= 0x0a;//0x06;//CPLL_FBIV1
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x3e;
SEND_buf[2]= 0x04;//0x08;//CPLL_FBIV2
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x5d;
SEND_buf[2]= 0x41;//VCO_CAL_CTRL
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x5c;
SEND_buf[2]= 0x00;//CPLL_RESET 释放
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x48;
send_buf[2]=0x08;//μ 预加重
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x02;
send_buf[1]=0x02;
SEND_buf[2]= 0xff;//KM1寄存器
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);


send_buf[0]=0x02;
send_buf[1]=0x05;
send_buf[2]=0x0E;//μ 测试模式选择 发送prbs31
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x61;
send_buf[2]=0x01;//CAL_EN
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x02;
send_buf[1]=0x00;
send_buf[2]=0x01;//μ 打开JESD
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x6c;
send_buf[2]= 0x00;//打开CAL SOFT_TRIG
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

send_buf[0]=0x00;
send_buf[1]=0x6c;
send_buf[2]= 0x01;//打开CAL SOFT_TRIG
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);

U8结果;
u32 addr=0x10000;
u32 power_data;
u32 rd_data;

while (1)
{
send_buf[0]=0x82;
send_buf[1]=0x08;
send_buf[2]= 0x00;//
x4551 Ps_Polled (SpiInstancePtr,send_buf,recv_buf,3);
usleep(5000);
result=recv_buf[2];
if (((result & 0x44)!= 0x44)//μ 判断link up是否成功
{
I=0;
while (I=0);

FPGA 配置

IBERT 具有150MHz 输入时钟、4通道 Rx、设置7.425G 的线路速率以查看 AD 和 FPGA 之间的通信质量。

4. 这一现象如下:

不稳定的 链路构建。 通过读取 AD 的0x208寄存器、LINK_UP 和 SPLL_LOCK 位不稳定 、有时为1、有时为0。 上述现象的原因可能是什么?  感谢您提出任何故障排除意见。

此致、

艾米

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Amy、

    不稳定链路可能是由输入时钟不稳定引起的、客户是否能够使用示波器验证 ADC 的输入时钟并确保信号看起来很干净。 您还能说明 SPI 写入是什么吗?send_buf 数组的每个索引表示什么?

    谢谢。

    埃里克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Eric、

    感谢您的深入了解。  请查看以下反馈。

    SPI 写入 ADC09QJ1300寄存器。

    send_buf[0]和 send_buf[1]是寄存器的地址,send_buf[2]是寄存器的值,send_buf[0]的最高位对于写寄存器为0,对于读寄存器为1。

    示波器测量了 ADC 的输入时钟、在150m 处保持稳定、并且还读取锁定的 CPP_LOCK 状态。

    此致、

    艾米

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    抱歉、这里有任何更新?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Amy、

    我还在研究这个问题、您能在周三之前给我提供更新吗?

    谢谢。

    埃里克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Eric、

    没问题 。  如果您需要任何进一步的信息、请告诉我。

    此致、

    艾米

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Amy、

    我还在为你调试这个问题,如果你能给我一个星期结束,再给你一个答案,将不胜感激。

    此致!

    埃里克  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、没问题。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Eric、

    我能知道发生了什么吗?  

    谢谢。

    艾米

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Amy、

    很抱歉我处理此问题的响应延迟。 我认为这个问题可能与 sysref 重新定时时钟有关。 建议您的客户关闭 sysref 接收器并进行处理、然后查看问题是否仍然存在。

    谢谢。

    埃里克·克莱克纳

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Eric、

    以下是我从客户那里收到的信息:

    我已经尝试关闭 sys_ref, 寄存器0x29的值为0x80、默认值、但问题仍然存在、s_PLL 锁定状态始终丢失、有时已锁定。

    此致、

    艾米

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Amy、

    您能否分享一下与 ADC 的时钟连接的原理图和布局? 我认为这可能是问题所在。

    此致!

    埃里克