直接从数据表:这真的是一个明智的滤波电路吗?


12

Cirrus Logic CS42426-CQZ是我要在自定义USB声卡中使用的音频编解码器。您可以从此处下载数据表。

在第61页上,数据手册为每个A / D和D / A通道提供了推荐电路,但是我看不到这种复杂性的目的。当然,它们正在差分和单端之间转换,但是也有更简单的方法可以做到这一点。

我将其原理图复制到一些开源仿真软件(http://qucs.sourceforge.net/)中,并且频率响应甚至与指定的目的不符。但是,至少听得见的响应有些平坦:

ADC输入:( 在 好的,所以它们依赖ADC本身的CMRR作为抗混叠滤波器的一部分。不喜欢这个想法。)

DAC输出: 出

我认为他们实际上对在实际应用中使用这些电路很认真,但是似乎有些不对劲。就像我说的那样,可听见的响应是相当平坦的,因此如果没有手机或其他射频,听起来可能还不错,但是我认为我可以用OpAmps 101的旧经典做得更好。你们同意吗?

音频ADC从20kHz的标称增益上升到300kHz的峰值真的有充分的理由吗?还是让DAC从20Hz到0.5Hz左右做同样的事情?


为了完整起见,这里是模拟文件。将它们复制到纯文本文件中,如果系统需要,将扩展名更改为.sch,然后在Qucs中打开它们:

ADC输入:

<Qucs Schematic 0.0.18>
<Properties>
  <View=785,329,2079,1333,0.883466,0,0>
  <Grid=10,10,1>
  <DataSet=DiffAmpIn.dat>
  <DataDisplay=DiffAmpIn.dpl>
  <OpenDisplay=1>
  <Script=DiffAmpIn.m>
  <RunScript=0>
  <showFrame=0>
  <FrameText0=Title>
  <FrameText1=Drawn By:>
  <FrameText2=Date:>
  <FrameText3=Revision:>
</Properties>
<Symbol>
</Symbol>
<Components>
  <GND * 1 1120 480 0 0 0 0>
  <VProbe In 1 1110 460 28 -31 0 0>
  <GND * 1 940 640 0 0 0 0>
  <C C4 5 1010 520 -26 17 0 0 "100 uF" 1 "" 0 "neutral" 0>
  <GND * 1 1080 640 0 0 0 0>
  <R R18 5 1080 590 16 -10 0 3 "10 kOhm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <.DC DC1 5 930 700 0 41 0 0 "26.85" 0 "0.001" 0 "1 pA" 0 "1 uV" 0 "no" 0 "150" 0 "no" 0 "none" 0 "CroutLU" 0>
  <C C6 5 1230 420 -26 17 0 0 "470 pF" 1 "" 0 "neutral" 0>
  <R R23 5 1310 380 -9 10 0 2 "634 Ohm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <R R22 5 1350 500 -9 10 0 2 "91 Ohm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <OpAmp OP3 5 1230 500 -26 -42 1 0 "1e6" 0 "15 V" 0>
  <R R27 5 1300 570 16 -10 0 3 "634 Ohm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <C C8 5 1600 610 17 -26 0 1 "2700 pF" 1 "" 0 "neutral" 0>
  <Vac V1 5 940 590 18 -26 0 1 "1 V" 1 "1 kHz" 1 "0" 0 "0" 0>
  <C C7 5 1390 660 -26 17 0 0 "470 pF" 1 "" 0 "neutral" 0>
  <R R24 5 1470 620 -9 10 0 2 "634 Ohm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <R R25 5 1510 740 -9 10 0 2 "91 Ohm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <OpAmp OP4 5 1390 740 -26 -42 1 0 "1e6" 0 "15 V" 0>
  <GND * 1 1260 780 0 0 0 0>
  <R R26 5 1310 760 -9 10 0 2 "332 Ohm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <.AC AC1 5 930 750 0 41 0 0 "log" 1 "0.1 Hz" 1 "100 MHz" 1 "901" 1 "no" 0>
  <VProbe Diff 1 1820 610 -16 28 0 3>
  <GND * 1 1760 740 0 0 0 0>
  <VProbe Neg 1 1750 720 28 -31 0 0>
  <GND * 1 1760 500 0 0 0 0>
  <VProbe Pos 1 1750 480 28 -31 0 0>
</Components>
<Wires>
  <1080 480 1100 480 "" 0 0 0 "">
  <1080 480 1080 520 "" 0 0 0 "">
  <1040 520 1080 520 "" 0 0 0 "">
  <940 520 980 520 "" 0 0 0 "">
  <940 520 940 560 "" 0 0 0 "">
  <940 620 940 640 "" 0 0 0 "">
  <1080 620 1080 640 "" 0 0 0 "">
  <1080 520 1080 560 "" 0 0 0 "">
  <1080 520 1200 520 "" 0 0 0 "">
  <1300 420 1300 500 "" 0 0 0 "">
  <1260 420 1300 420 "" 0 0 0 "">
  <1180 420 1200 420 "" 0 0 0 "">
  <1300 500 1320 500 "" 0 0 0 "">
  <1380 500 1400 500 "" 0 0 0 "">
  <1180 380 1180 420 "" 0 0 0 "">
  <1180 380 1280 380 "" 0 0 0 "">
  <1400 380 1400 500 "" 0 0 0 "">
  <1340 380 1400 380 "" 0 0 0 "">
  <1270 500 1300 500 "" 0 0 0 "">
  <1180 420 1180 480 "" 0 0 0 "">
  <1180 480 1200 480 "" 0 0 0 "">
  <1300 500 1300 540 "" 0 0 0 "">
  <1400 500 1600 500 "" 0 0 0 "">
  <1600 500 1600 580 "" 0 0 0 "">
  <1600 640 1600 740 "" 0 0 0 "">
  <1300 600 1300 720 "" 0 0 0 "">
  <1460 660 1460 740 "" 0 0 0 "">
  <1420 660 1460 660 "" 0 0 0 "">
  <1340 660 1360 660 "" 0 0 0 "">
  <1460 740 1480 740 "" 0 0 0 "">
  <1340 620 1340 660 "" 0 0 0 "">
  <1340 620 1440 620 "" 0 0 0 "">
  <1500 620 1560 620 "" 0 0 0 "">
  <1540 740 1560 740 "" 0 0 0 "">
  <1560 740 1600 740 "" 0 0 0 "">
  <1560 620 1560 740 "" 0 0 0 "">
  <1430 740 1460 740 "" 0 0 0 "">
  <1340 660 1340 720 "" 0 0 0 "">
  <1340 720 1360 720 "" 0 0 0 "">
  <1260 760 1260 780 "" 0 0 0 "">
  <1260 760 1280 760 "" 0 0 0 "">
  <1340 760 1360 760 "" 0 0 0 "">
  <1300 720 1340 720 "" 0 0 0 "">
  <1600 740 1710 740 "" 0 0 0 "">
  <1710 740 1740 740 "" 0 0 0 "">
  <1710 620 1710 740 "" 0 0 0 "">
  <1710 620 1800 620 "" 0 0 0 "">
  <1600 500 1710 500 "" 0 0 0 "">
  <1710 500 1740 500 "" 0 0 0 "">
  <1710 500 1710 600 "" 0 0 0 "">
  <1710 600 1800 600 "" 0 0 0 "">
</Wires>
<Diagrams>
  <Rect 880 1239 498 359 3 #c0c0c0 1 10 1 0.1 1 1e+08 1 -0.540919 1 6 1 -1 0.5 1 315 0 225 "" "" "">
    <"In.v" #0000ff 0 3 0 0 0>
    <"Diff.v" #ff0000 0 3 0 0 0>
  </Rect>
  <Rect 1480 1239 498 359 3 #c0c0c0 1 10 1 0.1 1 1e+08 1 -1 0.5 1 1 -0.100118 1 4.34333 315 0 225 "" "" "">
    <"Pos.v" #0000ff 0 3 0 0 0>
    <"Neg.v" #ff0000 0 3 0 0 0>
  </Rect>
</Diagrams>
<Paintings>
</Paintings>

DAC输出:

<Qucs Schematic 0.0.18>
<Properties>
  <View=-56,169,1878,1394,0.909091,0,88>
  <Grid=10,10,1>
  <DataSet=DiffAmpOut.dat>
  <DataDisplay=DiffAmpOut.dpl>
  <OpenDisplay=1>
  <Script=DiffAmpOut.m>
  <RunScript=0>
  <showFrame=0>
  <FrameText0=Title>
  <FrameText1=Drawn By:>
  <FrameText2=Date:>
  <FrameText3=Revision:>
</Properties>
<Symbol>
</Symbol>
<Components>
  <GND * 1 40 660 0 0 0 0>
  <IProbe Neg 1 370 500 -26 16 0 0>
  <IProbe Pos 1 370 620 -26 16 0 0>
  <R R16 5 250 620 -9 10 0 2 "0 Ohm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <R R17 5 250 500 -9 10 0 2 "0 Ohm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <GND * 1 460 560 0 0 0 0>
  <R R19 5 550 680 -9 10 0 2 "1.65 kOhm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <C C2 5 550 620 -26 17 0 0 "5800 pF" 1 "" 0 "neutral" 0>
  <R R21 5 730 680 -9 10 0 2 "1.87 kOhm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <R R23 5 730 620 -9 10 0 2 "887 Ohm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <R R18 5 550 440 -9 10 0 2 "5.49 kOhm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <C C1 5 550 500 -26 17 0 0 "1800 pF" 1 "" 0 "neutral" 0>
  <R R20 5 730 440 -9 10 0 2 "6.19 kOhm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <R R22 5 730 500 -9 10 0 2 "2.94 kOhm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <C C5 5 890 680 -26 17 0 0 "22 uF" 1 "" 0 "neutral" 0>
  <OpAmp OP1 5 870 560 -26 -42 1 0 "1e6" 0 "15 V" 0>
  <C C3 5 890 620 -26 17 0 0 "1200 pF" 1 "" 0 "neutral" 0>
  <C C4 5 890 500 -26 17 0 0 "390 pF" 1 "" 0 "neutral" 0>
  <GND * 1 960 700 0 0 0 0>
  <GND * 1 1320 560 0 0 0 0>
  <VProbe Out 1 1310 540 28 -31 0 0>
  <C C6 5 1090 560 -26 17 0 0 "22 uF" 1 "" 0 "neutral" 0>
  <R R24 5 1170 560 -9 10 0 2 "1 kOhm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <R R25 5 1260 630 19 -8 0 3 "47.5 kOhm" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "US" 0>
  <GND * 1 1260 680 0 0 0 0>
  <GND * 1 1040 520 0 0 0 0>
  <VProbe Amp 1 1030 500 28 -31 0 0>
  <.DC DC1 5 30 730 0 39 0 0 "26.85" 0 "0.001" 0 "1 pA" 0 "1 uV" 0 "no" 0 "150" 0 "no" 0 "none" 0 "CroutLU" 0>
  <.AC AC1 5 30 780 0 39 0 0 "log" 1 "0.1 Hz" 1 "10 MHz" 1 "801" 1 "no" 0>
  <Vac V1 5 40 610 18 -26 0 1 "0 V" 1 "1 kHz" 1 "0" 0 "0" 0>
  <Vac V3 5 190 620 -26 18 0 0 "1 V" 1 "1 kHz" 1 "0" 0 "0" 0>
  <Vac V2 5 190 500 -26 -50 0 2 "1 V" 1 "1 kHz" 1 "0" 0 "0" 0>
</Components>
<Wires>
  <280 620 340 620 "" 0 0 0 "">
  <40 640 40 660 "" 0 0 0 "">
  <40 560 40 580 "" 0 0 0 "">
  <40 560 140 560 "" 0 0 0 "">
  <140 500 160 500 "" 0 0 0 "">
  <140 620 160 620 "" 0 0 0 "">
  <140 500 140 560 "" 0 0 0 "">
  <140 560 140 620 "" 0 0 0 "">
  <280 500 340 500 "" 0 0 0 "">
  <400 500 420 500 "" 0 0 0 "">
  <400 620 420 620 "" 0 0 0 "">
  <420 440 420 500 "" 0 0 0 "">
  <420 440 520 440 "" 0 0 0 "">
  <420 620 420 680 "" 0 0 0 "">
  <420 680 520 680 "" 0 0 0 "">
  <460 560 500 560 "" 0 0 0 "">
  <500 560 500 620 "" 0 0 0 "">
  <500 620 520 620 "" 0 0 0 "">
  <580 620 660 620 "" 0 0 0 "">
  <580 680 660 680 "" 0 0 0 "">
  <660 680 700 680 "" 0 0 0 "">
  <660 620 660 680 "" 0 0 0 "">
  <660 620 700 620 "" 0 0 0 "">
  <500 500 500 560 "" 0 0 0 "">
  <500 500 520 500 "" 0 0 0 "">
  <580 500 660 500 "" 0 0 0 "">
  <580 440 660 440 "" 0 0 0 "">
  <660 440 700 440 "" 0 0 0 "">
  <660 440 660 500 "" 0 0 0 "">
  <660 500 700 500 "" 0 0 0 "">
  <760 680 860 680 "" 0 0 0 "">
  <920 680 960 680 "" 0 0 0 "">
  <760 440 960 440 "" 0 0 0 "">
  <760 500 840 500 "" 0 0 0 "">
  <760 620 840 620 "" 0 0 0 "">
  <840 580 840 620 "" 0 0 0 "">
  <840 500 840 540 "" 0 0 0 "">
  <840 620 860 620 "" 0 0 0 "">
  <840 500 860 500 "" 0 0 0 "">
  <910 560 960 560 "" 0 0 0 "">
  <960 500 960 560 "" 0 0 0 "">
  <920 500 960 500 "" 0 0 0 "">
  <960 440 960 500 "" 0 0 0 "">
  <920 620 960 620 "" 0 0 0 "">
  <960 620 960 680 "" 0 0 0 "">
  <960 680 960 700 "" 0 0 0 "">
  <1120 560 1140 560 "" 0 0 0 "">
  <1200 560 1260 560 "" 0 0 0 "">
  <1260 560 1300 560 "" 0 0 0 "">
  <1260 560 1260 600 "" 0 0 0 "">
  <1260 660 1260 680 "" 0 0 0 "">
  <1000 520 1020 520 "" 0 0 0 "">
  <960 560 1000 560 "" 0 0 0 "">
  <1000 560 1060 560 "" 0 0 0 "">
  <1000 520 1000 560 "" 0 0 0 "">
</Wires>
<Diagrams>
  <Rect 300 1119 498 359 3 #c0c0c0 1 10 1 0.1 1 3e+06 1 -0.422698 1 4.66459 1 -1 0.5 1 315 0 225 "" "" "">
    <"Pos.i" #0000ff 0 3 0 0 0>
    <"Neg.i" #ff0000 0 3 0 0 0>
  </Rect>
  <Rect 880 1119 498 359 3 #c0c0c0 1 10 1 0.1 1 3e+06 1 -0.00012118 0.0002 0.00133304 1 -1 0.5 1 315 0 225 "" "" "">
    <"Amp.v" #0000ff 0 3 0 0 0>
    <"Out.v" #ff0000 0 3 0 0 0>
  </Rect>
</Diagrams>
<Paintings>
</Paintings>

您是否使用了正确的运算放大器?
安迪(aka)2014年

@Andyaka这是模拟。我使用了通用运算放大器模型,该模型默认情况下设置为内部增益为1e6,并且限幅为+ -15V。没有其他设置。物理运算放大器的选择并不重要。
AaronD 2014年

如果您必须知道,我正在用LM833设计真实的电路,但这与该仿真无关。我希望任何运放都能在此电路中做到这一点。
AaronD 2014年

Answers:


5

我喜欢这个问题。这是一个很好的示例,说明数据表原理图如何很好地显示概念,而不仅仅是按原样使用。

看一下滤波器的描述,似乎主要的概念是:音频通带中的响应平坦,ADC输入的源阻抗低,以2.7V的VQ为中心的工作以及20dB的衰减足以实现抗混叠。

2700pF的上限表示ADC是开关电容输入,没有任何缓冲器。在6MHz时,滤波器输出阻抗约为10欧姆。虽然使用诸如有损积分器之类的东西来获得衰减并以VQ为中心很容易,但输出阻抗会更高。

有时被称为“环路负载补偿”的放大器布置是为了应对运算放大器上的电容性负载。像这样的补偿具有可调的Q值,因此与简单的RC相比,过渡到降落的过渡要快得多。为了获得所需的平坦度,通常需要进行一些调整。在这种情况下,虽然看起来原理图中存在错误,但导致零件值出现峰值。

这是带有参考标记的示意图:

在此处输入图片说明

通过R4的连接,您可以看到我认为原理图出了错的地方。但是,在深入探讨之前,让我们先看看电路应该如何工作。

在容性负载下,运算放大器将失去相位裕量。优质的运算放大器通常具有约60度的相位裕度。但是即使是100pF的负载也可能导致相位裕度降低到40或45度,从而导致峰值响应。R2,C2和R3的相加使放大器能够保持负载的相位裕量。C2回滚带宽,增加相位裕量。R3通过添加C4有助于最小化相位裕量损失。R2提供低频反馈以纠正R3引起的任何通带误差。

电路响应可以通过调整C2的值来调整。将C2增大将降低滤波器的Q。在低频下,R2的环路占主导地位,但在高频下(C2阻抗低于R2 + R3),C2环路占主导地位。然后,R3两端的压降未得到补偿,信号被R3 C4衰减,并最终导致放大器衰减。

仅考虑具有理想放大器的同相部分。传递函数(不包括C1 R1的零)为:

C2小号R2+R3+1VoVin =C2s(R2+R3)+1C2C4R2R3s2+s(C2R2+C2R3)+1

分母看起来可疑地像是包含Q和的经典二次形式,因此可以得出它们。ωo

Q =R2R3C4(1R2+1R3)C2(R2+R3)3/2

ωo =1R2+1R3C2C4(R2+R3)

由于使用了理想的放大器来使事情变得易于管理,因此当C2变为零时,Q变为无穷大。这将不是问题,因为我们只关心低于放大器带宽的频率。对于真实的放大器,Q将随放大器增益而下降。插入R2,R3和C4的值,我们可以将Q绘制为C2的函数。

在此处输入图片说明

Q随着C2值的增加而减小。如果放大器的峰值太大,只需增加C2会使响应太平坦。

现在,看曲线,看起来470pF的C2的Q约为0.8。那将是相当平淡的反应。发生了什么?

在数据表中,原理图显示R4连接到U1输出。这有2件坏事。首先,在经过一些麻烦以补偿R3和R6的低频影响后,将R4连接到U1输出会增加R3的回落。如果查看滤波器的输出阻抗,您会发现这是正确的。其次,它导致在470pF的C2和C3处出现峰值(Q的峰值约为300pF,大于或小于Q的减小)。如果R4通过R2,R3和C4连接到节点,则Q会按预期运行。同样,滤波器的输出阻抗会在整个音频通带内保持非常低的水平,直到衰减并遵循C4阻抗为止。


哇,很好的答案!我将要废弃其电路,并通过一个简单的交流耦合差分电阻分压器放置较高电压的缓冲信号,同时还要保留输入电容,用于电荷存储和最终的RC滚降。但是,随着您对它应该如何工作以及正确完成工作的解释,我认为我更喜欢您更正后的缓冲区。
AaronD 2015年

但是,我要提出一个问题:-20dB足以抗锯齿。如果高频分量仅是原始信号的一小部分,则可能是正确的,但外部噪声不是。选择具有〜100dB S / N的24位ADC而不是16位ADC的全部目的是在瞬间注意到至少具有16位质量的记录,而对信号电平的考虑最少。考虑到信号电平降低后高频噪声不变,我想我希望在6MHz时几乎不产生噪声,而在20kHz时获得最小的影响,并获得合理的电路复杂度。
AaronD 2015年

@AaronD-我想知道-20dB是否足够。我的经验是使用Flash和SAR ADC。但是,西格玛三角洲的理论似乎在于,通过过度采样,积分和抽取,可以形成量化噪声,从而将噪声从通带推到更高的频率。因此,通带噪声较低,而采样频率附近较高。如果约为-20dB,则抗混叠所留下的任何噪声都将在整形中丢失。看看analog.com/static/imported-files/tutorials/MT-022.pdf一开始,如果您还没有。测试并确定是否为真。祝好运。
gsills 2015年

是的,也许是。它从Fs / 2开始混叠,对于Fs = 12MHz,Fs / 2为6MHz,但是数字滤波器仍将其移除,直到达到Fs-BW左右。只有这样,它才会出现在所需的信号中,到那时,它就大大低于来自同一模拟滤波器的-20dB。
AaronD 2015年

2

Cirrus实际上有一个描述电路意图的应用笔记:http : //www.cirrus.com/en/pubs/appNote/an241-1.pdf

根据该文档中的描述,您是对的,峰不应该在那里。

通常,该模型在两个地方可能是错误的:

  1. ADC输入和DAC输出特性未建模。电路可能期望一定的源/负载。

  2. 所用的运算放大器模型可能不足以用于该电路。我发现某些超出1 MHz的电路需要比典型的通用模型更高的增益带宽产品。该ADC的评估板文档显示了他们使用该电路与2068运算放大器,并具有27 MHz的增益带宽产品。

编辑:更深入地研究后,此部分的评估板上使用了确切的值。因此,我的建议是首先使用与它们相同的零件2068对其进行建模。这有望显示出正确的操作。

EDIT2:我通过QUCS来运行ADC电路,并且它们没有用于实际运算放大器的合适的香料模型。凌力尔特(Linear Technology)的LT香料是一个非常好的免费香料模拟器。如预期的那样,在电路中通过该电路会产生良好的平坦响应。(如果在新选项卡中打开此图片,它会爆炸,因此您可以查看详细信息)。

ADC电路交流扫描结果


好发现!它更好地说明了该目标,并提供了多种情况的示例,但并未详细说明电路的工作原理。(我猜他们认为,如果您有足够的知识来了解他们的规格,那么您是否有足够的知识来弄清楚?)我发现,如果卸下运放(开路)周围的470p电容,模拟会做什么?我期望,但是当它们在那里时,我会在〜300kHz处获得〜4dB的峰值。难道它们是在现实世界中添加的产品,以帮助他们测试过的特定放大器,而不一定是我所需要的?
AaronD 2014年

另外,由于您找到了一个用于ADC缓冲器的缓冲器,因此我寻找了一个用于DAC的互补缓冲器。没有。至少不是完全匹配。但是,我发现的拓扑结构与数据手册中的拓扑结构相同,并且其解释级别与ADC注释相同。但这在选择组件值以保持CMRR方面做得更好,并且不会像数据表中的那样出现错误。(cirrus.com/en/pubs/appNote/AN048Rev2.pdf
AaronD

我建议先将2068的模型放入您的仿真中。他们提到的470 pF电容器要么用于稳定性,要么用于低通滤波器。我本来假设后者,但是现在我不太确定。
穴居人2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.