Cirrus Logic CS42426-CQZ to kodek audio, którego chcę używać w niestandardowej karcie dźwiękowej USB. Stamtąd możesz pobrać arkusz danych.
Na stronie 61 arkusz danych ma zalecany obwód dla każdego kanału A / D i D / A, ale nie widzę celu takiej złożoności. Jasne, konwertują między różnicowym a single-ended, ale są też prostsze sposoby, aby to zrobić.
Skopiowałem ich schemat do jakiegoś oprogramowania symulacyjnego typu open source ( http://qucs.sourceforge.net/ ), a pasmo przenoszenia nie odpowiada nawet podanemu celowi. Ale przynajmniej słyszalna odpowiedź jest dość płaska:
ADC W: (Okej, więc polegają na CMRR samego ADC jako części filtra antyaliasingu. Nie podoba mi się ten pomysł.)
Wyjście DAC:
Zakładam, że tak naprawdę poważnie podchodzą do używania tych obwodów w aplikacjach w świecie rzeczywistym, ale coś w tym nie wydaje się w porządku. Tak jak powiedziałem, odpowiedź dźwiękowa jest dość płaska, więc prawdopodobnie będzie dobrze brzmiała bez telefonów komórkowych lub innych RF, ale myślę, że mogę zrobić lepiej ze starymi klasykami z OpAmps 101. Zgadzacie się?
Czy naprawdę jest dobry powód, aby wzrost ADC audio z nominalnego wzmocnienia przy 20 kHz do szczytu przy 300 kHz? A może DAC robi to samo od 20 Hz do około 0,5 Hz?
Dla kompletności, oto pliki symulacji. Skopiuj je do zwykłych plików tekstowych, zmień rozszerzenie na .sch, jeśli twój system się tym przejmuje, i otwórz je w Qucs:
ADC w:
<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>
Wyjście 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>
źródło
Odpowiedzi:
Podoba mi się to pytanie. To bardzo dobry przykład tego, jak schematy arkuszy danych świetnie nadają się do przedstawiania pojęć, ale nie można ich tak po prostu używać.
Patrząc na opis filtra, wydaje się, że głównymi pojęciami są: płaska odpowiedź w paśmie przenoszenia audio, niska impedancja źródła na wejściach ADC, działanie skoncentrowane wokół VQ 2,7 V, a tłumienie 20 dB jest wystarczające do wygładzania krawędzi .
Czapka 2700pF oznacza, że ADC jest przełączanym wejściem kondensatora, bez bufora. Przy 6 MHz to około 10 omów impedancji wyjściowej filtra. Podczas gdy byłoby łatwo zastosować coś w rodzaju integratora stratnego, aby uzyskać tłumienie i centrowanie wokół VQ, impedancja wyjściowa byłaby wyższa.
Układ wzmacniacza, czasami nazywany „w kompensacji obciążenia pętli”, ma na celu radzenie sobie z obciążeniem pojemnościowym OpAmps. Taka kompensacja ma regulowane Q, dzięki czemu przejście do zejścia może być znacznie ostrzejsze niż zwykły RC. Często wymagane jest pewne dostrojenie, aby uzyskać pożądaną płaskość. W tym przypadku wygląda jednak na błąd na schemacie, który spowodował szczytowanie z wartościami części.
Oto schemat z referencyjnymi desygnatorami:
Możesz zobaczyć, gdzie myślę, że schemat idzie źle, z połączeniem R4. Ale zanim przejdziemy do tego, zastanówmy się, jak powinien działać obwód.
Przy obciążeniu pojemnościowym OpAmp traci margines fazowy. Dobry OpAmp będzie zazwyczaj miał około 60 stopni marginesu fazowego. Ale nawet obciążenie 100 pF może spowodować spadek marginesu fazy do 40 lub 45 stopni, co skutkuje szczytową odpowiedzią. Dodanie R2, C2 i R3 pozwala wzmacniaczowi zachować margines fazowy przy obciążeniu. C2 cofa pasmo, zwiększając margines fazy. R3 pomaga zminimalizować utratę marginesu fazy dzięki dodaniu C4. R2 zapewnia sprzężenie zwrotne niskiej częstotliwości w celu skorygowania dowolnego błędu pasma przepustowego spowodowanego przez R3.
Odpowiedź obwodu można dostroić, dostosowując wartość C2. Zwiększenie C2 obniży Q filtra. Przy niskich częstotliwościach dominuje pętla R2, ale pętla C2 dominuje na wyższych częstotliwościach, gdzie impedancja C2 jest mniejsza niż R2 + R3. Następnie spadek na R3 jest nieskompensowany, a sygnał jest tłumiony przez R3 C4 i ewentualne stoczenie wzmacniacza.
Rozważ tylko nieodwracającą się sekcję z idealnym wzmacniaczem. Funkcja przenoszenia, pomijając zero C1 R1, byłaby:
C2s(R2+R3)+1VoVin =C2s(R2+R3)+1C2C4R2R3s2+s(C2R2+C2R3)+1
Mianownik wygląda podejrzanie jak klasyczna forma kwadratowa zawierająca Q i , więc je.ωo
Q =R2R3C4(1R2+1R3)√C2√(R2+R3)3/2
√ωo =1R2+1R3√C2C4(R2+R3)√
Ponieważ idealny wzmacniacz został użyty do zarządzania, Q przechodzi w nieskończoność, a C2 w zero. Nie będzie to problemem, ponieważ dbamy tylko o częstotliwości poniżej szerokości pasma wzmacniacza. Przy prawdziwym wzmacniaczu Q wypadłoby ze wzmocnieniem wzmacniacza. Podłączając wartości R2, R3 i C4, możemy wykreślić Q jako funkcję C2.
Q maleje wraz ze wzrostem wartości C2. Jeśli wzmacniacz jest zbyt szczytowy, po prostu zwiększ C2, aby spłaszczyć odpowiedź.
Teraz, patrząc na krzywą, wygląda na to, że C2 z 470pF miałoby Q wynoszące ~ 0,8. To byłaby dość płaska reakcja. Co się stało?
W arkuszu danych schematycznie pokazano R4 podłączony do wyjścia U1. To robi 2 złe rzeczy. Po pierwsze, po zadaniu sobie trudu, aby zrekompensować efekty niskich częstotliwości R3 i R6, podłączenie R4 do wyjścia U1 powoduje powrót R3 z powrotem. Jeśli spojrzysz na impedancję wyjściową filtra, zobaczysz, że to prawda. Po drugie, powoduje szczytowanie przy C2 i C3 wynoszącym 470pF (szczyt Q wynosi około 300pF, mniej więcej niż to maleje Q). Jeśli R4 jest podłączony do węzła za pomocą R2 R3 i C4, Q działa zgodnie z oczekiwaniami. Ponadto impedancja wyjściowa filtra pozostanie bardzo niska przez pasmo przepustowe audio, aż do wycofania, a następnie zmiany impedancji C4.
źródło
Cirrus faktycznie ma notę aplikacyjną opisującą zamiar obwodów: http://www.cirrus.com/en/pubs/appNote/an241-1.pdf
Z opisów w tym dokumencie masz rację, że szczytów nie powinno tam być.
Ogólnie model może być błędny w dwóch miejscach:
Wejścia ADC i charakterystyki wyjścia DAC nie są modelowane. Obwody mogą oczekiwać określonego źródła / obciążenia.
Zastosowany model wzmacniacza operacyjnego może być niewystarczający dla tego obwodu. Odkryłem, że niektóre obwody, które wychodzą poza 1 MHz, wymagają produktu o wyższym wzmocnieniu BW niż typowe modele ogólne. Dokumentacja płytki ewaluacyjnej dla tego ADC pokazuje, że używa tego obwodu ze wzmacniaczem operacyjnym 2068, który ma produkt o wzmocnieniu 27 MHz BW.
EDYCJA: Po głębszym przyjrzeniu się, dokładne wartości są używane na ich tablicy ewaluacyjnej dla tej części. Więc moim zaleceniem jest, aby najpierw modelować tę samą część, której używają, 2068. Mam nadzieję, że powinno to pokazać prawidłowe działanie.
EDIT2: Uruchomiłem obwód ADC przez QUCS i nie mają one odpowiednich modeli przypraw dla prawdziwych wzmacniaczy operacyjnych. Przyprawa LT Linear Technology to bardzo dobry darmowy symulator przypraw. Przebieganie obwodu zapewnia ładną płaską reakcję zgodnie z przewidywaniami. (Jeśli otworzysz to zdjęcie w nowej karcie, zostanie wysadzone, abyś mógł zobaczyć szczegóły).
źródło