ZHCABE6A September   2021  – April 2022 PCM3120-Q1 , PCM5120-Q1 , PCM6120-Q1 , TLV320ADC3120 , TLV320ADC5120 , TLV320ADC6120

 

  1.   使用 TLV320ADCx120 和 PCMx120-Q1 系列中的自动增益控制器 (AGC)
  2.   商标
  3. 1引言
  4. 2自动增益控制
    1. 2.1 高通滤波器
    2. 2.2 AGC 参数
  5. 3AGC 结果
    1. 3.1 正常 AGC 模式
    2. 3.2 增强 AGC 模式
  6. 4示例
  7. 5相关文档
  8.   A 修订历史记录

AGC 参数

表 2-3 显示了 AGC 算法的参数。可以通过对器件寄存器进行写入来控制前两个参数(AGC 目标电平和最大增益)。其他参数驻留在器件的 32 位宽系数存储器(Book 0、Page 5、Page 6 和 Page 7)中。在热启动期间,器件采用 Book 0 的 Page 5、Page 6 和 Page 7 中参数的默认值,若要使用用户值覆盖这些参数,我们需要设置 DSP_CFG1 寄存器 (P0_R108_D2) 中的位“DRE_AGC_CFG_DEF_OVR = 1”。

表 2-3 AGC 参数列表
AGC 参数 功能/说明
AGC 目标电平 (dB) AGC 目标电平表示 AGC 试图保持其输出信号的标称电平。
最大增益 (dB) AGC 对低于目标电平的信号应用的增益上限(以 dB 为单位)。
噪声阈值 (dB) AGC 用来区分噪声和微弱信号的阈值电平。低于该阈值的信号被归类为噪声,AGC 不会对其进行放大。
释放时间常数(秒) 当输入信号降至低于目标电平时 AGC 电路通过增大 PGA 增益进行响应的速度。
起音时间常数(秒) 当输入信号升至高于目标电平时 AGC 电路通过减小 PGA 增益进行响应的速度。
释放迟滞 (dB) 超过目标电平的信号电平降低量(以 dB 为单位),迫使 AGC 增加增益并开始释放。
起音迟滞 (dB) 超过目标电平的信号电平增加量(以 dB 为单位,迫使 AGC 降低增益并开始起音
噪声迟滞 (dB) 超过噪声阈值的信号电平变化量,迫使 AGC 在噪声和信号之间做出决定。
释放去抖(样本) 在 AGC 开始释放和增加 PGA 增益之前,在起音事件之后下降到目标电平以下的连续输入样本数。
起音去抖(样本) 在 AGC 开始起音和降低 PGA 增益之前,在释放事件之后上升到目标电平以上的连续输入样本数。
噪声去抖(样本) 输入降至低于噪声阈值,从而使信号被视为噪声的连续样本数。

AGC 目标电平:AGC 目标电平表示 AGC 试图保持输出信号的标称电平。阈值电平是相对于 ADC 输出的满量程 (dBFS) 表示的。表 2-4 列出了 AGC 目标电平配置设置。默认值为 -34dB。设置高目标电平会增加转换后的输出电平。不过,较大的目标电平设置可能会导致输入信号削波,同时信号电平突然增加。因此,需将目标电平设置为具有足够的裕度,以防在出现响亮的声音时出现削波。

表 2-4 AGC 目标电平可编程设置
P0_R112_D[7:4]:AGC_LVL[3:0] 输出的 AGC 目标电平
0000 AGC 目标电平是 –6dB 输出信号电平
0001 AGC 目标电平是 –8dB 输出信号电平
0010 AGC 目标电平是 –10dB 输出信号电平
1110(默认值) AGC 目标电平是 –34dB 输出信号电平
1111 AGC 目标电平是 –36dB 输出信号电平

最大增益:最大增益表示 AGC 对低于目标电平的信号应用的增益上限。表 2-5 列出了最大增益配置设置。默认值是 24dB。能够以 3dB 阶跃在 3dB 至 42dB 的范围内对其进行编程。

表 2-5 AGC 最大增益可编程设置
P0_R112_D[3:0]:AGC_MAXGAIN[3:0] 允许的 AGC 最大增益
0000 允许的 AGC 最大增益为 3dB
0001 允许的 AGC 最大增益为 6dB
0010 允许的 AGC 最大增益为 9dB
0111(默认值) 允许的 AGC 最大增益为 24dB
1110 允许的 AGC 最大增益为 39dB
1111 允许的 AGC 最大增益为 42dB

噪声阈值:AGC 用来区分噪声和微弱信号的阈值电平。低于该阈值的信号被归类为噪声,AGC 不会对其进行放大。可以通过写入 AGC_NOISE 系数来设置噪声阈值。Equation5 显示了 AGC_NOISE 参数的计算方式。

Equation5. GUID-1F14C715-D00C-4E3F-AB3A-C989F441EF79-low.gif

其中

  • NT 是以 dB 为单位的噪声阈值

默认值 (0xFFFFA600) 对应于 -90dB。表 2-6 显示了控制 AGC_NOISE 参数的寄存器。

表 2-6 用于噪声阈值的可编程系数寄存器
系数 PAGE 寄存器 复位值 说明
AGC_NOISE 0x06 0x20 0xFF AGC_NOISE 字节 [31:24]
0x06 0x21 0xFF AGC_NOISE 字节 [23:16]
0x06 0x22 0xA6 AGC_NOISE 字节 [15:8]
0x06 0x23 0x00 AGC_NOISE 字节 [7:0]\

释放时间常数:当输入信号降至低于目标电平时 AGC 电路通过增大 PGA 增益进行响应的速度。释放时间常数由两个系数控制:AGC_REL_ALPHA 和 AGC_REL_BETA。Equation6Equation7 显示了如何根据以下时间常数计算 AGC_REL_ALPHA 和 AGC_REL_BETA 参数:

Equation6. GUID-9B89DEAD-E97F-4A40-950E-19E382FDB8A9-low.gif
Equation7. GUID-D8D176B1-C264-4C96-8029-4A40E47904F9-low.gif

其中

  • RT 是以秒为单位的释放时间常数

表 2-7 显示了控制 AGC_REL_ALPHA 和 AGC_REL_BETA 参数的寄存器。这些参数以二进制补码表示形式写入。AGC_REL_ALPHA 和 AGC_REL_BETA 的默认值对应的时间常数为 20 毫秒。

表 2-7 用于释放时间常数的可编程寄存器
系数 PAGE 寄存器 复位值 说明
AGC_REL_ALPHA 0x05 0x7C 0x7F AGC_REL_ALPHA 字节 [31:24]
0x05 0x7D 0xB5 AGC_REL_ALPHA 字节 [23:16]
0x05 0x7E 0x16 AGC_REL_ALPHA 字节 [15:8]
0x05 0x7F 0x50 AGC_REL_ALPHA 字节 [7:0]
AGC_REL_BETA 0x06 0x08 0x00 AGC_REL_BETA 字节 [31:24]
0x06 0x09 0x4A AGC_REL_BETA 字节 [23:16]
0x06 0x0A 0xE9 AGC_REL_BETA 字节 [15:8]
0x06 0x0B 0xB0 AGC_REL_BETA 字节 [7:0]

起音时间常数:当输入信号升至高于目标电平时 AGC 电路通过减小 PGA 增益进行响应的速度。Equation8Equation9 显示了起音时间常数参数 AGC_ATT_ALPHA 和 AGC_ATT_BETA 的计算方式。

Equation8. GUID-50206C69-5EF0-42DC-AA84-8DC12336C943-low.gif
Equation9. GUID-88FDE47E-253D-45F0-AA69-2B301160218D-low.gif

其中

  • AT 是以秒为单位的起音时间常数

AGC_ATT_ALPHA 和 AGC_ATT_BETA 参数均以宽度为 32 位的二进制补码形式表示,由表 2-8 中显示的寄存器控制。AGC_ATT_ALPHA 和 AGC_ATT_BETA 的默认值对应的时间常数为 0.1 毫秒。

表 2-8 用于起音时间常数的可编程寄存器
系数 PAGE 寄存器 复位值 说明
AGC_ATT_ALPHA 0x06 0x0C 0x50 AGC_ATT_ALPHA 字节 [31:24]
0x06 0x0D 0xFC AGC_ATT_ALPHA 字节 [23:16]
0x06 0x0E 0x64 AGC_ATT_ALPHA 字节 [15:8]
0x06 0x0F 0x5C AGC_ATT_ALPHA 字节 [7:0]
AGC_ATT_BETA 0x06 0x10 0x2F AGC_ATT_BETA 字节 [31:24]
0x06 0x11 0x03 AGC_ATT_BETA 字节 [23:16]
0x06 0x12 0x9B AGC_ATT_BETA 字节 [15:8]
0x06 0x13 0xA4 AGC_ATT_BETA 字节 [7:0]

释放迟滞:超过目标电平的信号电平降低量,迫使 AGC 增加增益并开始释放。释放迟滞以 dB 为单位。Equation10 显示了 AGC_REL_HYST 参数的计算方式。

Equation10. GUID-37167614-1886-4DAF-8AB0-9AF16F3B9B5D-low.gif

其中

  • RH (>= 0) 是以 dB 为单位的释放迟滞

AGC_REL_HYST 的默认值为 0x00000300,对应的迟滞为 3dB 。表 2-9 列出了对应于 AGC_REL_HYST 的寄存器。

表 2-9 用于释放迟滞的可编程寄存器
系数 PAGE 寄存器 复位值 说明
AGC_REL_HYST 0x06 0x34 0x00 AGC_REL_HYST 字节 [31:24]
0x06 0x35 0x00 AGC_REL_HYST 字节 [23:16]
0x06 0x36 0x03 AGC_REL_HYST 字节 [15:8]
0x06 0x37 0x00 AGC_REL_HYST 字节 [7:0]

起音迟滞:超过目标电平的信号电平增加量,迫使 AGC 降低增益并开始起音。起音迟滞以 dB 为单位。Equation11 显示了 AGC_ATT_HYST 参数的计算方式。

Equation11. GUID-C43AE724-1A11-4413-9648-75ADC3A62E86-low.gif

其中

  • AH (>= 0) 是以 dB 为单位的起音迟滞

起音迟滞的默认值为 1dB。表 2-10 显示了控制 AGC_ATT_HYST 参数的寄存器。

表 2-10 用于起音迟滞的可编程系数寄存器
系数 PAGE 寄存器 复位值 说明
AGC_ATT_HYST 0x06 0x3C 0x00 AGC_ATT_HYST 字节 [31:24]
0x06 0x3D 0x00 AGC_ATT_HYST 字节 [23:16]
0x06 0x3E 0x01 AGC_ATT_HYST 字节 [15:8]
0x06 0x3F 0x00 AGC_ATT_HYST 字节 [7:0]

噪声迟滞:(AGC_NOISE_HYST):在噪声阈值附近的信号电平变化量,迫使 AGC 在噪声和信号之间做出决定。上升信号必须升至高于噪声迟滞电平才能被放大到目标电平。下降信号必须降至低于噪声迟滞电平才能被视为噪声。噪声迟滞以 dB 为单位。Equation12 显示了 AGC_NOISE_HYST 参数的计算方式。

Equation12. GUID-1678D889-26E4-4DF8-8873-BD72828BB63F-low.gif

其中

  • NH (>= 0) 是以 dB 为单位的噪声迟滞

AGC_NOISE_HYST 的默认值为 0x00000600,对应的迟滞为 6dB。表 2-10 显示了控制 AGC_NOISE_HYST 参数的寄存器。

表 2-11 用于噪声迟滞的可编程寄存器
系数 PAGE 寄存器 复位值 说明
AGC_NOISE_HYST 0x06 0x54 0x00 AGC_NOISE_HYST 字节 [31:24]
0x06 0x55 0x00 AGC_NOISE_HYST 字节 [23:16]
0x06 0x56 0x06 AGC_NOISE_HYST 字节 [15:8]
0x06 0x57 0x00 AGC_NOISE_HYST 字节 [7:0]

起音去抖:在 AGC 开始起音和降低 PGA 之前,在释放事件之后上升到目标电平以上的连续输入样本数。Equation13 显示了 AGC_ATT_CNT 参数的计算方式。

Equation13. GUID-92519C5D-261C-4A40-B24B-264B4FA8F1E8-low.gif

其中

  • AD (>= 0) 以秒为单位

表 2-12 显示了控制 AGC_ATT_CNT 参数的寄存器。

表 2-12 用于起音去抖的可编程寄存器
系数 PAGE 寄存器 复位值 说明
AGC_ATT_CNT 0x06 0x18 0x00 AGC_ATT_CNT 字节 [31:24]
0x06 0x19 0x00 AGC_ATT_CNT 字节 [23:16]
0x06 0x1A 0x02 AGC_ATT_CNT 字节 [15:8]
0x06 0x1B 0x00 AGC_ATT_CNT 字节 [7:0]

释放去抖:在 AGC 开始释放和增加 PGA 增益之前,在起音事件之后下降到目标电平以下的连续输入样本数。在频率为 48kHz 时释放去抖的默认值为 25 毫秒。Equation14 显示了 AGC_REL_CNT 参数的计算方式。

Equation14. GUID-0C25E08C-FD88-4786-88B5-7946BE53D22C-low.gif

其中

  • RD (>= 0) 是以秒为单位的释放去抖

表 2-13 显示了控制 AGC_REL_CNT 参数的寄存器。

表 2-13 用于释放去抖的可编程寄存器
系数 PAGE 寄存器 复位值 说明
AGC_REL_CNT 0x06 0x1C 0x00 AGC_REL_CNT 字节 [31:24]
0x06 0x1D 0x04 AGC_REL_CNT 字节 [23:16]
0x06 0x1E 0xB0 AGC_REL_CNT 字节 [15:8]
0x06 0x1F 0x00 AGC_REL_CNT 字节 [7:0]

噪声去抖:输入降至低于噪声阈值,从而使信号被视为噪声的连续样本数。Equation15 显示了 AGC_NOISE_CNT 参数的计算方式。

Equation15. GUID-FEB076BA-72FE-47E4-BEA5-D0805854EB15-low.gif

其中

  • ND (>= 0) 是以秒为单位的噪声去抖时间

AGC_NOISE_CNT 的默认值为 0x0004B000,当频率为 48kHz 时对应的去抖时间为 25 毫秒。表 2-14 显示了控制 AGC_NOISE_CNT 参数的寄存器。

表 2-14 用于噪声去抖的可编程寄存器
系数 PAGE 寄存器 复位值 说明
AGC_NOISE_CNT 0x06 0x44 0x00 AGC_NOISE_CNT 字节 [31:24]
0x06 0x45 0x04 AGC_NOISE_CNT 字节 [23:16]
0x06 0x46 0xB0 AGC_NOISE_CNT 字节 [15:8]
0x06 0x47 0x00 AGC_NOISE_CNT 字节 [7:0]