Audio stereo 8-Bit R-2R DAC, apakah ini cara yang tepat untuk melakukannya?

8

Saya baru di bidang teknik listrik dan proyek pertama yang ingin saya lakukan adalah membuat audioconverter digital ke analog. Saya telah menemukan bahwa cara yang baik untuk melakukan ini adalah dengan menggunakan struktur R-2R untuk konversi.

Saya ingin menantang diri saya sendiri dan mulai dari awal dengan bagian digital dari rangkaian, selain fakta bahwa saya tidak dapat menemukan solusi di web untuk membantu membangunnya. Saya punya program simulasi rangkaian dan mulai mendesain, sambil mencari web untuk semua jenis elektronik yang mungkin Anda gunakan untuk itu.

Sekarang saya pikir saya mungkin berada di suatu tempat di lingkungan memahami prinsip DAC, tetapi akan sangat membantu jika seseorang yang berpengalaman dapat membantu saya memeriksa apakah saya benar-benar mendapatkannya. Apakah ini tempat yang tepat untuk meminta itu?

Jika demikian, inilah sirkuit yang telah saya rancang: Audio stereo 8-Bit R-2R DAC

Saya telah menggunakan register geser dengan kait keluaran untuk setiap saluran dan menghubungkan Q7S dari satu ke yang lain untuk memberi makan data. Apakah benar file audio berganti saluran kiri dan kanan, atau sebaliknya, dalam blok? misal dalam file 8-bit: 0010 0111 untuk kiri berikut 0010 0110 untuk kanan?

Register shift yang saya gunakan di sini adalah 74HC595s. Saat menggeser-in bit bukan pin akan (sebentar) aktif. Ketika kait [pin STCP] dipicu, bit dapat ditransfer dari register geser ke register penyimpanan, di mana mereka akan langsung mengeluarkan nilainya ke pin yang sesuai dan tetap aktif sampai 16 bit berikutnya diizinkan masuk.

Lalu ada kristal, yang saya gunakan sinyal gelombang persegi untuk meniru satu dengan frekuensi berosilasi yang tepat: 24.576MHz. Ini memberi makan penghitung di mana frekuensi dibagi untuk menghasilkan frekuensi yang dibutuhkan DAC saya. Dalam hal ini frekuensi sampel harus 192.000 kHz dan oleh karena itu frekuensi pengubahan data harus 3.02MHz (192.000 x 16 bit). Kecepatan clock 192.000kHz digunakan untuk memicu STCP.

Hal berikutnya yang ingin saya lakukan adalah mencari tahu cara memuat data dari sumber (Raspberry misalnya) melalui mungkin I2C ke buffer di DAC dan dari sana clock bit keluar ke sirkuit yang Anda lihat di sini.

Jika Anda pikir saya atau saya tidak di jalan yang benar, akan sangat membantu untuk memberi tahu saya.

Terima kasih! Rogier

Ngomong-ngomong, saya lupa menyebutkan bahwa DAC yang ingin saya bangun setidaknya 24-bit per saluran di 96kHZ. Hanya membutuhkan banyak ruang pada ancaman ini dan seharusnya tidak sulit untuk menambahkannya setelah itu. Itu prinsip yang sama.

Rogier Reerink
sumber
2
Proyek yang bagus dan sulit. Saya tidak membaca semua matematika Anda tetapi audio 8-bit tidak akan terdengar terlalu bagus. Anda harus bias ke setengah-pasokan yang membuat Anda dengan 7-bit di setiap sisi. Anda bisa lolos dengan ini pada pidato terkompresi di mana rentang dinamis sangat terbatas tetapi bagian pembicaraan yang tenang atau musik akan memiliki distorsi yang mengerikan karena ukuran langkah kasar dan respons logaritmik telinga. Dari memori, kualitas CD adalah 14-bit.
Transistor
1
@transistor walaupun tidak memenuhi syarat memiliki kesetiaan yang tinggi, audio 8-bit secara mengejutkan dapat didengarkan jika dilakukan dengan benar, terutama jika laju sampel di luar kisaran yang dapat didengar, yang tampaknya dalam kasus ini (dengan sampel yang cukup tinggi rate, Anda bahkan bisa lolos dengan output 1-bit ...). Kekhawatiran yang lebih serius adalah jika register geser yang diusulkan "buffer ganda", atau jika bit sesaat akan muncul pada output yang salah saat sedang dialihkan, sesuatu yang dapat menyebabkan distorsi substansial.
Chris Stratton
4
Mengenai komentar Anda tentang 24 bit per saluran - lupakan, lupakan sekarang, dan jangan buang waktu lagi untuk memikirkannya. Saya tidak akan masuk ke matematika untuk itu dalam komentar ini, tapi saya yakin itu muncul di sini beberapa waktu sebelumnya. Jika tidak, inilah yang dikatakan wikipedia: en.wikipedia.org/wiki/…
pipe
2
Menggunakan resistor 1%, Anda bisa mendapatkan resolusi 6-bit yang akurat (LSB = MSB / 64, jadi kesalahan 1% <nilai LSB / MSB), tetapi di atas itu Anda perlu memotong kemungkinan kesalahan per resistor menjadi setengah untuk setiap tambahan bit (0,25% untuk 8-bit) juga menjaga kesalahan resistor agar tidak terlalu menggigit bit paling signifikan Anda.
Robherc KV5ROB
2
223adalah angka kecil yang mengerikan. seperti 1 lebih dari 8 juta. Anda tidak akan dapat membuat DAC, dengan kecepatan konversi yang layak, yang memiliki output seakurat spesifikasi itu. yang jujur jumlah bit adalah Dynamic Range dalam dB (yang merupakan rasio S / N dalam dB ditambahkan ke jumlah dB headroom) dibagi dengan 6,02 dB / bit. itu akan memberi Anda jumlah bit jujur. yang terbaik yang saya lihat di industri masih sekitar 20 bit (atau sekitar 120 dB rentang dinamis).
robert bristow-johnson

Jawaban:

7
  • Ya, ini adalah persis tempat yang tepat untuk menanyakan pertanyaan Anda.
  • Ya, topografi R-2R adalah yang paling sederhana untuk merancang (dan saya pikir yang terbaik) cara untuk membuat DAC homebrew (tanpa menggunakan PWM).
  • Sedangkan untuk menantang dirimu sendiri, kedengarannya bagiku kau mungkin sama masokistiknya denganku (pujian untuk keberanian!). Ini adalah proyek yang sangat terlibat untuk pemula.
  • Senar resistor R-2R Anda (dan bisa dibilang op amp yang terpasang) sebenarnya ADALAH 8-bit DAC Anda

Inilah yang saya pikirkan:
Tangga yang diperbaiki

Sayangnya, halaman wikipedia pada R-2R ladder DACs salah ketika dikatakan bahwa tangga R-2R berfungsi sebagai pembagi saat ini dalam aplikasi ini. Sementara tangga R-2R dapat digunakan sebagai pembagi arus, sebenarnya berfungsi sebagai pembagi tegangan di sini. Berikut analisis terperinci.

Pertimbangkan saja LSB tangga dengan sendirinya:

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

Terlepas dari posisi sakelar, resistansi Thevenin dari pembagi tegangan sederhana ini hanya R. Nilai sumber tegangan Thevenin adalah 0V atau 1/2 × Vref.

Sekarang, pertimbangkan apa yang terjadi ketika Anda menambahkan tahap selanjutnya dari tangga R-2R:

skema

mensimulasikan rangkaian ini

Anda dapat melihat bahwa ini adalah jenis pembagi tegangan yang sama dengan yang kami miliki pada kasus pertama, kecuali bahwa jumlah kombinasi voltase telah meningkat. Namun, resistansi Thevenin dari sirkuit ini masih hanya R, dan sumber tegangan Thevenin sekarang 0/4, 1/4, 2/4 atau 3/4 × Vref.

Dengan induksi, Anda dapat melihat bahwa Anda dapat menambahkan sejumlah tahap ke tangga, dan satu-satunya efek adalah bahwa jumlah pilihan untuk nilai sumber tegangan Thevenin dikalikan 2 untuk setiap tahap. Resistansi sumber tetap sama persis untuk sejumlah tahap.

Jika impedansi beban tidak terbatas, tegangan output tangga akan sama persis dengan tegangan Thevenin. Tetapi jika beban memiliki nilai resistansi yang terbatas, satu-satunya efek adalah membuat pembagi tegangan dengan resistansi sumber Thevenin, menskalakan tegangan output dengan beberapa rasio tetap, tetapi tidak memiliki efek lain pada akurasi dasar atau linearitas DAC.


Perhatikan bahwa di sirkuit asli Rogier (yang ada dalam pertanyaan), opamps berada dalam konfigurasi pembalik, yang berarti bahwa output tangga R-2R terikat langsung ke tanah virtual. Ini berarti bahwa nilai output benar-benar arus yang mengalir melalui Rth (yang hanya R), dan arus ini juga mengalir melalui resistor umpan balik opamp. Tegangan keluaran dari opamp adalah tegangan apa pun yang diperlukan untuk membuat kedua arus sama, dan bekerja untuk -Rfb / R × Vth. Karena ia menggunakan resistor umpan balik dari 2R, output akhirnya menjadi -2 × Vth.


Tampaknya ada beberapa kebingungan tentang apakah tangga R-2R digunakan sebagai pembagi tegangan atau pembagi arus, jadi inilah ilustrasi tentang bagaimana tangga yang terakhir dapat bekerja, untuk menunjukkan perbedaan utama antara ini dan sirkuit OP.

skema

mensimulasikan rangkaian ini

Perhatikan bahwa arus yang mengalir melalui resistor 2R berbobot biner. Ini berfungsi karena hambatan efektif yang melihat ke kanan dari salah satu persimpangan rangkap tiga juga tepat 2R. Oleh karena itu, arus yang mengalir dari kiri selalu membagi rata antara cabang bawah dan cabang kanan.

Perhatikan bahwa asumsi utama di sini adalah bahwa semua kaki terikat pada tegangan yang sama (nol, dalam hal ini). Menarik juga untuk dicatat bahwa voltase pada node junction juga berbobot biner.

Ini dapat digunakan untuk membangun DAC arus-keluaran sebagai berikut:

skema

mensimulasikan rangkaian ini

Arus pada resistor dalam rangkaian ini persis sama dengan diagram sebelumnya, karena terlepas dari posisi masing-masing sakelar, resistor yang terkait terhubung baik ke ground nyata pada Iout¯ bus, atau ke tanah virtual di Internet Ioutbis. Arus pada dua bus selalu bertambah hingga Iref. Sebuah opamp dapat mengubah arus keluaran ke tegangan, dan rentang tegangan hanya -Iref × R7.

Dave Tweed
sumber
Sejujurnya, aku masih belum benar-benar tahu apa yang dilakukan seorang opamp dan mengapa aku membutuhkannya di sini. Apa yang dilakukannya (menurut perangkat lunak simulasi) adalah membuat sinyal positif keluar dari tangga R-2R negatif dengan kelipatan dua: ~ 5V in, -9,96V out. Mengapa itu perlu?
Rogier Reerink
1
Op Amps memperbesar perbedaan antara 2 tegangan input. Jadi, perangkat lunak ini mengatakan Anda memiliki MSB Anda terpasang pada input pembalik (minus pin tanda) dari op amp, menyebabkan output berubah-ubah sebagai kebalikan dari input. Rasio tegangan sinyal keluaran terhadap tegangan input dikendalikan oleh resistor umpan balik (Anda menggunakan 10K) dari keluaran op amp ke input pembalik op amp; semakin tinggi resistansi, semakin banyak gain yang Anda dapatkan (menyingkat resistor itu, kemudian menggerakkan MSB terhubung ke op amp + input & LSB terhubung ke ground harus memperbaiki ini.
Robherc KV5ROB
Tidak juga. Dalam diagram OP, input noninverasi opamps di-ground. Yang Anda lakukan hanyalah beralih ke konfigurasi voltase-pengikut. Jangan lupa untuk memasukkan resistor 5k di jalur umpan balik masing-masing untuk menyeimbangkan offset arus bias. Juga, resistor paling bawah di masing-masing tangga R-2R Anda harus 10K, bukan 5K. OP juga punya hak ini.
Dave Tweed
Robherc, 1. saya akan membuang kapasitor kopling. 2. jika Anda menjaga dengan rangkaian pengikut tegangan non-pembalik yang Anda miliki, maka Anda perlu menambahkan resistor 10K dari terminal + op-amp ke ground. dan resistor 5K di bagian bawah harus 10 K. bayangkan superposisi dan semua bit OFF (atau ground). ketika Anda duduk di salah satu node itu, itu harus 10K resistensi ke tanah di semua 3 arah.
robert bristow-johnson
Diagram diperbarui dengan landasan yang dikoreksi. @ robertbristow-johnson mengapa Anda menyingkirkan kapasitor yang menghalangi dc & memusatkan output Anda untuk melindungi tranduser dalam sirkuit audio?
Robherc KV5ROB