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.

[参考译文] ADC3662EVM:LVDS 问题

Guru**** 2756805 points

Other Parts Discussed in Thread: ADC3662EVM, ADC3662

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1605971/adc3662evm-lvds-issue

器件型号: ADC3662EVM
主题中讨论的其他器件: ADC3662

您好专家、

我有 TrenzElectronic TEBF0818 的 FPGA 主板、组装 TE813 FPGA 核心板、连接到 TI ADC3662EVM 模块版本 E(1 线 10MSPS 模式、所有 LVDS 在 FPGA I/O 单元内均由 100 Ω 电阻端接)、按照以下步骤进行修改:

  1. 拆下 R46(0 Ω)和 R47(0 Ω)。 这会将来自 J9 的差分时钟信号从 CLK_P 和 CLK_N 上断开  

  1. 安装 R39(0 欧姆)。 这会将 FPGA_CLK 与 CLK_P 连接  

  1. 卸下 R45(49.9 欧姆)和 R48(49.9 欧姆)。 这将移除差分时钟终端  

  1. 安装 R44(49.9 欧姆)。 FPGA_CLK 单端时钟终端  

  1. 安装 R52(0 欧姆)。 FPGA_CLK 单端时钟终端  

  1. 卸下 R150(0 欧姆)并安装 R151(0 欧姆)。 这是为了与 FPGA IO 电压保持一致  

  1. 卸下 R139(0 欧姆)并安装 R133(0 欧姆)。 这将断开来自 FTDI 芯片的 SCLK 信号、并连接来自 FPGA 的 SCLK_FPGA 信号。  

  1. 卸下 R140(0 欧姆)并安装 R134(0 欧姆)。 这将断开来自 FTDI 芯片的 SEN 信号、并连接来自 FPGA 的 SEN_FPGA 信号。  

  1. 卸下 R141(0 欧姆)并安装 R135(0 欧姆)。 这将断开来自 FTDI 芯片的 SDIO_OE 信号、并连接来自 FPGA 的 SDIO_OE_FPGA 信号。  

  1. 卸下 R142(0 欧姆)并安装 R136(0 欧姆)。 这将断开来自 FTDI 芯片的 SDIO_I 信号、并连接来自 FPGA 的 SDIO_I_FPGA 信号。  

  1. 卸下 R144(0 欧姆)并安装 R137(0 欧姆)。 这将断开来自 FTDI 芯片的 SDIO_O 信号、并连接来自 FPGA 的 SDIO_O_FPGA 信号。  

  1. 卸下 R156(0 欧姆)、安装 R165(0 欧姆)、安装 R166(0 欧姆)。 这将断开来自 FTDI 芯片的 SCL_I2C 信号、并连接来自 FPGA 的 SCL_I2C_FPGA 信号。  

  1. 卸下 R157(0 欧姆)并安装 R167(0 欧姆)。 这将断开来自 FTDI 芯片的 SDA_OUT_I2C 信号、并连接来自 FPGA 的 SDA_OUT_I2C_FPGA 信号。  

  1. 卸下 R161(0 欧姆)并安装 R168(0 欧姆)。 这将断开来自 FTDI 芯片的 SDA_IN_I2C 信号、并连接来自 FPGA 的 SDA_IN_I2C_FPGA 信号。  

  1. 卸下 R53(0 欧姆)并安装 R50(0 欧姆)。 这会将 DCLKIN 差分信号连接到 DCLKIN_FPGA 差分信号、而不会连接到 DCLKIN_SMA 差分信号。  

  1. 移除 SMA 连接器 J4 和 J6。 这些连接器与 Zynq UltraScale+评估板中的 SFP 笼发生冲突。 它们为 ADC 通道 B 的输入信号提供差分模拟接口、该接口在测试期间不会使用。  

  1. 卸下组件 U18 (LSF0204RUTR) 并按如下所述连接其引脚:  

  1. 引脚 7 (B4)->引脚 5 (A4)   

  1. 引脚 8 (B4)->引脚 4 (A4)   

  1. 引脚 9 (B4)->引脚 3 (A4)  

  1. 未安装元件 U19A (SN74LVC1G125DCKT)

这是与 FPGA 的 ADC3662 进行通信所必需的吗? 但我无法从寄存器 0x20、0x21 和 0x22 读取非零默认值。 我使用定制的串行 FPGA 驱动程序进行通信。 我能够从 0x00、0x07、...0x34 写入寄存器、之后从寄存器读取所有正确的值。 我认为串行驱动器运行正确。 但复位后、我无法读取 0x20、0x21 和 0x22 的默认非零值 — 始终读取零。

此外、我生成的 DCLKIN = 80MHz 为 LVDS 1、8V、CLK = 10MHz 1、8V 单端。 两个时钟都是从一个 PLL 生成的=相位对齐。 但有时我会观察到从 FPGA 返回的 DCLK 缺少周期、FCLK 在预期上升/下降沿之前和之后出现振荡。 我只看到一次 FCLK 没有这些伪影、但在断电和上电后、它再次进入问题状态。  

我只看到这一次 (DCLK=DCLK、100MHz、CLK=CLK 10MHz)-断电->上电后、我再次看到类似于下一个打印屏幕 100MHz、其中 DCLK=CLK、10MHz。

我还看到、在硬件和串行配置设置相同的情况下、波形在断电和上电后会发生变化。

我在没有任何初始化到 1 线 16 位和初始化但结果相似的情况下尝试了该方法。 波形似乎仍然很糟糕。

这是我尝试过的设置:

Write_ADC_register(0x00, 0x01);
    Delay(100000000);


    Read_ADC_register(0x20);
    Read_ADC_register(0x21);
    Read_ADC_register(0x22);
   
    Write_ADC_register(0x07, 0x6C);
    Write_ADC_register(0x13, 0x01); // E-Fuse load
    Delay(100000000);
    Write_ADC_register(0x13, 0x00);
    Write_ADC_register(0x19, 0x00); // FCLK config
   
    Write_ADC_register(0x1B, 0x88); // Set resolution


    Write_ADC_register(0x20, 0x00); // FCLK pattern
    Write_ADC_register(0x21, 0xF0); // FCLK pattern
    Write_ADC_register(0x22, 0x0F); // FCLK pattern


   
    //Write_ADC_register(0x08, 0x00);
    //Write_ADC_register(0x09, 0x0B); // Disable DA1/DB0/DB1
    //Write_ADC_register(0x09, 0x00); // Enable all Data lanes
    //Write_ADC_register(0x09, 0x30); // Disable DCLK, FCLK
    //Write_ADC_register(0x19, 0x10);
    Write_ADC_register(0x24, 0x00);
    Write_ADC_register(0x25, 0x00);
    Write_ADC_register(0x08, 0x02); // Disable B channel
    Write_ADC_register(0x09, 0x0B); // Disable DA1, DB0, DB1

黄色-> FCLK_P、绿色 FCLK_N、粉色->差分 FCLK_P-FCLK_N

scope_11.jpg

黄色-> DCLK_P=CLK、绿色 80MHz(单端)= 10MHz

scope_7.jpg

当 DCLK = 80MHz、CLK = 10MHz 时、出现奇怪的 FCLK_P/N 行为

scope_4.jpg

scope_13.jpg

此致、

Petr Burda.

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

    附加信息:

    今天、我使用寄存器 0x0E 和 REFBUF 引脚进行了一些实验。

    1.在上电之前、我放置跳线 J13 REFBUF=AVDD

    2.然后上电并设置寄存器->信号更好但仍然不正常

    3.我将跳线 J13 从 REFBUF=AVDD 切换到 REFBUF=GND 、波形开始看起来正常。

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

    我为所有三种情况(第一个 FCLK、第二个 DCLK、第三个 DA0)附加 3x3 图像

    1) REFBUF=AVDD

    2) 寄存器设置后

    3) 在 REFBUF 从 AVDD 切换到 GND 之后

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

    尊敬的 Renan:

    您能给我们发送您正在使用的 EVM 版本吗?

    另外、您能给我们发送 EVM 图片吗?

    接下来、请将您的测试设置的详细方框图发送给我们。

    所有这些信息将帮助我们更好地了解对 ADC3662EVM 执行的所有修改。

    此致、

    Rob

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

    您好 Rob、

    这是连接到 TrenzElektronik FPGA 板的 ADC3662EVM 修订版 E 板:

    对上述 ADC3662EVM 的修改。

    FPGA_CLK(采样时钟 10MHz) 和)和 DCLKIN_FPGA (80MHz) 由一个 PLL 生成=锁相(但我注意到,ADC3662EVM 上 DCLKIN_FPGA 时钟的 P 和 N 会交换->反相)

    ADC3662EVM 通过 FMC 与 FPGA(1、8V Vcco 组)之间的连接、ADC3662EVM 使用 5V 外部电源:

    高速接口:

    输出 FCLK_P/N (FMC E2/3) 连接到 FPGA 输入、作为 SUB_LVDS 进行差分连接

    输出 DCLK_P/N (FMC F4/5) 作为 SUB_LVDS 以差分方式连接到 FPGA 输入

    输出 DA0_P/N (FMC E12/13) 以差分方式连接到 FPGA 输入、作为 SUB_LVDS

    输入 DCLKIN_FPGA_N/P (FMC K16/17) 以差分方式连接到 FPGA 输出作为 SUB_LVDS(我注意到,ADC3662EVM 板上的 P 和 N 交换 、根据 FMC 标准连接到 K16 正信号 HA17_P_CC、在 K17 负信号 HA17_N_CC 上 — 是否正确,或者是否应该通过 180°反转/移位相位来消除 FPGA 中的这种情况?)

    输入 FPGA_CLK (FMC H4) 连接到 FPGA 输出单端 LVCMOS18

    串行配置接口:

    输入(硬件修改:安装 R133、卸载 R139 和 U19)SEN_FPGA (FMC G28) 连接到 FPGA 输出单端 MOSLVC18

    输入(硬件修改:安装 R134、卸载 R140) SCLK_FPGA (FMC G27) 连接到 FPGA 输出单端 LVCMOS18

    BIDIR(我们修改了硬件:安装 R137、卸载 R144 和 U18、通过导线 7 <->5、8<->4 和 9<->3 连接 U18 的 PCB 焊盘)SDIO_O_FPGA (FMC G30)、连接到 FPGA BIDIR 单端 MOSLVC18

    此外、我尝试以 10MSPS 的速度切换到 2 线-> FPGA_CLK=DCLKIN 10MHz 和 DCLKIN FPGA = 40MHz。 它使用前面所述的交换 REFBUF、当我触摸探头的模拟输入 A 时、我可以看到 DA0 和 DA1 上的变化。 在这些寄存器中、我仅将 0x07=0x6C 更改为 0x07=0x4B、将 0x19=0x00 更改为 0x19=0x10。

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

    嗨、Petr、

    这里有大量的信息、您对 EVM 进行了大量修改、并尝试同时测试许多内容。 将来、我建议先使用 ADC EVM 和 TI 提供的 FPGA 采集卡来评估 ADC、然后再迁移到您自己的 FPGA 解决方案。 此一步一步的过程有助于 在遇到问题时缩小故障点的范围。 现在、您已经在系统中引入了许多故障点、缩小问题的原因范围是非常令人困惑的。

    让我澄清几个困惑点:

    1. 寄存器 0x20、0x21 和 0x22 默认为 0。 这是数据表中的一个错误。 如果您想回读寄存器、请回读寄存器 0x10E。 这是 DEVICE_ID 寄存器、您应该看到它为 ADC3662 返回值 0x09。
    2. 不应更改 DCLK。 对于 1 线 DDC 旁路、16 位、10MSPS 模式、80MHz 的 DCLK。
    3. 采样时钟必须执行任何 SPI 操作。 因此、如果使用单端采样时钟、则需要确保根据下表将 REFBUF 引脚拉至 GND:

          

    在这里,我建议如下:

    1. 使用随附的 ADC3662EVM Reve 原理图 (e2e.ti.com/.../ADC3x6xEVM_5F00_RevE_5F00_SCH.PDF) 标记您所做的更改、以便我们可以查看。
    2. 为我们提供一种您希望使用的特定 ADC 模式(线数,抽取模式,分辨率,采样率等)、并提供您用于对 ADC 进行编程的寄存器配置。
    3. 询问您在上述模式下遇到的问题、并询问任何必要的问题。

    非常感谢您为我们提供了大量详细信息、但是如果您能通过将您的想法整理到上述 3 个项目中来帮助我们、我们将能够更好地帮助您解决您的问题。

    此致、

    Luke Allen

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

    您好 Luke、

    我尝试读取 0x10E、它返回 0x00 — 数据表中未提及寄存器 0x10E、寄存器空间中的最后一个寄存器是 0x92。

    我随附 FPGA 板和 ADC3662EVM 之间连接的硬件变化:
    绿色=已安装的器件、红色=未安装的器件

    此外、由于 SFP 笼具有机械连接、我们必须移除 J4 和 J6。

    我想使用 ADC 使用单线 LVDS@16 位 10MSPS((10MHz 采样时钟 CLK 和<xmt-block1> 80MHz</xmt-block> DCLKIN LVDS 时钟)、 80MHz、无任何 DSP 抽取、复杂格式等的模拟输入通道 A 进行测量

    寄存器设置如下:


    READ_ADC_REGISTER (0x10E);//读取 ID
    WRITE_ADC_REGISTER (0x00、0x01);
    延迟 (1000000);

    WRITE_ADC_REGISTER (0x07、0x6C);
    WRITE_ADC_REGISTER (0x13、0x01);//电子保险丝加载
    延迟 (1000000);
    WRITE_ADC_REGISTER (0x13、0x00);
    WRITE_ADC_REGISTER (0x0E、0x0B);


    WRITE_ADC_REGISTER (0x19、0x00);// FCLK 配置
    WRITE_ADC_REGISTER (0x1B、0x88);//设置分辨率
    //Write_ADC_REGISTER (0x20、0x00);// FCLK 模式
    // Write_ADC_REGISTER (0x21、0x0F);// FCLK 模式
    // Write_ADC_REGISTER (0x22、0x0F);// FCLK 模式


    WRITE_ADC_REGISTER (0x24、0x04);
    WRITE_ADC_REGISTER (0x25、0x00);

    使用此设置时、FCLK 信号很差(预期上升/下降沿之前和之后出现振荡)、DA0_P/N 处于高阻态

    当我开始使用 REFBUF (REFBUF=AVDD ->寄存器 INIT -> REFBUF=GND) 时、它开始处理 DA0 通道上的数据。

    编辑:

    我使用第一块电路板进行了一些实验:CLK=CLK->10MSPS 10MHz、40MHz、双线制接口和 16 位。 我开始在没有任何切换到 AVDD 的情况下使用 REFBUF=GND 进行实验。

    上电后、我发现一切都正常(第一张图片)、直到我写入 0x0E=0x0B。 写入后、FCLK 似乎已损坏(第二张图片)。

    黄色=写入之前和之后的 FCLK_P

    绿色=未使用

     

    我成功地将接口模式更改为 10MSPS@位、2 线 (CLK=DCLK、DCLKIN 5MHz = 40MHz)-> FCLK=DCLK、40MHz 并收集以下预期波形 (FCLK、10MHz、DA0 和最后一张 DA1):

    黄色= LVDS 对的正极

    绿色= LVDS 对的负极

    粉色= P–N

     

    我使用这个寄存器进行了一些实验、并设置 REFBUF=GND:

    0x0E=0x09     工作原理

    0x0E=0x0B     不起作用

    0x0E=0x0D     工作原理

    此致、

    佩特尔

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

    嗨、Petr、

    您是对的、我们并未 特意在数据表中包含寄存器 0x10E。 如果您无法在器件上电并进行时钟控制时从寄存器 0x10E 读回值、那么这表明 SPI 回读存在问题。

    您的寄存器配置看起来没有问题。 1 线、16 位、旁路、10MSPS 所需的唯一寄存器绞线如下:

    写入 (0x0、0x1)
    写入 (0x7、0x6c)
    写入 (0x13、0x1)
    写入 (0x1b、0x88)

    默认情况下、其余寄存器为 0x00、不需要写入。

    当将 REFBUF 连接到 GND 并将寄存器 0x0E 写入 0x09 或 0x0D 时、您是否说能够获得正确的 FCLK?

    此致、

    Luke Allen

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

    您好 Luke、

    我设置寄存器 0x0E=0x09、并启用斜坡发生器、使其递增 16。 现在它似乎起作用了。 以下是寄存器设置:

      WRITE_ADC_REGISTER (0x000x01);
      延迟 (1000000);   
      WRITE_ADC_REGISTER (0x070x6C);
      WRITE_ADC_REGISTER (0x130x01);//电子保险丝加载
      延迟 (1000000)
      WRITE_ADC_REGISTER (0x130x00);
      WRITE_ADC_REGISTER (0x0E0x09);
      WRITE_ADC_REGISTER (0x190x00);// FCLK 配置
      WRITE_ADC_REGISTER (0x1B0x88);//设置分辨率
      WRITE_ADC_REGISTER (0x240x00);
      WRITE_ADC_REGISTER (0x250x00);
      WRITE_ADC_REGISTER (0x140x40);  //递增 16
      WRITE_ADC_REGISTER (0x150x00);
      WRITE_ADC_REGISTER (0x160x08); //测试图形发生器 A
      //Write_ADC_REGISTER (0x16、0x00);  //通道 A 输出

    放大 FCLK、DCLK、DA0、DA0(斜坡结束 — 从~65535 (65520) 转换-> 0)

    这是采样并正确位对齐的数据。 每 4096 个样本(红圈) 的值出现短暂跳变后、这是由 FPGA 中的内部采样逻辑(写入使能信号)引起的。 因此、这不是错误。

    此致、

    佩特尔

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

    嗨、Petr、

    这很有趣、因为只要 REFBUF 拉至 GND、就不必对寄存器 0x0E 进行编程。 感谢您的评分、我将对此进行研究。

    尽管如此、我很高兴您现在有了可行的解决方案。 如果您有任何其他问题、敬请告知。

    此致、

    Luke Allen