Directamente de la hoja de datos: ¿Es este realmente un circuito de filtro sensible?

11

Cirrus Logic CS42426-CQZ es un CODEC de audio que quiero usar en Una tarjeta de sonido USB personalizada. Puede descargar la hoja de datos desde allí.

En la página 61, la hoja de datos tiene un circuito recomendado para cada canal A / D y D / A, pero no veo el propósito de tal complejidad. Claro, se están convirtiendo en diferenciales y de un solo extremo, pero también hay formas más simples de hacerlo.

Copié su esquema en algún software de simulación de código abierto ( enlace ) y la respuesta de frecuencia ni siquiera coincide con el propósito establecido . Pero al menos la respuesta audible es algo plana:

ADC en: (Deacuerdo,confíanenelCMRRdelpropioADCcomopartedelfiltroanti-aliasing.Nomegustaesaidea).

DACOut:

Supongo que realmente son serios acerca del uso de esos circuitos en una aplicación del mundo real, pero algo no parece correcto al respecto. Como dije, la respuesta audible es bastante plana, por lo que probablemente suene bien sin teléfonos celulares u otros RF, pero creo que puedo hacerlo mejor con los clásicos de OpAmps 101. ¿Están de acuerdo?

¿Existe realmente una buena razón para que un ADC de audio aumente de ganancia nominal a 20 kHz a un pico a 300 kHz? ¿O para que el DAC haga lo mismo desde 20Hz a alrededor de 0.5Hz?

Para completar, aquí están los archivos de simulación. Cópielos en archivos de texto simple, cambie la extensión a .sch si a su sistema le importa, y ábralos en Qucs:

ADC In:

<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 Out:

<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>
    
pregunta AaronD

2 respuestas

4

Me gusta esta pregunta. Es un buen ejemplo de cómo los esquemas de la hoja de datos son excelentes para mostrar conceptos, pero no solo para usarlos como están.

Mirando la descripción del filtro, parece que los conceptos principales son: respuesta plana en la banda de paso de audio, baja impedancia de la fuente a las entradas ADC, operación centrada alrededor de un VQ de 2.7V, y una atenuación de 20dB es adecuada para anti-aliasing.

El límite de 2700pF implica que el ADC es una entrada de capacitor conmutado, sin ningún búfer. A 6 MHz, eso es aproximadamente 10 ohmios de la impedancia de salida del filtro. Si bien sería fácil usar algo como un integrador con pérdidas para obtener la atenuación y el centrado alrededor de VQ, la impedancia de salida sería mayor.

La disposición del amplificador, a veces llamada "en la compensación de carga del bucle" es para hacer frente a la carga capacitiva en los OpAmps. La compensación de este tipo tiene una Q ajustable, de modo que la transición a la caída puede ser mucho más nítida que una simple RC. A menudo se requiere una cierta cantidad de ajuste para obtener la planitud deseada. En este caso, aunque parece que hay un error en el esquema que causó un pico en los valores de las partes.

Aquí hay un esquema con designadores de referencia:

Puedesverdondecreoqueelesquemavamal,conlaconexióndeR4.Pero,antesdeentrareneso,repasemoscómodeberíafuncionarelcircuito.

Conlacargacapacitiva,unOpAmpperderáelmargendefase.UnbuenOpAmpnormalmentetendráunos60gradosdemargendefase.Peroinclusounacargade100pFpuedehacerqueelmargendefasedisminuyaa40o45grados,loqueresultaenunarespuestapico.LaadicióndeR2,C2yR3permitequeelamplificadormantengaelmargendefaseconlacarga.C2recuperaelanchodebanda,aumentandoelmargendefase.R3ayudaaminimizarlapérdidademargendefaseconlaadicióndeC4.R2proporcionaretroalimentacióndebajafrecuenciaparacorregircualquiererrordebandadepasocausadoporR3.

LarespuestadelcircuitosepuedeajustarajustandoelvalordeC2.HacerC2másgrandebajarálaQdelfiltro.Enfrecuenciasbajas,elbucledeR2domina,peroelbucleC2dominaenfrecuenciasmásaltasdondelaimpedanciadeC2esmenorqueR2+R3.Entonces,lacaídaatravésdeR3noestácompensadaylaseñalseatenúamedianteR3C4ylaeventualdesactivacióndelamplificador.

Consideresololaseccióndenoinversiónconamplificadorideal.Funcióndetransferencia,dejandodeladoelcerodeC1R1sería:

\$\frac{\text{Vo}}{\text{Vin}}\$=\$\frac{\text{C2}s(\text{R2}+\text{R3})+1}{\text{C2}\text{C4}\text{R2}\text{R3}s^2+s(\text{C2}\text{R2}+\text{C2}\text{R3})+1}\$

EldenominadorseparecesospechosamentealaformacuadráticaclásicaquecontieneQy\$\omega_o\$,asíquederiveesos.

Q=\$\frac{\text{R2}\text{R3}\sqrt{\text{C4}\left(\frac{1}{\text{R2}}+\frac{1}{\text{R3}}\right)}}{\sqrt{\text{C2}}(\text{R2}+\text{R3})^{3/2}}\$

\$\omega_o\$=\$\frac{\sqrt{\frac{1}{\text{R2}}+\frac{1}{\text{R3}}}}{\sqrt{\text{C2}\text{C4}(\text{R2}+\text{R3})}}\$

Dadoqueelamplificadoridealseusóparahacerlascosasmásmanejables,QvaalinfinitocuandoC2vaacero.Estonoseráunproblemayaquesolonospreocupanlasfrecuenciaspordebajodelanchodebandadelamplificador.Conunamplificadorreal,Qcaeríaconlagananciadelamplificador.AlconectarlosvaloresdeR2,R3yC4,podemostrazarQcomounafuncióndeC2.

Q disminuye a medida que aumenta el valor de C2. Si el amplificador es demasiado puntiagudo, simplemente incremente C2 para aplanar la respuesta.

Ahora, mirando la curva, parece que C2 de 470pF tendría una Q de ~ 0.8. Esa sería una respuesta bastante plana. ¿Que pasó?

En la hoja de datos, el diagrama muestra R4 conectado a la salida U1. Esto hace 2 cosas malas. Primero, después de tener algunos problemas para compensar los efectos de baja frecuencia de R3 y R6, la conexión de R4 a U1 out agrega la entrada de R3. Si observa la impedancia de salida del filtro, verá que es cierto. En segundo lugar, hace que se produzcan picos con C2 y C3 de 470pF (el pico de Q es alrededor de 300pF, más o menos que Q disminuye). Si R4 está conectado al nodo con R2 R3 y C4, Q actúa como se espera. Además, la impedancia de salida del filtro se mantendrá muy baja a través de la banda de paso de audio, hasta que se descargue y luego siga la impedancia C4.

    
respondido por el gsills
2

Cirrus en realidad tiene una nota de aplicación que describe la intención de los circuitos: enlace

De las descripciones en ese documento, tienes razón en que los picos no deberían estar allí.

En general, el modelo podría estar equivocado en dos lugares:

  1. Las características de entrada de ADC y salida de DAC no se están modelando. Los circuitos pueden esperar una cierta fuente / carga.

  2. El modelo de amplificador operacional utilizado puede no ser suficiente para este circuito. Descubrí que algunos circuitos que salen más allá de 1 MHz necesitan un producto de ganancia de BW superior al que ofrecen los modelos genéricos típicos. La documentación de la placa de evaluación para este ADC muestra que utilizan este circuito con un amplificador operacional 2068 que tiene un producto de ganancia de 27 MHz BW.

EDITAR: Después de profundizar, los valores exactos se utilizan en su placa de evaluación para esta parte. Por lo tanto, mi recomendación es que primero lo modeles con la misma parte que están usando, el 2068. Esperemos que esto muestre la operación correcta.

EDIT2: Corrí el circuito ADC a través de QUCS, y no tienen los modelos de especias adecuados para los amplificadores operacionales reales. La especia LT de Linear Technology es un muy buen simulador de especias gratis. Ejecutar el circuito por allí da una respuesta plana agradable como se predijo. (Si abres esta imagen en una nueva pestaña, explota para que puedas ver los detalles).

    
respondido por el caveman

Lea otras preguntas en las etiquetas