Cirrus Logic CS42426-CQZ adalah audio CODEC yang ingin saya gunakan dalam kartu suara USB khusus. Anda dapat mengunduh datasheet dari sana.
Pada halaman 61, lembar data memiliki rangkaian yang disarankan untuk setiap saluran A / D dan D / A, tetapi saya gagal melihat tujuan kerumitan tersebut. Tentu, mereka mengonversi antara diferensial dan satu ujung, tetapi ada cara yang lebih sederhana untuk melakukannya juga.
Saya menyalin skema mereka ke beberapa perangkat lunak simulasi open-source ( http://qucs.sourceforge.net/ ) dan respon frekuensi bahkan tidak cocok dengan tujuan yang dinyatakan. Tetapi paling tidak respon yang terdengar agak datar:
ADC In: (Oke, jadi mereka mengandalkan CMRR dari ADC itu sendiri sebagai bagian dari filter anti-aliasing. Jangan suka gagasan itu.)
DAC Out:
Saya berasumsi bahwa mereka benar-benar serius menggunakan sirkuit itu dalam aplikasi dunia nyata, tetapi ada sesuatu yang tidak beres tentang itu. Seperti yang saya katakan, respon yang terdengar cukup datar, jadi mungkin akan terdengar oke tanpa ponsel atau RF lain, tapi saya pikir saya bisa melakukan yang lebih baik dengan klasik lama dari OpAmps 101. Kalian setuju?
Apakah benar-benar ada alasan bagus untuk memiliki ADC audio naik dari nominal-gain di 20kHz ke puncak di 300kHz? Atau untuk DAC melakukan hal yang sama dari 20Hz menjadi sekitar 0,5Hz?
Untuk kelengkapan, berikut adalah file-file simulasi. Salin ke file teks biasa, ubah ekstensi menjadi .sch jika sistem Anda peduli, dan buka di 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>
sumber
Jawaban:
Saya suka pertanyaan ini. Ini adalah contoh yang bagus tentang bagaimana skema lembar data sangat bagus untuk menunjukkan konsep, tetapi tidak hanya digunakan apa adanya.
Melihat deskripsi filter, tampaknya konsep utamanya adalah: respons datar pada pita lulus audio, impedansi sumber rendah ke input ADC, operasi yang berpusat di sekitar VQ sebesar 2,7V, dan pelemahan 20dB cukup untuk anti-aliasing .
Tutup 2700pF menyiratkan bahwa ADC diaktifkan input kapasitor, tanpa buffer apa pun. Pada 6MHz itu sekitar 10 Ohm dari impedansi keluaran filter. Meskipun akan mudah untuk menggunakan sesuatu seperti integrator lossy untuk mendapatkan redaman dan berpusat di sekitar VQ, impedansi keluaran akan lebih tinggi.
Pengaturan penguat, kadang-kadang disebut "dalam kompensasi beban loop" adalah untuk mengatasi pemuatan kapasitif pada OpAmps. Kompensasi seperti ini memiliki Q yang bisa diatur sehingga transisi ke roll-off bisa jauh lebih tajam daripada RC sederhana. Seringkali diperlukan sejumlah penyetelan untuk mendapatkan kerataan yang diinginkan. Dalam hal ini meskipun sepertinya ada kesalahan dalam skema yang menyebabkan memuncak dengan nilai-nilai bagian.
Berikut skema dengan penunjuk referensi:
Anda dapat melihat di mana saya pikir skematisnya salah, dengan koneksi R4. Tapi, sebelum membahasnya, mari kita bahas bagaimana sirkuit seharusnya bekerja.
Dengan pemuatan kapasitif, sebuah OpAmp akan kehilangan fasa. OpAmp yang baik biasanya akan memiliki sekitar 60 derajat fasa. Tetapi bahkan beban 100pF dapat menyebabkan fasa menurun hingga 40 atau 45 derajat, menghasilkan respons yang memuncak. Penambahan R2, C2, dan R3 memungkinkan penguat untuk mempertahankan batas fasa dengan beban. C2 menggulung bandwidth kembali, meningkatkan fasa. R3 membantu meminimalkan kehilangan fasa dengan penambahan C4. R2 memberikan umpan balik frekuensi rendah untuk memperbaiki kesalahan passband yang disebabkan oleh R3.
Respons sirkuit dapat disetel dengan menyesuaikan nilai C2. Membuat C2 lebih besar akan menurunkan Q filter. Pada frekuensi rendah, loop R2 mendominasi, tetapi loop C2 mendominasi pada frekuensi yang lebih tinggi di mana impedansi C2 lebih rendah dari R2 + R3. Kemudian drop di R3 tidak dikompensasi dan sinyal dilemahkan oleh R3 C4 dan rolloff penguat akhirnya.
Pertimbangkan hanya bagian non-pembalik dengan amplifier yang ideal. Fungsi transfer, meninggalkan nol C1 R1 adalah:
Karena penguat ideal digunakan untuk membuat hal-hal dapat dikelola, Q berubah menjadi tak terhingga ketika C2 menjadi nol. Ini tidak akan menjadi masalah karena kami hanya peduli tentang frekuensi di bawah bandwidth amplifier. Dengan amplifier nyata, Q akan jatuh dengan penguatan amplifier. Dengan memasukkan nilai untuk R2, R3, dan C4 kita dapat memplot Q sebagai fungsi C2.
Q berkurang karena nilai C2 meningkat. Jika amplifier terlalu pucat, cukup tambahkan C2 untuk meratakan respon.
Sekarang, melihat kurva, sepertinya C2 dari 470pF akan memiliki Q ~ 0,8. Itu akan menjadi respons yang cukup datar. Apa yang terjadi?
Dalam lembar data acara skema R4 terhubung ke output U1. Ini melakukan 2 hal buruk. Pertama, setelah mengalami beberapa masalah untuk mengkompensasi efek frekuensi rendah R3 dan R6, menghubungkan R4 ke U1 menambahkan R3 drop kembali. Jika Anda melihat impedansi keluaran filter Anda akan melihat itu benar. Kedua, ini menyebabkan memuncak terjadi dengan C2 dan C3 dari 470pF (puncak Q adalah sekitar 300pF, lebih atau kurang dari Q menurun). Jika R4 terhubung ke node dengan R2 R3 dan C4, Q bertindak seperti yang diharapkan. Juga, filter impedansi output akan tetap sangat rendah melalui passband audio, sampai rolloff dan kemudian mengikuti impedansi C4.
sumber
Cirrus sebenarnya memiliki catatan aplikasi yang menjelaskan tujuan dari rangkaian: http://www.cirrus.com/en/pubs/appNote/an241-1.pdf
Dari uraian dalam dokumen itu, Anda benar bahwa puncak tidak seharusnya ada di sana.
Secara umum, model bisa salah di dua tempat:
Input ADC dan karakteristik output DAC tidak dimodelkan. Sirkuit mungkin mengharapkan sumber / beban tertentu.
Model op amp yang digunakan mungkin tidak cukup untuk rangkaian ini. Saya telah menemukan bahwa beberapa rangkaian yang melampaui 1 MHz membutuhkan produk gain-BW yang lebih tinggi daripada yang diberikan oleh model umum. Dokumentasi papan evaluasi untuk ADC ini menunjukkan mereka menggunakan sirkuit ini dengan 2068 op amp yang memiliki produk gain-BW 27 MHz.
EDIT: Setelah melihat lebih dalam, nilai yang tepat digunakan pada papan evaluasi mereka untuk bagian ini. Jadi rekomendasi saya adalah memodelkannya dengan bagian yang sama dengan yang mereka gunakan, tahun 2068. Mudah-mudahan ini menunjukkan operasi yang benar.
EDIT2: Saya menjalankan sirkuit ADC melalui QUCS, dan mereka tidak memiliki model rempah yang tepat untuk op amp nyata. Rempah-rempah LT Linear Technology adalah simulator rempah-rempah gratis yang sangat bagus. Menjalankan sirkuit melalui sana memberikan respons datar yang bagus seperti yang diperkirakan. (Jika Anda membuka gambar ini di tab baru, itu meledak sehingga Anda dapat melihat detailnya).
sumber