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.

[参考译文] ADS9224R:如何以最多 500ns 的速度读取数据?

Guru**** 2693225 points

Other Parts Discussed in Thread: ADS9224R

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1585374/ads9224r-how-to-read-data-in-at-most-500-ns

器件型号: ADS9224R

尊敬的专家:

我希望您做得好。 我对 ADS9224R 芯片有一些问题。

目标:  使用 FPGA 从此芯片获取数据的时间间隔为每 500ns 或更短。

下面是我对使用 FPGA 从该芯片获取数据的过程的理解:

(1)。 在某个时刻、FPGA 将 ADS 的 CONVST 引脚拉至高电平以启动转换。

(2)。 ADS 启动模数转换。 FPGA 在至少 15ns (t_WH_CONVST) 后将 CONVST 引脚拉至低电平、因此在时间合适时可再次将其拉至高电平。

(3)。 ADS 完成转换后、它会将其 READY 引脚拉高、指示数据已准备好由 FPGA 读取。

(4)。   在 ADS 的 READY 引脚上检测到触发信号(从低电平转换为高电平)后、FPGA 会将 ADS 的 CS 引脚拉至低电平。

(问题 1)。    在将 CONVST 引脚拉至高电平经过一段时间(至少 t_D_CONVST_CS-MIN = t_DRDY = 315ns)后、能否对 FPGA 进行硬编码、以便在不检查就绪引脚的情况下将 CS 引脚拉至低电平?

(5)。   将 CS 引脚拉至低电平后、FPGA 在 Say 50MHz 处提供时钟到 ADSS 的 SCLK 引脚、以开始在数据中计时。 如果我们每个时钟读取一次、则使用 SPI-00-D-SDR 协议从两条数据线路读取 16 位将需要 180ns。

(问题 2)。  FPGA 是否可以将 CS 引脚拉至低电平并在同一时间向 SCLK 引脚提供第一个时钟、或者 FPGA 是否必须等待一点位(至少 t_SU_CSCK = 12ns)才能在将 CS 引脚拉至低电平后为 SCLK 引脚提供第一个时钟?
 
(6)。   读取数据后、FPGA 将 CS 引脚拉至高电平以结束数据传输。
 
(问题 3)。  FPGA 是否可以在读取最后一位的同时将 CS 引脚拉至高电平、或者在读取最后一位和将 CS 引脚拉至高电平之间是否存在时间滞后(至少 t_HT_CKCS = 14ns)?
 
(7)。   将 CS 引脚拉至高电平后、FPGA 将 CONVST 引脚拉至高电平以开始下一个周期。
 
(问题 4)。  FPGA 是否可以在 CS 引脚被拉高的同时将 CONVST 引脚拉至高电平、或者在将 CS 引脚拉高和将 CONVST 引脚拉至高电平之间是否需要有时间滞后?

如果可以并行转换多个引脚、则周期将为 315ns + 180ns = 495ns、符合我的要求。

(问题 5)。  每个周期需要读取的总位数是多少? 它只是来自器件的 16 个数据位、还是有任何起始位、停止位、奇偶校验位?
 
(问题 6)。  t_SU_CKDI = 2.5ns 且 t_HT_CKDI = 1.5ns 是否在周期时间内发挥任何作用、ADCST 和 t_acq 的作用是什么?

我的问题基于以下零周期延迟(区域 1 传输)图、



如果我能提供任何可能有帮助的其他信息、请告诉我。 我的目标很简单。 我只想在每个周期 500ns 或更短时间内从该芯片获取数据。 如果此芯片的不同配置可以帮助我实现这一点、我会很乐意以您推荐的方式对其进行配置。 热切期待听到您的声音。 非常感谢。
 
此致、
Varun
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Varun、  

    感谢您提出问题、提供详细信息和逐步完成流程、非常感谢您的提问!  

    [引述 userid=“487726" url="“ url="~“~/support/data-converters-group/data-converters/f/data-converters-forum/1585374/ads9224r-how-to-read-data-in-at-most-500-ns (问题 1)。    在将 CONVST 引脚拉至高电平经过一段时间(至少 t_D_CONVST_CS-MIN = t_DRDY = 315ns)后、FPGA 是否可以硬编码以在不检查就绪引脚的情况下将 CS 引脚拉至低电平?

    是的。 如果使用区域 1、由于 READY 引脚的时间不应超过 tDRDY-max、 可以使用 tDRDY-max (315ns) 的硬编码延迟在 CONVST 上升沿之后关断 CS。  

    [引述 userid=“487726" url="“ url="~“~/support/data-converters-group/data-converters/f/data-converters-forum/1585374/ads9224r-how-to-read-data-in-at-most-500-ns (问题 2)。  FPGA 是否可以将 CS 引脚拉至低电平并在同一时间向 SCLK 引脚提供第一个时钟、或者 FPGA 是否必须等待一点位(至少 t_SU_CSCK = 12ns)才能在将 CS 引脚拉至低电平后为 SCLK 引脚提供第一个时钟?

    因此、在技术上对两者都是、但它取决于 SCLK 频率。  

    对于较慢的频率、1/2 的 SCLK 周期可能足以满足 12ns 的 Tsu_CSCK-min 和 12ns 的 tDEN_CSDO-max、但在较快的频率下情况并非如此。  这就是为什么对于高于 30MHz 的频率、我们建议将捕获边沿设置为下一个位的启动边沿、以提供所需的额外延迟。  

    [引述 userid=“487726" url="“ url="~“~/support/data-converters-group/data-converters/f/data-converters-forum/1585374/ads9224r-how-to-read-data-in-at-most-500-ns (问题 3)。  FPGA 是否可以在读取最后一位的同时将 CS 引脚拉至高电平、或者在读取最后一位和将 CS 引脚拉至高电平之间是否存在时间滞后(至少 t_HT_CKCS = 14ns)?

    在最后一个 SCLK 捕获边沿和 CS 变为高电平之间、必须满足 THT_CKCS 最小值 14ns。  

    [引述 userid=“487726" url="“ url="~“~/support/data-converters-group/data-converters/f/data-converters-forum/1585374/ads9224r-how-to-read-data-in-at-most-500-ns (问题 4)。  FPGA 是否可以在 CS 引脚被拉高的同时将 CONVST 引脚拉至高电平、或者在将 CS 引脚拉高和将 CONVST 引脚拉至高电平之间是否需要有时间滞后?

    对于区域 1、只要满足至少 tDRDY 和 TREAD 的 TD_CONVST_CS-MIN、就可以同时将 CS 和 CONVST 拉至高电平。  

    [引述 userid=“487726" url="“ url="~“~/support/data-converters-group/data-converters/f/data-converters-forum/1585374/ads9224r-how-to-read-data-in-at-most-500-ns (问题 5)。  每个周期需要读取的总位数是多少? 它只是来自器件的 16 个数据位还是有任何起始位、停止位、奇偶校验位?

    只需读取 16 个数据位、读取数据时没有开始位、停止位、奇偶校验位或状态位。  

    [引述 userid=“487726" url="“ url="~“~/support/data-converters-group/data-converters/f/data-converters-forum/1585374/ads9224r-how-to-read-data-in-at-most-500-ns (问题 6)。  t_SU_CKDI = 2.5ns 且 t_HT_CKDI = 1.5ns 是否在周期时间内发挥任何作用、ADCST 和 t_acq 的作用是什么?

    否、它们不会影响周期时间、这些时间用于写入或读取 ADC 的寄存器映射。 读回转换数据时、SDI 引脚必须保持低电平或高电平。  有关配置器件的协议、请查看第 7.6.2.3 节和第 7.6.3 节、此时 Tsu_CKDI 与 THT_CKDI 相关。  

    此致、  

    Yolanda  

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

    非常感谢您的深入答复和解决(没有双关语意)我的所有问题 Yolanda Slight smile

    您能否详细说明一下“对于高于 30MHz 的频率、我们建议将捕获边沿设置为下一位的启动边沿、以便为其提供所需的额外延迟。

    当时钟频率>= 30MHz 时、假设为最大 60MHz、如果我使用 SPI-00-D-SDR 协议、如下面的图 49 所示、



    一旦 CS 引脚从高电平转换为低电平、数据的第 1 位就会启动。
    第 2 位在第一个 SCLK 的下降沿启动。
    所有以下数据位都在其相应 SCLK 的下降沿启动。

    如果我的硬代码 t_D_CONVST_CS 设为 320ns (> t_DRDY = 315ns)、并且
    在将 CS 引脚拉至低电平与在 60MHz 和启动 SCLK 之间等待 20ns (> t_SU_CSCK = 12ns)
    最后一个 SCLK 捕捉边沿与将 CS 和 CONVST 引脚拉至高电平之间进一步保持 20ns (> t_HT_CKCS = 14ns) 的间隔、
    然后、我应该能够每隔一段时间处理来自芯片的数据:

    320ns + 20ns + 133.33ns(如果使用两条数据线读取 60MHz 上的 16 位)+ 20ns = 493.33ns

    这听起来是对的还是我错过了什么?  Sweat smile 谢谢你!!

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

    您好 Varun!  

    [引述 userid=“675962" url="“ url="~“~/support/data-converters-group/data-converters/f/data-converters-forum/1585374/ads9224r-how-to-read-data-in-at-most-500-ns/6110995 ]320ns + 20ns + 133.33ns(若要使用两条数据线读取 60MHz 处的 16 位)+ 20ns = 493.33ns

    你是正确的瓦伦! 有了 60MHz 时钟、这就是理想选择。 Blushμ s

    用于从设备读取的协议表中的脚注 2 和 3 是因为   t_SU_CSCK 和  t_HT_CKCS 有时会在胎面中占用 0.5 个周期(或覆盖 0.5 个周期)。  

    如果您查看表 4 上的胎面、实际计算为胎面=(7.5 x tCLK)+ k、其中 k =( t_SU_CSCK + t_HT_CKCS )。

    这在技术上会使您的时间~466ns、因为它使用 CS 到/从 SCLK 延迟作为 0.5 SCLK(假设它配置为允许锁存边沿在 t_SU_CSCK 延迟之后)。 不过、这种计算具有接近的裕度和较高的速度、但对于较慢的速度、它可以更轻松地配置数据输出回读。  

    我的意思是:  

    这就是为什么对于高于 30MHz 的频率、我们建议将捕获边沿设置为下一位的启动边沿、以便提供所需的额外延迟。  [/报价]

    这基本上就是您的计算结果。 借助 FPGA、设置 t_SU_CSCK + t_HT_CKCS 延迟非常简单、但如果它不是牺牲时钟周期或需要边沿、则很容易做到这一点。 由于边沿将在满足延迟要求之前发生、因此应在下一位的启动沿捕获数据。  

    抱歉对于混淆、您的计算是理想的、应能够满足所需的采样率。  

    此致、  

    Yolanda

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

    非常感谢您对 Yolanda 的及时答复。 我想我现在有一个关于如何使用这款芯片 Smile