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.

[参考译文] ADS8681:对于源同步内部时钟、我可以获得多少个 SDO 位?

Guru**** 2845830 points

Other Parts Discussed in Thread: ADS8681, ISOW6441, ADS8681W, ISO7640FM

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1624831/ads8681-for-source-synchronous-internal-clock-how-many-bits-of-sdo-could-i-obtained

器件型号: ADS8681
主题中讨论的其他部件: ISOW6441ISO7640FM

尊敬的 Texas Instruments:  

我正在使用 ADS8681 进行设计时序预算分析。 我觉得可以将源同步模式与 ADC 内部时钟结合使用。

但是、在我进行计算时、我无法获得 32 位数据来适应数据读取时间。
一个 RVS 周期为 15ns、如果需要 32 位、则需要 480ns。
不过、读取数据的时间为 335ns、而 335ns 中的 50ns 将用作 t_DEN_CSRVS、因此我只有 285ns。 这意味着我最多只能获得 19 位 SDO。  

如果我想从输出寄存器获取完整的 30 位数据、应该怎么做?

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

    你好 Justin!  

    欢迎来到 TI 的 E2E 论坛!

    有两种选项可用于缩短数据帧中所需的时钟。  

    1. “短“数据传输帧来完成的。  
      1. 输出数据字配置为在转换结果-->输出数据={Conversion Result D[31:16]、可选状态标志 D[15:2]、00b}之后包含可选的状态标志
      2. 在短数据帧中、时钟计数器可以小于 32、以便启用仅读 回数据。 这意味着数据帧可以至少为 16 个时钟、如果需要一些状态标志、则为 19。  
      3. **使用此功能会使 SDI 命令无效,始终显示为 NOP 命令。
        1. 这在读回转换数据时没关系
        2. 但是、在配置到器件时(读取或写入器件寄存器映射)、数据帧必须为 32 位。  
        3. 减少时钟计数、直到配置完成后才会读取转换数据。  
    2. 双 SDO
      1. 此器件具有可将多功能引脚 (ALARM/SDO-1/GPO) 配置为第二个 SDO 的功能。  
      2. 这会将数据帧大小减半、需要 16 个时钟而不是 32 个时钟。  

    如果需要状态位、对于完整的数据位和状态位(30 位)、我建议使用双 SDO。 这是否适合您的设计?  

    此致、

    Yolanda

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

    你好、Yolanda、  

    由于目前我的设计仅限于单 SDO、因此我想进一步探讨第一个选项。
    由于似乎无法使用源同步内部时钟方法来获得至少 20 位、因此如果我在 66.67MHz 上使用 SCLK、我想探索这个选项。

    对于 SCLK、似乎可以避免 t_DEN_CSRVS 延迟时间、并允许我仅在 10ns 后从主机控制器获取数据。

    通过这种方法、我似乎可以在非常严格的时序约束下获得 20 位数据。  

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

    您好 Justin、  

    感谢您的更新、使用具有标准 SPI 的外部 SCLK 确实为扩展数据帧留出了更多空间。  如果可以选择使用 RVS 作为触发/中断、这可能有助于略微增加读取时间、从而还允许读取更多几个位。  

    您是否能够分享 ADC 的使用方式、以及要在系统读回中包括哪些状态位很重要?  

    此致、  

    Yolanda

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

    你好、Yolanda、

    当前所需的位是转换数据(16 位)、输入警报位(2 位)和奇偶校验位(2 位)。  
    ADC 将连接到隔离器、然后隔离器将连接到主外设。 由于隔离器(4 个通道)的限制、我只能在主外设和 ADC 之间连接 CS、SCLK、MOSI 和 MISO 通道、因此不需要连接 RVS。  



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

    感谢您与我们分享 Justin、  

    那么您是正确的、使用标准 SPI 和来自 SCLK 的控制器将是获得至少 20 位数据和 1MSPS 吞吐量的理想情况。  

    我确定它已经知道、但以防在配置器件时、数据帧大小必须为 32 个时钟、这意味着在此期间周期时间必须慢于 1MSPS。  

    此致、  

    Yolanda

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

    出于好奇心、在配置器件时、我是否可以使用更短的 t_CONV(例如 100ns 而非 665ns)、但使用相同的 SCLK 频率(有 32 个时钟周期)?

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

    嗨、Justin、  

    不建议在转换期间发生数字事务。 除了只影响要转换的样本外、 转换周期中还有一个安静的时间、在这个时间内、避免数字事务至关重要。 因此建议等到转换结束后再进行。  

    组合 CONVST 和 CS 的通用引脚也会使避免这种情况变得更加困难。  

    除了建议等到转换结束之外、另一种解决方案是让器件在转换开始后忽略 CONVST/CS 事务。  

    是否不能在器件配置期间延长周期时间?  

    是否允许在设备配置和数据采集之间添加一些“虚拟“帧或延迟? 则可能不需要完整的转换延迟。  

    此致、  

    Yolanda

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

    你好、Yolanda、

    我考虑了使用标准 SPI 和来自 SCLK 的主机控制器、但我仍然无法找到一种能够获得 20 位以实现 1MSPS 吞吐量的有效场景。 我希望您能帮助提供更多见解或纠正我在时序分析中的错误(如果有)。

    在当前的设计草案中、我的原理图将基于 ADS8681 数据表中的图 7-25 并使用隔离 阈值 ISOW6441 模型(目前,我知道,这是由直流/直流转换器组成的隔离器,在其他隔离器中具有出色的性能)。


    主机控制器的内部时钟以 250MHz(4ns 精度)运行、因此 t_CONV=668ns(而非 665ns)、t_(DEN_CSDO)=12ns(而不是 10.5ns)和 t_(HT_CKDS)=8ns(而不是 7、5ns)、我进行了时序分析、如下所示。  

    1. 对于标准 SPI、SCLK 限制为 25MHz(通过隔离器)。 因此、整个周期将是多少
         T_cycle = t_CONV + t_(DEN_CSDO)+ N∗t_SCLK + t_(HT_CKCS)= 668ns + 12ns + 20*40ns + 8ns = 1488ns (@672kbps)
    2. 对于相位延迟 SPI、SCLK 通过计算得出
      T_SCLK/2 - PWD/2 >= 0.45*t_sclk; t_sclk >= 10*PWD
      由于 PWD 最坏情况为 3ns、因此 MIN (t_SCLK) 限制为 30ns (@33.33MHz)。
      T_SCLK >= 2 *(t_(D_CKDO)+PWD+t_(TRACE+FPGA)+D_err)>= 2 *(12+3+1+0)>= 32ns (@31.25MHz)
      假设 TRAC+FPGA 设置延迟非常小 (1ns)、且延迟机制可以完美同步(0ns 误差)
      T_cycle = t_CONV + t_(DEN_CSDO)+ N∗t_SCLK + t_(HT_CKCS)= 668ns + 12ns + 20 * 32ns + 8ns = 1328ns (@753kbps)
    3. 与内部时钟进行源同步
      T_cycle = t_CONV + t_(DEN_CSRVS)+ N* t_(CYC_RVS)= 668ns + 50ns + 20*15ns = 1018ns (@982.3kbps)


    我无法确定能够实现 20 位@1Mbps 的合适 SCLK(或如何实现)。

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

    你好、Yolanda、

    感谢您的见解。 我认为在器件配置期间允许我的系统具有更长的周期时间(但不允许进行 ADC 数据采集、因为目标是实现至少 20 位@1Mbsp)。 我要记住、在主机控制器上设计设计时、t_CONV 必须至少具有 665ns 的时间。  

    目前、主要问题仍然是如何通过仅使用实现 20 位@1Mbps 的技术  阈值  能够执行直流/直流转换的隔离器(ISOW 系列)。

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

    您好 Justin、  

    您的计算结果很好。  

    使用标准 SPI 时、可在大于 60MHz SCLK 的 20 位下实现 1MSPS。 如果仅使用一个  ISOW6441 时 25MHz 存在限制、则无法达到 1MSPS。  

    为了获得更高的吞吐量、最好将源同步器件与内部时钟一起使用。 如您所示、将 1MSPS 模拟仅缩短 18ns。  如果对于 FPGA 可能、可以使用 DATAOUT_CTL_REG 寄存器中的 DATA_VAL[2:0]位来校准数据输出。 通过校准、  可以使用 tDEN_CSRVS 的更典型值、而不是固定的最大值。 根据系统温度条件和预期的 ADC 到 FPGA 路径延迟、这种方式校准数据可以节省 1MSPS 吞吐量所需的 18ns。  

    此致、  

    Yolanda

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

    你好、Yolanda、

    很抱歉、我无法了解设置 DATA_VAL[2:0]如何帮助将 t_DEN_CSRVS 调整为典型值。 根据数据表、DATA_VAL[2:0]必须设置为 0XX 才能接收转换数据、将其设置为其他值将导致其他指定模式、从而使 ADC 不执行其功能。  

    您能帮助我们详细说明一下吗? 以及数据表中未提供的 t_DEN_CSRVS 的典型值是多少。   

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

    您好 Justin、  

    将 DATA_VAL 设置为 1xx 将输出指定的模式、而不是转换数据、正确。  为了进行校准、可以使用可用模式指定 CONVST/CS 变为低电平之间的延迟、MSB 在 SDO 上出现时之间的延迟、以及 SDO 上每个下一个有效数据的延迟。 在某些 FPGA 中、内部时钟可以对此进行校准、并且可用于从 SDO 读取数据。 在内部复制 RVS 时钟输出。  

    CONVST/CS 变为低电平与 RVS tDEN_CSRVS 第一个边沿之间的延迟可通过使用 DATA_VAL = 5(数据输出为全 1s)计算得出。 --> SDO (MSB) 的第 1 个边沿等于  tDEN_CSRVS + TD_RVSDO。   TD_RVSDO 最大值为 2.5ns、没有太大差异、 tDEN_CSRVS 小于 50ns、因此可以节省时间、步长接近 1MSPS。

    然后使用 DATA_VAL = 6(0 和 1 交替)、可以计算数据输出的延迟/速率。  

    校准完成后、返回并将 DATA_VAL 设置 为 0xx 将配置转换数据、但现在使用内部校准时钟、可在 66.67MHz 读取数据。

    此致、  

    Yolanda

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

    你好、Yolanda、  

    感谢您的答复。 我想我现在已经有了理解。 不过、我还有一些问题。

    1.假设我的 FPGA 能够连接到 ADC 的 RVS(具有额外的 ISOW)、ADS8681W 的典型 t_DEN_CSRVS 是否有范围? (目前,我仍处于时间分析阶段,我想查看典型场景及其各自的时间)。

    2.我想问典型的 t_DEN_CSRVS 在每一个可邀请的 ADS8681W 之间是否有很大的不同?

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

    您好 Justin、  

    器件之间的差异不大、但延迟也取决于温度。  

    设置 Current 最大值是为了确保在高达 125°C 的温度下提供足够的延迟。 如果您的系统不例外地处于接近 125°C 的环境中、则很可能延迟约为 10ns  

    访问 RVS 也将增加对转换延迟的了解、因为当 CONVST/CS 为高电平时、RVS 会反映内部 ADC 时序、RVS 上的转换将表示转换已结束、并且 CONVST/CS 可变为低电平。  如果不接近 125°C、这也可能在 10-20ns 范围内节省。  

    此致、  

    Yolanda

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

    你好、Yolanda、  

    感谢您的答复。  

    目前、我考虑使用 multiSPI 源同步内部时钟模式来执行读取和写入性能。  

    与我对图 5-8 的理解相同。 multiSPI 源同步内部时钟串行接口时序图、RVS 没有显示表示转换已结束的转换(但适用于标准 SPI 和/或源同步外部时钟)。  

    我在这里再次确认一下我的理解程度、借助 multiSPI 源同步内部时钟模式、为了实现 20 位读取数据、我只需要做一个
    步骤 1. 在 FPGA 上、在 t_conv_max 之后将 CS 从高电平切换到低电平、
    步骤 2. 在 FPGA 上、等待 RVS 显示负边沿并捕获 SDO MSB
    步骤 3. 在 FPGA 处、重复步骤 2、直到获得所需的位数。
    步骤 4. 在 FPGA 上、将 CS 从低电平切换到高电平、然后从步骤 1 重复。  

    假设典型的 T_DEN_CSRVS 将小于 10ns(如数据表中所述,远低于 50ns)、则可以实现 1MSPS 的数据速率。

    如果以上任何陈述有误、请纠正我。


    问题的下一部分是如何在 multiSPI 源同步内部时钟模式期间写入(或 ADC 的配置)? 或者、只允许我使用标准 SPI 方法进行写入?

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

    您好 Justin、  

    你的理解是正确的,除了一件事,但这可能是因为我的措辞。  我的意思是、  t_dEN_CSRVS 可以比最大值低大约 10ns、因此~40ns。 我很抱歉混淆。  

    在源同步内部模式和 RVS 可用的情况下、是的、您提到的步骤是理想的、可以使您接近 1MSPS、但可能略低于或完全低于 1MSPS。

     

    此致、  

    Yolanda

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

    你好、Yolanda、  

    感谢您的澄清。

    我很好奇为什么 t_DEN_CSRVS 的值高于 t_DEN_CSDO(低于 10ns)。

    RVS 和 SDO 不是相关信号(其中 RVS 是信号在 SDO 准备好捕获时进行了阐明)、并且由于在标准 SPI 中、t_DEN_CSDO 小于 10ns、t_DEN_CSRVS 不应该与 t_DEN_CSDO 的值大致相同吗?

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

    您好 Justin、  

    时序约束 t_DEN_CSDO 是从 tri 状态到驱动状态的 SDO 延迟。 当 CS 为高电平时、SDO 处于 tri 状态、而当 CS 为低电平时、则会被驱动。  

    另一方面、T_DEN_CSRVS 包括由于使用多功能引脚 (RVS) 输出内部时钟(不仅是典型的,主要是静态的内部状态)而导致的额外延迟、以及启用数据输出并准备移出与 RVS 时钟输出同步的数据的延迟。 这可能需要几个牺牲的时钟周期才能使 SDO 和 RVS 同步。 此外、随着温度的变化 、可能会出现一些漂移、最大值为 50ns。

    此致、  

    Yolanda

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

    你好、Yolanda、

    我进行了一些计算、中间有一个隔离器、我没能使我的系统在 1MSPS 的速率下以 20 位目标频率运行。 一个周期所需的总时间为 t_total = t_CONV_MAX + t_dEN_CSRVS + 2* t_PD + 20* t_CYC_RVS = 1050ns(最坏情况,t_pd = 16ns、t_dEN_CSRVS = 50ns)或 1022(典型情况,t_PD = 7ns、t_dEN_CSRVS = 40ns)。

    由于 FPGA 上只有一个额外的引脚可用于在 RVS 或 SDO_1 之间进行选择、因此连接 RVS 似乎并不能帮助我实现目标速率。 我必须选择 SDO_1。 对于双 SDO 如何帮助我在 1MSPS 下实现 20 位、您有什么建议吗?

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

    您好 Justin、  

    使用双 SDO 会使实现 20 位变得更容易、因为它会将所需的时钟数减少 2。  

    使用标准 SPI 时、这是在 SCLK = 32MHz 时实现的、对于前面提到的 25MHz、~920kSPS 仍然可以实现。  

    此致、  

    Yolanda

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

    你好、Yolanda、  

    当我读回 ADS8681 数据表时、我注意到了以下语句。
     “对于数字隔离器、建议使用 ISO7640FM、原因如下:

    • 支持大于 50MHz 的 SCLK 以及在最大吞吐量下运行 ADS868x 所需的逻辑电平
    • 四通道器件、有助于关键接口信号之间实现出色的延迟匹配、从而实现高速可靠运行。“

    不过、根据 【常见问题解答】如何计算数字隔离器支持的最大 SPI 速度? -隔离论坛 — 隔离- TI E2E 支持论坛,ISO7640FM 的 SCLK 最大速度似乎比数据表中声明的 50MHz (fSCLK<1/(4*pdf (max))= 23.8MHz 低得多。  

    因此、我想请问是否理解 ADS8681 数据表中所述的声明、即 ADS8681+ISO7640FM 组合如何能够实现> 50MHz SCLK。