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.

[参考译文] TLV320AIC3204:在使用路由到耳机输出的 PDM 麦克风进行滤波时需要帮助

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1489807/tlv320aic3204-need-help-with-filtering-using-pdm-microphone-routed-to-headset-output

器件型号:TLV320AIC3204

工具与软件:

您好!

筛选是我无法理解的、但如果我能够了解需要使用哪些页面和寄存器、那么我可以 尝试一下。

我的电路非常简单、包含一个连接到编解码器 DIN 输入引脚的 PDM 麦克风、音频在 HPL 输出上传输、以便我可以使用耳机收听。 这一切都起作用、编解码器配置为32位@ 48kHz、因此可提供最高质量。 这一切都可以在我键入此消息时正常工作。

 现在、我需要帮助的方面涉及我需要查看的寄存器、以便我应用不同类型的滤波器以及可以尝试哪些功能。

使用"TI 双二阶系数计算器"应用程序、我将其设置为48kHz 32位、 这就是点击"Coeff"时向我显示的结果:

文本"*采样率= 48000"
文本"*滤波器1高音架1053 Hz FC -12.0 dB"

文本"* bq:h(z)=(N0+2*N1/z+N2/(Z2))/(-2147483648 - 2*D1/z - D2/(Z2))"
文本"*采用 N0、N1、N2、D1、D2"格式的滤波器系数

文本"* 1O:H (z)=(N0 + N1/z)/(-2147483648 - D1/z)"
文本"*采用 N0、N1、D1"格式的滤波器系数

文本"*过滤器1 BQ"
0x21CEEA89
0xE196EE68
0x1BA2C44A
0x7987D22C
0x8C50D004

我现在正在浏览文档、但应用这些值的页面和寄存器是什么、以便在应用过滤器时能听到耳机的变化?

谢谢!

贝诺伊特

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

    最新动态:

    我已经浏览过这些文档、 现在有问题:

    DAC 自适应缓冲器 A 显示为从 P44 R8 (C0)到 P52 R68 (C255)、然后对于缓冲器 B、显示为 P62 R8 (C0)到 P70 R68 (C255)。 它们有什么作用? 或者我是否需要它们? 为什么会有这么多人? 这些寄存器是如何转换为滤波的?

    在 AIC3204软件中、自适应滤波下似乎有6个双二阶滤波器、0用作全局我猜测吗? 当我在 图上为 BQ1-BQ5设置某些设置时、如何将这些设置转换为 Px ry? 我没有使用开发板、我在电路上添加了一个控制台选项、以便可以向其传递页/寄存器/值数据、并将其应用于编解码器。

    但在 TI 双二阶系数计算器中、我有一些相似的东西、但这次好像有10个滤波器? 根据类型、它似乎还提供对子类型的访问? 然后、如果单击"Coeff"按钮、我会获得设置、但如何知道需要将这些设置应用于哪个页面和寄存器?

    继续读取。

    贝诺伊特

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

    尊敬的 Ben:

    很抱歉混淆。 在该器件上使用双二阶滤波器有许多浮动信息。

    最简单的检查是静态双二阶滤波器。 所有双二阶系数寄存器都在应用参考指南的下表中:

    您可以将从 TIBQ 获取的系数写入此处的寄存器。 确保将 TIBQ 设置为24位分辨率。 系数似乎为32位宽。

    上述工作完成后、您可能会担心自适应滤波。 只有当您需要通过将所有新滤波器系数存储在缓冲区中并一次性应用、避免咔嗒声和干扰来实时更新滤波器系数时、才需要自适应滤波。 如果您只需要特定滤波器、而不需要更改、则不需要自适应滤波。 自适应滤波的工作原理是将写入上述寄存器的值传递到两个不同的缓冲器:A 和 B。默认缓冲器为 A。 启用自适应滤波后、对这些系数寄存器的任何进一步写入将进入缓冲区 B。写入所有系数后、您可以让缓冲区 ARM 以在下一次采样时切换。 现在、缓冲区 B 被激活、任何进一步的写入将覆盖缓冲区 A。你同样可以在完成时关闭开关、然后新的滤波器 A 将生效。  

    GUI 无法清晰地显示双二阶滤波器的情况。 假设您的 EVM 正在运行、并让 GUI 为您找出系数、而无法查看。 对于该器件、我坚持使用 TIBQ。

    此致、
    Jeff McPherson

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

    Jeff、您好!

    感谢您的参与。 我将使用"自适应"滤波、因为 我希望用户能够像均衡器那样实时调节音频、从而根据需要进行调整。

    但有几件事/问题可以从我的角度来澄清困惑:

    您参考的表2-9显示了滤波器系数通道、假设第一个 BQA、滤波器 N0使用 C7 (P8 R36-R38)、但这与表2-10中的 FIR0通道相同、也是 P8 R36-R38上的 C7。 这是如何解决的? 为什么它是用于不同功能的相同页面和寄存器?

    不过、您提到的表2-9适用于 ADC、但我使用的是 PDM 麦克风、它将音频输出到 HPL。 那么我不应该 使用表2-18 (从 C1的 P44开始)吗?

    至于 TIBQ 中的32位 vs24位系数、我以为"解决方案"字段用于我的音频分辨率、但我想是滤波器分辨率、应用程序不会滤除不正确的值(例如 、我似乎能够将任何值升至32、这没什么问题)。

    不管怎样、这一切都是为了说明、我认为它现在可以正常工作了。  我使用 TIBQ 提供的值创建高音架和低音架:

    -木架-

    Audio_SetFilter (44、12、0x651B61);//系数"C1" n0
    Audio_SetFilter (44、16、0xB37964);//系数"C2" N1
    Audio_SetFilter (44、20、0x3DC030);//系数'C3' N2
    Audio_SetFilter (44、24、0x4537B9);//系数'C4' D1
    Audio_SetFilter (44、28、0xCE86A9);//系数"C5" D2

    -低音架-

    Audio_SetFilter (44、12、0x24A470);//系数"C1" n0
    Audio_SetFilter (44、16、0xE4DBAC);//系数'C2' N1
    Audio_SetFilter (44、20、0x15A3E7);//系数'C3' N2
    Audio_SetFilter (44、24、0x6F08B8);//系数'C4' D1
    Audio_SetFilter (44、28、0x9DEEE1);//系数"C5" D2

    我没有意识到我每次写过滤器寄存器时都必须设置 P44 R1的位 D0 (抱歉、我猜这是一个英文到法文的理解问题)。

    现在在串行控制台中、我可在两种滤波器类型间交替、且能清楚地听到它们的区别。 现在、我将使用其他类型的滤波器、看看 在应用滤波器方面可以走多远、以及结果如何。

    问题1: 在"系数"窗口中、 BQ 下的1O 部分是什么? 8388608值来自哪里? 无论图形如何变化、此曲线都是固定的。

    问题2:  现在我可以做到这一点、我想每次应用新的滤波器、假设我有6个 BQ 滤波器、在我设置所有值之后、我才会设置 P44 R1的 D0位? 因此、换句话说、我设置我的所有6 BQ 滤波值、然后我 将 P44 R1 d0设置为1?

    再次感谢!

    贝诺伊特

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

    尊敬的 Ben:

    [报价 userid="109129" url="~/support/audio-group/audio/f/audio-forum/1489807/tlv320aic3204-need-help-with-filtering-using-pdm-microphone-routed-to-headset-output/5723281 #5723281"]您引用的表2-9显示了滤波器系数通道、假设第一个 BQA、滤波器 N0使用 C7 (P8 R36-R38)、但这也与表2-10中的 FIR0相同、也使用 P8 R36-R38上的 C7。 这是如何解决的? 为什么它是用于不同功能的相同页面和寄存器?[/QUOT]

    根据您选择的处理块、您会得到一组双二阶滤波器或20/25抽头 FIR 滤波器。 由于您不能同时拥有这两者、因此它们共享相同的系数寄存器。

    [报价 userid="109129" url="~/support/audio-group/audio/f/audio-forum/1489807/tlv320aic3204-need-help-with-filtering-using-pdm-microphone-routed-to-headset-output/5723281 #5723281"]但是、您引用的表2-9是针对 ADC 的、但我使用的是 PDM 麦克风、它将音频输出到 HPL。 那么我不应该 使用表2-18 (从 C1的 P44开始)?

    这取决于您希望处理的工作方式。 即使在数字麦克风情况下、ADC 和 DAC 处理级都处于活动状态。 因此、您可以根据您认为更合适的情况将滤波器应用于 ADC 侧或 DAC 侧。

    至于 TIBQ 中的32位 vs24位系数、我以为"解决方案"字段是用于我的音频分辨率、但我猜是滤波器分辨率、应用程序不会过滤不正确的值(例如 、我似乎可以将任何值设置为32、这没什么问题)

    正确、这适用于系数分辨率、而不是音频分辨率。 该工具不了解您使用的器件。 该公式非常简单、可以跨整数进行缩放、因此它不会限制任何分辨率值、从而"证明未来"本身。 然而、这让用户有责任选择合适的分辨率。

    我没有意识到每次我写信给过滤器寄存器时我都必须设置 P44 R1的位 D0 (抱歉、我猜这是一个英语到法语的理解问题)。

    不会有问题  

    [报价 userid="109129" url="~/support/audio-group/audio/f/audio-forum/1489807/tlv320aic3204-need-help-with-filtering-using-pdm-microphone-routed-to-headset-output/5723281 #5723281"] 问题1: 在"系数"窗口中、 BQ 下的1O 部分是什么? 8388608值来自哪里? 无论图形如何、看起来都是固定的。

    1o 指出现在所有信号链中的一阶 IIR。 如果您使用任何一阶滤波器(双二阶滤波器用于二阶滤波器)、例如一阶高通或低通、此滤波器将被填充在系数窗口中。 与双二阶滤波器的编程过程相同

    [报价 userid="109129" url="~/support/audio-group/audio/f/audio-forum/1489807/tlv320aic3204-need-help-with-filtering-using-pdm-microphone-routed-to-headset-output/5723281 #5723281"] 问题2:  现在我可以做到这一点、我想每次应用新的滤波器、假设我有6个 BQ 滤波器、在我设置所有值之后、我才会设置 P44 R1的 D0位? 换句话说、我设置所有6个 BQ 滤波值、然后 将 P44 R1 d0设置为1?

    是的、这是正确的。 如果您在完成更改所有 BQ 值之前启用 P44 R1、则会将 A 和 B 缓冲区之间的系数弄成一团、音频质量会迅速下降。 P44 R1交换整个缓冲区、而不是每个单独的 BQ。

    此致、
    Jeff McPherson

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

    感谢您发送编修。 真是太快了!

    因此,我 *认为*我有一个良好的开始,我正在尝试不同的形状在 TIBQ 软件,它似乎是像我所期望的。

    我想、现在更困难的部分是如何在图形上看到的内容与在更改图形上的滤波器设置时在系数窗口中更新的十六进制值之间进行转换。

    执行我理解的那样的算法   H(z)=(N0+2*N1/z+N2/(Z2)/(8388608 - 2*D1/z - D2/(Z2)  值 Nx 和 Dx 是24位值的十六进制字节部分。 值8388608为2^23 (0-23 = 24位)…… 但是、如何根据我的图形设置获得这个十六进制值呢? 是如何计算的? 我在哪里得到该方程的 Z 值部分?

    我提出这个问题是因为、理想情况下、我想为客户提供 一个具有触摸屏的手持设备、该设备可以实时仿真 TIBQ。 我想当连接到 EVM-K 时、这里的内容类似于 AIC3204 CS"自适应滤波"选项 因此、当客户更改设置时、它会将这些设置转换为十六进制值、这些值将传递给编解码器、并且客户可以实时听到。

    希望我不会问太多...!

    谢谢!

    贝诺伊特

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

    尊敬的 Ben:

    我们对触摸屏和自定义 EQ 曲线的描述有明确的定义。 通过绘制包含增益、q 和频率参数的图形、您需要将其转换为双二阶系数。 本应用手册很好地演示了如何将 EQ 参数始终转换为器件上使用的系数: https://www.ti.com/lit/an/slaa447/slaa447.pdf?ts EQ=174249602377&ref_url=https%253A%252F%252Fwww.google.com%252F 它对整个系列都是通用的、因此您需要插入24位分辨率、否则这些公式将保持通用、因此您可以插入 GAIN 和 Q 等值

    此数学运算可由主机处理器完成、一旦找到系数、便可通过自适应滤波器函数将其加载到器件中。

    z 是传递函数的变量、因为此函数在 z 域(数字离散域)中表示。 z^-1和 z^-2在典型的二次函数中类似于 x^1和 x^2。 我对 z 域的理解有点生锈、但 N0、N1、N2、D1、 D2是此函数的唯一参数、它们定义了 eq 曲线的形状。 您实际上无需担心 z。上面的应用手册介绍了如何处理它。

    此致、
    Jeff McPherson

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

    好的、我来看一下。 我认为我很好一段时间,我现在可以创建不同的筛选器,只是"应用"它们,我听到了差异。 也许只有几个预先制作的过滤器也能为客户完成这项工作。 我应该在下周见面并与他的情景进行测试。

    感谢您的所有帮助、一如既往、非常感谢。

    贝诺伊特

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

    我想我还有最后两个问题:

    问题1: 当我希望启用滤波时、实际的逻辑序列是什么? 由于器件启动后将滤波设置为默认禁用、因此如果我要激活滤波、我必须首先将 P44 R1 D2和 d0设置为"1"、然后针对 biquad1设置滤波器参数、假设是 P44 R12-R28、一旦所有寄存器都设置完毕、我需要再次将 P44 R1、D2/d0设置为"1"、如下所示:

    使用我的菜单选项'a'来'激活过滤',该选项第一次调用 AUDIO_SetRegister(44, 1, 0x07 );。

    然后、使用菜单选项"1"、这将配置滤波器寄存器、然后调用 AUDIO_SetRegister (44、1、0x07);再次"听到"滤波器。 这是应该怎么做的吗?

    问题2: 假设编解码器运行时启用了滤波、我想禁用滤波并返回到没有激活滤波的单元启动时的默认声音... 如何禁用滤波? 我认为、如果我将 P44 R1 D2设置为"0"、将会禁用滤波、因为这是文档所说的、但滤波似乎仍处于活动状态、因为我仍然可以听到最后一个滤波器的声音。 那么、我想也许我必须清除所有与滤波器相关的寄存器、例如 P44 R12-R28 (对于双二阶滤波器1)、但如果我这么做、那么我将丢失所有音频。 那么、如何禁用滤波并恢复到没有滤波器的默认音频(从引导时开始发出音频)?

    再次感谢!

    贝诺伊特

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

    尊敬的 Benoit:

    1)是的,这个过程对我来说很有意义。 没有太多需要优化的地方、我能想到的唯一增加就是、您可以在启动时立即激活自适应滤波、然后只是等到收到载入新系数的命令为止。

    2)"禁用自适应滤波"只是删除 A B 缓冲器切换。 无论上次调用的缓冲区都将保留在此处。 它们唯一可以"禁用"滤波的方法是将系数重写为默认值。 这会形成全通滤波器并有效地去除滤波器。

    此致、
    Jeff McPherson

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

    尊敬的 Jeff:

    对于#1来说还不错。 有道理的。 通过 写入 P44_R1 D2/D0一次以"启用"缓冲器开关、默认情况下将其打开 、然后当第一个系数写入其中一个双二阶寄存器(R12-R28等)时、写入 P44_R1以启用该滤波器。

    但是对于#2、我理解您对禁用缓冲器 A-B 开关的说明、但关于将系数重写回默认值、默认值是什么? 因为默认情况下、P44上的所有双二阶寄存器(R12-28、32-48等)都设置为0。 那么、 为了恢复到"默认值"、我需要设置什么页/寄存器?

    谢谢!

    贝诺伊特

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

    尊敬的 Ben:

    它们不应全部为0。 应用参考指南中的表5-4和5-7列出了所有默认系数。  

    此致、
    Jeff McPherson

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

    啊、是的! 它现在可以运行了! 所以我有如下这样的例子:

    //双二阶滤波器0
    Audio_SetRegister (44、8、0x000000);

    //双二阶滤波器1.
    Audio_SetRegister (44、12、0x7F);
    Audio_SetRegister (44、13、0xFF);
    Audio_SetRegister (44、14、0xFF);

    Audio_SetFilter (44、16、0x000000);// 17/18
    Audio_SetFilter (44、20、0x000000);// 21/22
    Audio_SetFilter (44、24、0x000000);// 24/25
    Audio_SetFilter (44、28、0x000000);// 29/30

    对所有其余的双二阶滤波器都重复了这个过程、它似乎运行良好。

    现在我知道如何使用 TIQB 创建滤波器、结果看起来听起来像我希望它们听起来的样子。

    再次感谢您的全力帮助、 我想现在就到此为止。

    谢谢!

    贝诺伊特