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.

[参考译文] TLV320AIC3268:miniDSP 双二阶系数加载

Guru**** 2535750 points


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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1010039/tlv320aic3268-minidsp-biquad-coefficient-loading

器件型号:TLV320AIC3268

使用 PurePath Studio、我创建了一个包含双二阶的两个实例的配置。 一个是高带通滤波器、另一个是低带通滤波器。 右键单击 biquad 对象将显示一个带有帮助的菜单。 Help 表示每个 biquad 实例包含系数 A=B0、B1、B2、A1和 A2的20字节块。 在每个系数为4字节时、帮助不会定义此4字节数据结构的格式。 这是一个1.31结构或其他东西。 由于 PPS 表明可以直接修改这些系数、我假设不需要量化(N0、N1、N2、D1和 D2)。

我的问题:(a) B0到 A2的4字节数据结构(格式)是什么? (b)是必要的量化、或者在被转换为必要的数据结构后、我可以只写入 B0、B1、B2、A1和 A2。

提前感谢您。

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

    您好、Phil、

    如果您使用常规双二阶滤波器、则它将采用1.23格式。 如果使用扩展精度双二阶滤波器、则为1.47。  

    可以直接写入 B0、B2和 A2、但 B1和 A1乘以2、因此应写入原始值的1/2。  

    最棒的

    Zak

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

    我发现每个系数都使用4个字节。 在四个字节中、使用前三个字节、最后一个字节为零。 前三个字节采用1.23格式、如您所述。 B0、B2等必须标准化并缩放为 N0、N1、...

    现在、唯一的问题是在自适应滤波模式下启用新系数。 对于 miniDSP 存储缓冲器 A 与缓冲器 B 的位置、没有定义。 而且、您触发两个缓冲器之间交换的位置并不完全清楚。 我已经学习 了 SLAA425D、但它只讨论概念、而不讨论实际的 miniDSP 寻址。 我使用的是 miniDSP、而不是处理块。  我对 DRC 系数位置有相同的问题。 实际上、我找到缓冲区 A 位置地址的唯一方法是查看 PPS 生成的脚本。 缓冲区 B 位置不清零。

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

    嗨、Phil、

    是的、没错。 每个系数被分配4个字节、但它们只是24位系数、因此不需要最后一个字节。 如果您查看 PPS 中的地址、您还会注意到、每个其他双二阶都包含一个额外的4字节系数。 这分配给双二阶实例化之间的 EQ 调节、以避免溢出。 因此、您可以按照 B0、B1、B2、A1、A2的顺序对双二阶系数进行编程、 EQscale (如适用)。

    对于自适应滤波、缓冲器 A 和 B 的位置实际上无关紧要。 第8.3.2.8.7节对此功能进行了非常好的描述。 当器件运行且启用自适应滤波时、无论写入哪个地址、始终会对当前未使用的缓冲器进行系数更新。 因此、您可以写入用于对双二阶进行初始编程的相同地址。

    设置控制位 B40_P0_R1_D0=1将在下一个采样周期切换系数缓冲器、并在切换发生后自动恢复为0 (因此您可以使用它来监控系数更新完成的时间)

    还有一个标志 B40_P0_R1_D1、用于指示2个缓冲器中的哪一个当前处于活动状态。

    如果您确实希望在写入前读回活动系数、则 ADC 的表54和55以及 DAC 的表57和58中给出了缓冲器 A 和 B 的系数映射。 请注意、该地图并未耗尽所有系数、但显示了趋势

    这些系数数将对应于组件接口表中 PPS 中分配的系数地址。

    最棒的

    Zak

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

    Zak、

    感谢您验证有关系数数据格式的信息。

    有关地址分配的"组件接口表"的说明。

    我有两个 biquad 实例。 一个是 HPF、另一个是 LPF。 请参见上图。

    PPS 显示每个实例的系数地址。  同样、请参阅上图和右侧。

    PPS 不显示缓冲器 B 地址的位置。 这是我现在需要的关键信息。

    在第8.3.6.2节最后一段中、"在缓冲区 A 的 B80_P1-P3上定义了用户可编程系数 C1至 C70、在缓冲区 B 的 B80_P9-P11上定义了用户可编程系数。对于辅助组、这些系数位于第82版的相似页面上。"  同样、我不知道实际的缓冲器 B 位于何处。 至少我看不到这些信息。

    谢谢、Zak。

    Phil

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

    我只是重新阅读您在信中写道:"当器件正在运行并且启用了自适应滤波时、无论写入哪个地址、都会对当前未使用的缓冲器进行系数更新。 因此、您可以写入最初对双二阶进行编程时使用的同一地址。"

    那么、我可以使用组件接口表中列出的相同地址(请参阅上图)吗?  但是、我仍然应该切换缓冲区标志?

     

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

    嗨、Phil、

    我不认为 PPS 组提到缓冲器 B 地址、因为您不需要它们、因为每当您写入任一缓冲器时、器件都会自动切换到当前未使用的缓冲器、 因此每次"写入缓冲区 A"就足够了、如果使用该缓冲区、它会将系数存储在缓冲区 B 中。因此、您只需处理一组地址、您可以使用标志来确定当前哪个缓冲区处于活动状态。

    如果您不希望这样做、则可以使用我提到的表。 缓冲区 B 位于同一个数据簿中、因此页寄存器和基寄存器不同、但它们仍由相同的系数名称组织。 因此、缓冲器 A (书籍40页1寄存器8)中的系数 C0将被书籍40页9寄存器72中的缓冲器 B C0镜像。

    缓冲区标志为只读且用于确定哪个缓冲区处于活动状态、控制位是需要切换以切换哪个缓冲区处于活动状态的标志。

    最棒的

    Zak

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

    谢谢、Zak!  这对我们有着重要帮助。

    为了达到这一目的、需要修改 SLAA447的"为 TLV320AIC3xxx 系列中的数字双二阶滤波器配置系数"、以阐明使用 miniDSP 时的数据格式和寻址。 它只针对双二阶滤波器配置的处理块(如 PRB_R5、PRB_P2等)进行寻址。

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

    嗨、Phil、

    很高兴能提供帮助! 感谢您的反馈。 是的、我认为问题的一部分是 AIC326x 器件实际上是在应用手册之后出现的、因此它们不包含在技术上、虽然它的功能基本相同、但也有一些差异。 因此、系数位深度存在差异。  

    我同意、如果有一份应用手册讨论启用 miniDSP 的 I2C 编程、会有所帮助。 至少在过渡期间、您的职位应成为 具有类似目标的人员的良好指南!

    最棒的

    Zak

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

    您回答正确。 芯片自动在缓冲区之间反弹。 切换时无噼啪声或任何噪声影响。