DAC

手作りアンプの会の松田さんから、TI (バーブラウン)のPCM1716というDACチップが安価に手に入るので、 一緒に作りませんか?というお誘いを受けたので、私も2個購入しました。

実は、仕事がデジタル回路設計なのでICやLSIを使った回路には近付きたくないと思っていたのですが、 いつまでもDACを見て見ぬ振りもできないので、ちょうどいい機会だったかもしれません。

オーディオで言うDACモジュールでは、DAI(Digital Audio Interface)、DAC(Digital Analog Converter)、LPF(Lo-Pass Filter)という 3つの構成要素が必要です。DAIは、入手可能でDIPなものということでCS8412、LPFは松田さんの回路そのままにOPA604で作ることにしました。

上記構成で完成した後にきれいにシャーシに入れても良かったのですが、いろいろと実験したかったので 各モジュールごとの基板として、ケーブルで接続することにしました。

CS8412

DAI基板。使用しているDAIチップは、CS8412です。CS8414も売っていたのですが、シュリンクSOPだったのでハンダ付けが面倒なので DIPのこれにしました。入力は、コアキシャルと光の両方を設けています。

回路は松田さんのコピーというか、データシートの推奨回路のままです。光入力の信号ラインはCS8412と直結でいいはずなのですが、 なぜかコンデンサでカップリングしないと音が鳴りませんでした。



PCM1716

DAC基板。使用しているDACチップは、PCM1716です。0.65mmピッチのSOPなので、変換基板を使用して取り付けています。 結構この変換基板が高価だったりします。取り付けで苦労したので、フラックスのカスで汚くなってしまいました。

回路は、これも松田さんのコピーというか、データシートの推奨回路のままです。CS8412もこれもDIPスイッチで 各種モードが切り替えられます。



OPA604

LPF基板。使用しているOPアンプは、OPA604です。電源はプラスとマイナスの2種類が必要ですが、単一電源から抵抗で中点を作って用意しています。

回路は、これまた松田さんのコピーというか、データシートの推奨回路のままです。




DAI、DAC、LPFと一通り作って、これでオシマイにしても良かったのですが、もうすこしDACをかじってみることにしました。

この後の展開としては、次の3種類が考えられます。

  1. サンプリングレートコンバータや、エラー表示など別の機能を充実させる
  2. コンデンサや抵抗、基板などの部品に高級品を使う
  3. 原理を理解するために、ディスクリートで作ってみる

今回は、手作りアンプの会でDAC分科会というちょっとだけ理論的な発表の場もあることですし、イロモノに走って(3)でやることにしました。


自作DAC (74HC574)

DAIは難しすぎるので、DACをディスクリートで組むことにしました。DACについて調べてみると、R-2Rラダー形というのが簡単そうです。 CS8412からのシリアルオーディオフォーマットは、回路が簡単になるので16bit後詰めモード (CS8412ではMode 5)にします。 今回の試作では、16bitでオーバーサンプリング無しとしました。

回路図は、最初はコレで作りましたが、実際に音楽を鳴らしてみると、歌詞の聞き分けはなんとか出来るけど聴くに堪えないくらい音が割れまくり。 波形はこんな感じでした。原因がさっぱり分からなかったのですが、DAC分科会の掲示板で相談したところ、 小川さんからヒントをもらえて解決。この回路だと入力の16bitデータは0x0000〜0xFFFFのリニアな空間にマッピングされている必要が有りますが、 CS8412からの信号は0x8000〜0xFFFF/0x0000〜0x7FFFなのでした。ラッキーなことに、MSBを反転させるだけで対応することが出来ました。 音が割れていたのは、MSBの1bitのみの情報で聴いていたようなものでしたが、それでもとりあえず聴けるものになるのは驚きでした。 最終的な回路図は、コレになりました。

この状態でかなりまともな音が聞けるようになりましたが、曲の頭の無音部分やピアニッシモの時にザーというノイズが片チャネルだけ入るトラブルに気付きました。 部品不良を疑ってかなりいじって、なんとか解決できました。結論としては、R-2Rラダー形DACでは、抵抗の精度がかなり重要だということです。 曲の頭の無音部分では、振幅はほぼ0ですが、収録時のノイズ(?)のせいか、0xffffと0x0000が交互にCDに入っています。 MSBを反転させると0x7FFFと0x8000になり、LSB分の重みしか差の無い、ほとんど同じアナログ値が出力されるはずですが、 抵抗の精度が悪い(5%品。秋月の100本100円なので...)ため50mVもの違いとなり、それが矩形波として出力されてしまっていたのでした。 とりあえず、MSBの1bitのみ抵抗を何本か取り替えて、10mV以下にして誤魔化しました。

出てくる音は、かなり普通です。オーバーサンプリングの必要性には疑問を感じてしまいます...



自作DAC (74AC574)

上記のディスクリートDACを作り直しました。回路的にも少し変更していて、HC574からAC574にして出力電流を強化して、R-2R抵抗も10k/20kから 1k/2kにして電流を多めに流すようにしました。

音は、HC574バージョンに比べてクッキリしているような気もします。



ケーブル

これらのモジュール通しを接続するケーブルです。上から、CS8412基板=DAC基板、DAC基板(LPF基板)からの出力、電源ケーブルです。



電源

AC100Vから5Vを出力する基板です。



ACアダプタ/電池

5V出力のACアダプタと、LPF基板用の17V出力ACアダプタ、5V出力の電池です。 電池は4本直列ですが、ダイオードで電圧降下させて5Vくらいにしています



2002/11/17