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.

[参考译文] SRC4392:SRC 能否进行16位至24位转换?

Guru**** 2534410 points
Other Parts Discussed in Thread: SRC4392, PCM5142

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/892939/src4392-can-the-src-do-16-bit-to-24-bit-conversion

部件号:SRC4392
主题中讨论的其他器件: PCM5142

您好!

我有一个几乎可以正常工作的原型、使用 SRC4392来馈送 PCM5142、但我有一个最后的问题:16位数据文件无法播放。

我将 I2S 音频馈送到端口 B、设置为从端口、端口 B 数据格式设置为24位 I2S。

来自端口 B 的数据通过 SRC 并从端口 A 发送到 PCM 5142。

端口 A 设置为主器件、以192kHz 的频率发送24位 I2S。  

端口 A 和 SRC 由24.576MHz MCLK 驱动。

PCM5142接收3线 I2S (无 SCK) 、因此处于从模式。

以44.1kHz、48kHz、96kHz 或192kHz 的频率播放24位和32位文件效果良好。 44.1kHz 或48kHz 的16位文件会导致静音。

RDY 引脚针对所有文件(包括16位文件)被拉至低电平、因此端口 B 似乎正在接收、且 SRC 锁定至16位文件的时钟、但端口 A 没有输出

0x32和0x33寄存器显示所有文件的正确比率、包括16位。

这是支持的用例吗? 换句话说、SRC4392是否应该能够从16位 I2S 输入数据中输出24位192kHz I2S 数据? I2S 规范规定、接收到的数据应完整或截断传入数据、以匹配其内部工作长度。

提前感谢、

Peter

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

    你好,Peter!

    欢迎来到我们的 e2e 论坛!  您是否有 I2S 数据流的屏幕截图?  我对您如何将16位数据发送到端口 B 感到好奇

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

    Tom、

    感谢您的欢迎和回应。 我有几个来自逻辑分析仪的屏幕截图。 它们分别为16、24和32位样本、均为48kHz。  IIRC I 使用440Hz 正弦音文件。  希望这些是您所需要的。

    Peter

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

    尊敬的 Peter:

    我认为这不是支持的用例。 如果端口设置为 I2S、则需要24位数据。 使用下面数据表中描述的集成抖动功能可以将其截断:

    SRC 提供了一种简单的字长度缩减机制、可将24位音频数据减少为20、18或16位输出字长度。 使用三角概率密度函数(或 TPDF)抖动来执行字长缩减。 控制寄存器0x2F 中的 OWL0和 OWL1位用于设置 SRC 输出字长度。 关于 SRC 输出字长度设置的一个注意事项:当使用 SRC 输出作为端口 A 或端口 B 串行数据输出的数据源时、 音频串行端口数据格式设置为右对齐、为音频串行端口格式设置的字长必须与为 SRC 输出数据设置的字长相匹配。

    对我来说、这与端口控制寄存器一起意味着、如果数据少于24位、则应使用右对齐模式。 在右对齐模式下、输出字长度必须与输入字长度匹配。

    最棒的

    Zak

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

    Zak、

    我怀疑您说得对、SRC4392在这种情况下不支持、但这很奇怪、因为它应该起作用。  这就是 I2S 以 MSB 优先的原因。  飞利浦 I2S 规范规定:

    "串行数据以二进制补码的形式传输,MSB 在前。 MSB 优先传输、因为发送器和接收器可能具有不同的字长。 发送器不必知道接收器可以处理的位数,接收器也不必知道正在传输的位数。

    当系统字长大于发送器字长时,字被截断(最低有效数据位设置为‘0’)以进行数据传输。 如果发送的接收器位数大于其字长、那么 LSB 之后的位将被忽略。 另一方面、如果发送的接收器位数少于其字长、则缺失的位在内部设置为零。 因此、MSB 具有固定的位置、而 LSB 的位置取决于字长。 在 WS 变化后、发送器始终发送下一个字的 MSB 一个时钟周期


    如果需要为 I2S 指定输入字长、那么很奇怪、SRC4392没有16位 I2S 选项、这比任何其他格式都代表了更多的可用数据。 很奇怪、SRC4392在发送到配置为24位的端口的32位 I2S 时工作正常。  当我将32位数据馈入端口 B 时、我应该看看从端口 A (设置为24位)发出的数据

    PCM5142在直接馈送时能够从16、24和32位 I2S 正常变化、无需任何其他信息、这一点也很奇怪。

    如果 SRC4392只是不能按照 I2S 规范工作,我可以通过向上采样到24位上行,或者切换到 AKM 部件来解决这个问题:-)  

    谢谢、

    Peter

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

    [引用用户="Peter Tait"]

    Tom、

    感谢您的欢迎和回应。 我有几个来自逻辑分析仪的屏幕截图。 它们分别为16、24和32位样本、均为48kHz。  IIRC I 使用440Hz 正弦音文件。  希望这些是您所需要的。

    Peter

    [/报价]

    Peter、

    那么、对于端口 A 主器件输出、当端口 B 馈送16位样本时、您是否看到 LRCLK 和数据输出位切换?

    作为一种权变措施、端口 B 上的主器件能否强制一个带有16位样本的24位输出(将 LSB 填充为零)?

    我仅在每个帧为32位/采样的模式下使用 SRC4392。

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

    Andy、

    我将查看端口 A 的输出并返回。  遗憾的是,我不允许在4392和5142之间有任何测试点,所以在那里获取逻辑探头很棘手:-)我也可能尝试在我这里的 PCM5142EVM 上对此进行仿真。

    现在、让主器件仅以24位方式发送所有内容的权变措施可以正常工作。

    谢谢、

    Peter

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

    [引用用户="Peter Tait"]

    Andy、

    我将查看端口 A 的输出并返回。  遗憾的是,我不允许在4392和5142之间有任何测试点,所以在那里获取逻辑探头很棘手:-)我也可能尝试在我在这里的 PCM5142EVM 上对此进行仿真。

    接通、您肯定可以在引脚上获得几个"示波器探头"。 它只是一个常规的 QFP,一点也不小:)

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

    你好,Peter!

    这基本上就是我的头所在-左移16位数据、将其作为24位运行到 SRC、看看会发生什么。

    Andy -最棘手的部分是、第三个臂/手能够停止示波器触发器、同时将示波器探针固定在 LRCLK、BCLK 和 Data 上。  在实验室中有朋友可能会违反社交距离规则:)。

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

    [引用用户="Tom Hendrick "]

    Andy -最棘手的部分是、第三个臂/手能够停止示波器触发器、同时将示波器探针固定在 LRCLK、BCLK 和 Data 上。  在实验室中有朋友可能会违反社交距离规则:)。

    [/报价]
    啊、你不需要花哨的触发。 只需使用自动边沿触发、LRCLK 输入作为源。 让它运行。 您将看到输出摆动或不摆动!
    此外、一种良好的开发技能是将30 AWG Kynar 涂层导线(绕线)的短(1或2 cm)引线焊接到引脚顶部的工艺。 您可以小心地将一个"扫描探头夹钩"放置在导线的另一端。 (可能使用 Kapton 胶带将探头的主体固定在下方。) 或者、使用逻辑分析仪仓体附带的捕捉器连接到这些导线上、使用一端带有0.025英寸引脚的黑色小跳线、另一端带有插座、从捕捉器延伸到"扫描探头"。
    您不会真正关心 Howard Johnson 质量的测量信号完整性。 您只想查看输出是否正在切换!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Andy、

    感谢您提出的30 AWG 绕线建议。 我想在芯片上标记一些测试点、但我觉得没有足够好的地方。  但我很确信、在这里的某个地方有一些旧的绕线...

    Peter

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

    更新:

    我设法将几条引线连接到 PCM5142的输入端、并在向 SRC4392发送不同的位长度时查看数据。  44.1、48、96和192kHz 时的24位和32位输入均产生从端口 A 流向 PCM5142的相同24位96kHz I2S 数据。  我将传输速度从192kHz 减至96kHz、因此对分析仪来说更简单一些。

    向 SRC4392发送16位数据时、时钟和帧速率正确、但数据线上几乎没有数据。  但也有一些随机的数据片段。

    以下是 SRC 接收到192kHz 32位和48kHz 16位输入时的96kHz DAC 输入:

    有什么想法吗?

    Peter

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

    尊敬的 Peter:

    这与原始的16位数据有关、比如您上周三发送的 Saleae 图、正确吗?  如果您将移位并作为32位字发送、结果会是什么样子?

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

    Tom、

    您是指从 SRC4392到 PCM5142的"左移并发送32位字"(即更改 SRC 和端口 A 输出选择)、还是 指从源到 SRC4392的"左移并发送32位字"?

    后一种情况是我现在所做的-我将源配置为以原始采样率将输出"重新采样"到32位-这是正常的。 我使用了32位、因为源代码上的软件似乎希望将某些文件输出为32位、我不希望它强制它将采样率下调至24位。  看起来不像一个大负载、因为它只是在那里填充零。

    如果您是指前一种情况、那么我的寄存器03中端口 A 输出选项为:

     24位左对齐(SRC4392的默认值)

     24位飞利浦 I2S (我的当前选择)

    16位右对齐

    18位右对齐

     20位右对齐

     24位右对齐

    对于右对齐选项、我还需要更改寄存器0x2F 中的 SRC 输出以匹配字长。  如果在将16位数据馈送到 SRC4392时能够获得任何合理的外观输出、那么我可以将 PCM5142寄存器0x28更改为匹配。

    这是您的意思吗?

    谢谢、

    Peter

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

    尊敬的 Peter:

    很抱歉、这里的延迟-您和我的想法相同、将源代码左移24位或32位、然后将其发送到 SRC4392。

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

    员工、

    我想我们可以关闭这个线程。

    我在发送24位或32位数据时有权变措施、但我想了解 SRC4392是否应该能够将16位 I2S 放入一个端口、通过 SRC 传递、并从另一个端口输出24位 I2S。

    感谢你的帮助。

    Peter