作者的话
ADAU1788是ADAU1787的阉割版,他们同内核,都有SigmaDSP和FastDSP,模拟到模拟的延时都是5us,只不过1788只有2进2出,1787却有4进2出。这个系列我就来说一说这颗ADAU1788的硬件和软件都应该怎么做设计。
OP我是把ADI所有型号的DSP全部都做过,对就是所有型号。所以后面每个型号我都计划写一个专题来讲。
硬件准备
ADUA1788开发板一块:
产品简介:https://item.taobao.com/item.htm?id=611967214868&spm=a1z10.5-c.w4002-5192690539.11.4dc8751aeC9yWu
USBi仿真器一个:
产品链接:https://item.taobao.com/item.htm?id=38242936768&spm=a1z10.5-c.w4002-5192690539.11.451e2dbdcpXpJX
软件准备
SigmaStudio4.6
硬件链接示意图
ADAU1788 的进阶例程 3:通用一阶滤波器(General 1st-Order)
一阶低通和高通滤波器。若要在高通、低通和平坦之间切换,请单击蓝色频率响应图标。该操作可实时完成,无需重新编译项目。在文本字段中输入目标值,设定滤波器的截止频率和总增益(有时称为缩放增益)。也可单击箭头以逐一增大这些参数的值。若要快速增大参数值,请单击并按住不放,然后略微拖动。
通过点击蓝色的按钮,可以看到曲线的明显变化,音效各位自己去听听,练听力,有明显差别:
**ADAU1788 的进阶例程 4:通用一阶滤波器,参数/查找/压摆率 ( General (1st-Order Lookup)
**
这个滤波器提供一组可选高通或低通一阶滤波器响应,选择响应时可平滑(压摆率)过渡。该模块允许您定义一组滤波器响应(低通或高通),可通过终端系统中的外部控制输入进行选择。可选响应或曲线的数量是可变的,就如控制着滤波器响应变化速率的压摆率或步进一样。
滤波器响应显示在“滤波器控制”(Filter Control)窗口中(见下文)。请注意,响应曲线线性分布于
低、高截止频率值之间。该模块的算法将一组滤波器系数存储在 DSP 中的一个表中。若要选择某个曲线,请使用“索引查找表”(Index Lookup Table)、 “计数器”(Counter)模块或“直流输入”(DC Input)模块,并连接至红色引脚。通过 GPIO 模块,您可以用一个旋钮、旋转编码器或按钮控制所选响应。
若要打开“滤波器控制窗口”:
1)在“曲线数”(# Curves)字段中输入所需曲线的数目。
2)在“增益”(Gain)字段中输入所需滤波器增益(-/+ dB)。
3)在“频率”(Frequency)字段中输入这些曲线的所需频率范围(低频和高频目标频率)
ADAU1788 的进阶例程 5:通用二阶滤波器General (2nd-Order)
很常用的一个滤波器模块,通过这个滤波器模块,你可以使用多种二阶(双二阶)滤波器算法:
可用滤波器类型有:
1)参数型(Parametric)
2)支架型(Shelving)
3)通用高通型(General High-Pass)
4)通用低通型(General Low-Pass)
5)通用带通型(General Band-Pass)
6)通用带阻型(General Band-Stop)
7)巴特沃兹低通/高通型(Butterworth Low-Pass / High-Pass)
8)贝塞尔低通/高通型(Bessel Low-Pass / High-Pass)
9)信号音控制型(Tone Control)
10)IIR 系数型(直接系数输入) (IRR Coefficient) (direct coefficient entry)
11)一阶低通/高通型(1st-Order Low-Pass / High-Pass)
12)全通型(All-pass)
13)峰化型(Peaking)
14)陷波型(Notch)
15)切比雪夫低通/高通型(Chebyshev Low-Pass / High-Pass)
若要打开滤波器控制窗口,请单击图标按钮,从下拉组合列表中选择所需滤波器类型。参数控制将发生变化,以反映当前所选滤波器类型,模块图标按钮中的图像也会相应变化。
至于每个滤波器的算法,在 SigmaStudio 的 Help 里全部都有,我就不再这里重复了,如下图:
ADAU1788 的进阶例程 6:Pinking 滤波器
这类滤波器的经典用途是将白噪声(为每赫兹的等效能量)转换为粉红噪声(为每比例或常数百分比(如对数)频带的等效能量)。 若捆绑(集成)得当,此类能量将在任何对数比例图中显示为平坦。 Pinking 单元接受任何输入信号,并输出线性下降为 3dB/倍频程的信号。
ADAU1788 的进阶例程 7:跟踪滤波器(Tracking Filter)
“跟踪滤波器”(Tracking Filter)可用于对滤波进行动态转移。这种特定的跟踪滤波器采用一种“峰化滤波器”(PeakingFilter)算法。在多种应用中,应为峰化滤波器设定可移动中心频率,而非固定中心频率。例如,可用低频振荡器(LFO)驱动跟踪滤波器,以产生定相音频效应。跟踪滤波器允许通过外部输入来确定中心频率。
输入引脚:
跟踪滤波器模块有两个输入和一个输出。第一输入是您希望进行过滤的实际音频输入。第二输入引脚为滤波器中心频率的值。可以看出,该引脚为橙色,表明这是一个控制引脚而非音频引脚。在此,您可以连接低频振荡器或直流输入模块,用以为跟踪滤波器指定所需固定或可移动中心频率。
算法说明:
“跟踪滤波器”是“SigmaStudio 滤波器”库中的一种特有滤波器。这是系数由 DSP 处理器动态计算的少数几种滤波器之一。计算方程嵌入模块的算法代码之中,然后生成系数,视具体输入中心频率而定。
跟踪滤波器算法可接受的输入中心频率为一个 5.23 数据格式的值,计算公式为:Hz/(fs/2)。例如,如果工作频率为 fs = 44100 Hz,且 fc = 500 Hz,则发送值为: 0.0226757 = 500 /(44100/2)。
“跟踪滤波器”以一种“IIR 峰化滤波器”(IIR Peaking Filter)的系数生成过程为基础。以下方程说明了 DSP 由控件求得 5 个双二阶系数的方法。跟踪滤波器的控件包括“总增益”(overall_gain)(即滤波器总增益的 dB 值)、 “增强”(boost)(即峰化滤波器的减弱或增强 dB 值)和“Q”(决定减弱或增强频率的宽度)。 “峰化滤波器”的中心频率 fc 由第二输入引脚提供。
gainLinear = 10ˆ(overall_gain/20)
w = 2pifc/Fs
alpha = sin(w)/(2Q)
A = 10ˆ(boost/40)
a0 = 1 + alpha/A
a1 = -2 * cos(w)
a2 = 1 - alpha/A
b0 = (1 + alphaA) * gainLinear
b1 = -(2 * cos(w)) * gainLinear
b2 = (1 - alpha*A) * gainLinear
用途:
跟踪滤波器可用于多种场合。当峰化滤波器需采用可变中心频率时,则应使用跟踪滤波器。固定中心频率应用应使用通用二阶滤波器。若要为这种算法所需可变中心频率提供支持,则需开销大量 MIPS/存储器。然而,此处使用跟踪滤波器的第一个例子采用了固定中心频率,这只是为了便于说明中心频率的格式。
此例中,一个直流输入模块与跟踪滤波器的第二引脚相连。该模块内的值对应为 500Hz。因此,从第一引脚输入的音频信号将在 500Hz 下被增强 5dB, 其“Q”值为 1.71; 同时将对整个频率范围用-3dB 的总增益调整。
ADAU1788 的进阶例程 8:State-Variable 滤波器-高通低通带通滤波-HP 输出
该原理图使用的是“状态变量”(State-Variable)模块,包括低通、高通和带通三个滤波器的频率响应。
本着能听到声音的原则,目的在于告诉用户高通低通带通滤波模块在哪里,学会用这个模块后,用户就可以自由发挥了。
ADAU1788 的进阶例程 9:State-Variable 滤波器-高通低通带通滤波-LP 输出
ADAU1788 的进阶例程 10:State-Variable 滤波器-高通低通带通滤波-BP 输出
文章来源:https://www.toymoban.com/news/detail-798931.html
输出 0 和输出 1 又是伪模块,为了满足软件的逻辑要求!文章来源地址https://www.toymoban.com/news/detail-798931.html
到了这里,关于手把手教你使用ADI的音频DSP:ADAU1788的滤波器专题2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!