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.

[参考译文] SRC4382:SRC4382的非恒定输出延迟

Guru**** 2549370 points
Other Parts Discussed in Thread: SRC4382, PCM5100

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1001849/src4382-non-constant-output-delay-for-src4382

器件型号:SRC4382
主题中讨论的其他器件: PCM5100

大家好、

我 正在为安装在不同设备和上的两个 SRC4382的输出延迟而苦恼  
我认为这与本主题中讨论的问题相同:
https://e2e.ti.com/support/audio-group/audio/f/audio-forum/944740/src4382-phase-difference-amongst-tx-output-pins?tisearch=e2e-sitesearch&keymatch=src4382#

以前、我在更改 MCLK 时钟和 PLL 寄存器时遇到了相同的问题、但在这种情况下、我部分地解决了随后关闭和再次打开 ASRC 块的问题
MCLK 更改和 PLL 重新编程。  我说"部分"是因为它仍然存在大约500ns 的不确定性(当重新采样时钟为38KHz 时)

 是否有更正确的方法来保证 SRC 输出的输出延迟?  实际上、输出延迟似乎在某种程度上取决于内部 PLL 的方式  
锁定到传入信号。

谢谢。     

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

    您好、Alessandro、  

    您指的是什么延迟? 器件的净群延迟应是内插滤波器和抽取滤波器延迟的组合、这将远高于500ns。

    如果您尝试同步多个器件、您是否使用相同的 MCLK、BCK、LRCK 驱动它们?

    最棒的

    Zak

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

    Zak 您好!

    感谢您的回答。

    是的、实际上总的延迟是您说过的、但我要说:
    -我在两个不同的器件上安装了两个重采样器。
    -两个器件的速度与相同的 AES-EBU 信号
    -可以对 ASRC 进行重新编程、以适应不同的配置:在一个配置中
    它应产生37KHz 的采样输出、而在另一个输出中、它应产生195KHz 的输出。
    这两种配置之间的更改是对内部 PLL 进行重新编程、从而进行切换
    将外部 MCLK 设置为适当的频率(大约18 MHz 和大约25MHz)并切换 ASRC
    从 A 到 B 的输入
    -这是个问题:如果我用相同的 AES 信号给两个器件馈送信号、然后我进行比较
    在两个模拟转换输出中、我看到两个输出具有不同的延迟。
    有时相对延迟也可能为零、但它取决于器件的加电方式。
    问题在于、在两种配置之间切换、即两个信号之间的相对延迟
    可以是大约+/- 10uS 之间的任何值。
    此外、我得到的任何相对延迟、如果我干扰 MCLK、可以更改它:假设我有1uS 的延迟、
    我将 MCLK 接地一段时间、然后释放、ASRC 以12us 延迟锁定。
    我再次将 MCLK 接地(未触摸内部寄存器)、它以5us 延迟等方式重新锁定;否
    断开/重新连接 AES 信号时会观察到"延迟跳转"。

    无论数据表中规定的整个重采样延迟如何、输出相位/延迟都是如此
    与 PLL 锁定传入信号的方式相关。 我不关心绝对 I/O 延迟、它可以是绝对 I/O 延迟
    任何值、但务必始终保持相同。

    我知道这两个器件应该由同一个 MCLK 进行处理(这两个器件都在主控模式下运行、所以它们将会运行
    生成它们的 BCLK 和 LRCK)、但正如我之前所写的、它们不会安装在同一设备上。
    它们的 MCLK 由外部提供、因此器件之间的频率完全相同、但相同
    每个 MCLK 的相位关系可能不同:无论如何、对两个器件上的两个 MCLK 进行相位校准没有任何积极影响。

    此外、开始这条线程的人
    e2e.ti.com/.../src4382-phase-difference-amongst-tx-output-pins

    使用两个 ASRC、就像它们应该使用的一样、使用它们的常见 MCLK、LRCK 和 BCLK、但似乎他正在体验
    同样的问题。

    到目前为止我实现的最大值是、通过寄存器0x01关闭和打开 ASRC 块、一旦我发送了新配置、我就有了
    使用37KHz 输出时的最大延迟不确定性为+/-1us、使用195KHz 输出时的最大延迟不确定性为+/-10us;对于我们的应用
    第一个几乎是可以接受的,而第二个则不是可以接受的。


    非常感谢。

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

    嘿、Alessandro、

    感谢您提供更多详细信息、我认为您的问题已得到理解。 我认为这最终是因为 器件的 DIR 部分使用内部 PLL 来锁定和解码传入的 S/PDIF 信号、而该 PLL 的锁定时间不是确定性的、会因器件而异、甚至可能因信号而异 重新应用到您观察到的同一器件。 这些器件不是针对 确定性锁定时间而设计的、遗憾的是、我不知道如何改进这一点。 这并不能帮助两个板之间的 PLL 参考时钟不同、但正如您所指出  的、由于锁定时间的这种变化、器件之间仍然可能存在轻微延迟。

    最棒的

    Zak

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

    Zak 您好!

    出于完整性考虑、我在上一篇文章中说、只有当我干扰 SRC4382 MCLK 时、才会发生相位跳跃
    线路和/或如果我重新编程其内部 PLL 寄存器;在任何情况下、我都没有在连接和重新连接时观察到相移
    AES-EBU 输入信号。


    同时、我进行了其他测试:我将两个处于从模式的 PCM5100连接到两个 SRC4382输出并对其进行转换
    输出始终完全对齐。 无论您可以做什么来干扰它:中断 MCLK、断开连接
    并重新连接输入信号、始终会导致完全对齐的输出。
    PCM5100s 仅由 SRC4382 BCLK 计时、并将生成内部 MCLK。


    然后、FPGA 使用 SRC4382输出、我们将深入研究它的直觉、因此我会问  
    以下是几个问题:
    -I 需要将 ASRC 输出速率从大约37更改为大约195KHz (一步、非连续)、
    是否有更好的方法来实现此目的? 实际上、我只需更改 MCLK、然后重新加载 SRC 内部 PLL 寄存器、
    然后我在内部复位它(寄存器0x01写入0、一段时间后写入0x33)。 请注意
    最后一个操作在低采样率模式(37KHz)下部分解决了该问题、但在较高采样率模式下运行时、
    此外、当我发出 RESET 命令时、即使我没有更改内部 PLL 寄存器、也可以看到相位跳转。
    第一个问题是:必须"动态"更改 MCLK/PLL、是否有首选方法/顺序来执行此操作?

    第二个问题:为什么 PCM5100永远不会发生变化? 我知道它会根据传入的 BCLK 生成其内部时钟、  
    我认为、当其输入端的任何内容发生变化时、它会平滑复位并始终对齐重新启动。
    这 ìm 我询问 SRC4382 RDY 和 LOCK 信号是否是确定性的。
    如果是、我可以通过某种方式组合它们以重置内部 FGPA 关断点吗?

    谢谢。

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

    嘿、Alessandro、

    感谢您提供的详细信息。 不过、我对您的序列有疑问、您提到了重新加载内部 PLL 寄存器、然后复位器件吗? 您只是通过写入0x00来关闭块电源、而不是通过写入0x80来发出复位、对吧?  真正的复位会将 PLL 值设置回默认值、因此我可以在这种情况下看到相位跳转的原因。  

    假设您只是在更改 PLL 值之前关闭块电源、那么您的序列似乎听起来很好。 不过、您可能会尝试先将这些块断电、然后更改 MCLK 并调整 PLL 值、然后再将这些块重新加电。 我认为这将是最顺利的过渡方式。

    如您所述、PCM5100具有其自己的 PLL 以从 bck 生成时钟、并且当输入上的任何内容发生变化时、应该复位并斜升。 不过、我还是有点惊讶、您从未遇到与该 PLL 的锁定时间对齐问题、因为它是一个添加的变量...

    遗憾的是、RDY 和 LOCK 信号时序存在一些变化、使用它们使两个板保持同步不是很可靠。

    您能否尝试一下我提到的修订顺序、看看这是否有所改进?

    最棒的

    Zak

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="277711" URL"~/support/audio-group/audio/f/audio-forum/1001849/src4382-non-constant-output-delay-for-src4382/3711464 #3711464"]我非常感谢您提供的详细信息。

    感谢您的支持。

    [引用 userid="277711" URL"~/support/audio-group/audio/f/audio-forum/1001849/src4382-non-constant-output-delay-for-src4382/3711464 #3711464"]不过,我对您的序列有疑问,您提到重新加载内部 PLL 寄存器,然后重置器件?


    顺序如下(列出了寄存器和数据对)、请记住我正在使用两个输入  
    两个传入 AES-EBU 信号:一个信号必须在低数据速率(37ksps)时重新采样
    其他较高的(195Ksps)。  
    这就是我还必须切换 SRC 输入的原因。


    在初始化时、在上电时完成一次:

    0x01、0x33
    0x03、0x38

    0x04、0x03
    0x05、0x40
    0x08、0x3f

    0x0D、0x08
    0x0E、0x19

    0x0F、0x11
    0x10、0x49
    0x11、0x7D

    0x2D、0x02
    0x2E、0x00
    0x30、0x00
    0x31、0x00
    0x01、0x33

    此处加载了 PLL、以实现具有18MHz 主时钟的37K 采样输出操作

    然后...

    -当我 切换到具有25MHz 主时钟的195Ksamples 时

    0x0D、0x09
    0x04、0x00

    0x0F、0x21
    0x10、0xe1
    0x11、0xc3

    //--ASRC 复位
    0x01、0x00

    0x01、0x33


    -当我切换到具有18MHz 主时钟的37K 样本时


    0x0D、0x08
    0x04、0x03

    0x0F、0x11
    0x10、0x49
    0x11、0x7D

    //--ASRC 复位
    0x01、0x00

    0x01、0x33

    对于每次配置更改、当重新写入 ASRC 寄存器时、FPGA 内部的 I2S 接收器也会被清除。

    [引用 userid="277711" URL"~/support/audio-group/audio/f/audio-forum/1001849/src4382-non-constant-output-delay-for-src4382/3711464 #3711464"]您只是通过写入0x00来关闭块电源、从不通过写入0x80来发出复位、对吧?  真正的复位会将 PLL 值设置回默认值、因此我可以在这种情况下看到相位跳转的原因。  [/报价]

    没有、先生、正如您看到的、我只需关闭模块电源、然后在一段时间后将其打开。
    这一技巧在纠正37K 采样操作模式方面相当有效、现在我的 I 相位不确定性为+/-500ns
    在我们的应用中是可以接受的、但在以最高采样率运行时、相位跳跃可能高达20uS、则效果不如预期。

    [引用 userid="277711" URL"~/support/audio-group/audio/f/audio-forum/1001849/src4382-non-constant-output-delay-for-src4382/3711464 #3711464">假设您在更改 PLL 值之前关闭块电源、您的序列似乎是正确的。 不过、您可能会尝试先将这些块断电、然后更改 MCLK 并调整 PLL 值、然后再将这些块重新加电。 我认为这将是最顺利的过渡方式。[/引述]



    我已经尝试过这种方法、但这并没有改善行为、但我将以这种方式更改例程。

    [引用 userid="277711" URL"~/support/audio-group/audio/f/audio-forum/1001849/src4382-non-constant-output-delay-for-src4382/3711464 #3711464"]PCM5100具有自己的 PLL、可根据您所述从 bck 生成时钟、并应在输入发生任何变化时复位和斜升。 不过、我还是有点惊讶、您从未遇到与该 PLL 的锁定时间对齐问题、因为它是一个添加的变量...

    我也感到惊讶、但这是我观察到的结果。
    我的设置如下:
    我有一个提供正弦音的函数发生器。 将相同的音调发送到示波器通道、用于
    触发并发送到用于馈送 SRC 输入的 D/A 转换器。  
    pcm5100与 SRC I2S 输出并联、其转换后的模拟信号被发送到  
    第二个示波器通道。
    在示波器上、我可以看到原始信号和转换/重新采样/重新转换的信号、因此我可以
    感谢他们的拖延。
    将原始信号作为触发器、我在另一个信号的某一点上放置一个标记、然后在旋转时放置一个标记  
    从 195Ksamples 到37Ksamples 模式、我看到转换后的信号跳转到不同的延迟。
    注意:在两种模式中的一种模式下工作时、出现不同的延迟是正常的、但我的问题是
    在返回到相同模式时、延迟并不总是相同的。
    此测量设置中是否有错误?

    [引用 userid="277711" URL"~/support/audio-group/audio/f/audio-forum/1001849/src4382-non-constant-output-delay-for-src4382/3711464 #3711464"]不幸的是、RDY 和锁定信号时序存在一些变化、使用它们使两个板保持同步并不是很可靠。


    是的、我已经看到过、但-这 可能是巧合-当 以较低的采样率(37Ksamples)运行时、RDY 信号为
    始终(或至少在我执行的每次试验中)与 LRCK 转换同步;在以195Ksamples 运行时不相同。  
    无论如何、这似乎与相位延迟问题无关:我将 RDY 信号连接到 I2S 接收器并将其保持在复位状态
    直到 RDY 未被置为有效、因此它始终开始与 Lrck 上升沿对齐、但-消除"ASRC 复位技巧"-相位
    延迟问题再次出现。   

    最好。