ラズパイオーディオをバランス出力にしてみようとしたら伏兵出現

img_4754

Raspberry Pi3でミュージックプレーヤーその5

ここまでDACチップにES9023とPCM5122を使ってきましたが、どちらもアンバランス出力です。
我が家の現在のメインシステムはフルバランス構成ですので、 どうせならここもバランス出力にしたいところです。

ES9023、PCM5122を使っているのはラズベリーパイがMCKを出力しないため、MCKが要らないチップが必要だったからでしたが、ここまでの作業でMCKを取り出すことが可能になっていますので、同期MCKを要求するタイプのDACチップも選択肢に入ってきます。

PCM1794のDACボード(完成品の出力はシングル変換されたアンバランス)を頒布されている方が、I/V回路以降が未実装の半完成キットをリリースされました。
なんともドンピシャなタイミング。まさしく「渡りに船」と求めました。

届いたのはこんな基板です。
img_4477

PCM1794は差動電流出力のチップです。
チャネルあたり2本の出力電流をそれぞれI/V変換して差動電圧として、差動⇒シングル変換(差動合成)してアンバランス出力を得るのが一般的で、バランス出力にする場合はモノラルモードにして片側を逆相にすることで実現する。というのがよくある構成です。
でも、せっかくの差動電流出力なので、モノラルモードにしなくてもそのままバランス出力にできないでしょうか。。
ということで、少し考えてみましょう。

PCM1794を使う上での問題点は常時出力される-6.2mAです。
単電源で動作するため無信号時の基準電流が必要で、これをなくすことはできません。
一般的な回路構成ではHOT/COLDそれぞれオペアンプでI/V変換しますが、この常時出力が乗っているため変換後の電圧は直流的にオフセットします。
オフセット量はHOTとCOLDで同じです(実際はI/V変換用の基準抵抗の精度とオペアンプの性能に依存しますがちゃんと作れば無視できます)ので、後段の差動合成(シングル変換)でオフセット電圧が同じなら同相信号としてキャンセルされ、出力の基準電圧は0Vになります。

これをふまえて手持ちの部品をつかってバランス出力にするには(普通のオペアンプしかないので)差動合成段をチャネルあたり2組つかって、片方の入力を逆相にすればバランス出力になります。
構成としてはブリッジ接続ですね。

ということで、I/V変換出力(オフセットのある差動電圧)からバランス出力する段を組んでみたのがこちら。
img_4505

チャネルごとにHOTとCOLDの差動合成がそれぞれあるので少々ごちゃごちゃしています。
(モノラルモードx2よりはマシですが)

これをぼんやり眺めながら、完全差動アンプがあればすっきりするし、そもそもI/V変換を完全差動アンプでやっちゃえば1段でオフセットなしの電圧が得られるんだけどなぁ。。(ただし、LPFが1段減るのでその部分は何らか手当てが必要)と思い、実現方法を探ってみました。

ディスクリートで完全差動アンプを組むのも手ですが、いきなり組んで上手くいかなくても面白くないのでIC(オペアンプ)を探してみましたが、出てくるのは固定ゲインの差動ラインドライバICだったりGB積が数100MHz~GHzオーダーの高周波数用製品ばかりです。(USBなどが差動信号でやり取りするので、そちら向け製品が多いようです)
LTC1992、THS4531は固定ゲインではない上にオーディオ帯域でも使えそうですが、動作電圧が小さいため今回の回路には向かない感じです。

検索条件を弄りながらあれこれやっていたところ、LME49724(旧ナショナルセミコンダクター)が目に留まりました。
データシートを見るとオーディオ用の完全差動アンプで特性も動作電圧も申し分ありません。
機能的に若干気がかりなところもありましたが、試してみないと何とも言えないので早速注文。
差動入力、差動出力のバランス出力段を組んでみました。

ブリッジ構成のものと比較してみるとこんな感じです。
img_4755

ブリッジと違い、入力が1系統なのでフィードバックも1系統となり、NFBの素子が半分になっています。
ブリッジではHOT、COLDが別々の回路で別々に制御されますが、完全差動は同一回路内で連動しています。

なお、今回はI/V変換と差動ラインバッファがDACチップから独立していますので、これらを動かす正負電圧の電源が必要です。
(ES9023、PCM5122はチップ内蔵のチャージポンプ回路で負電源を生成していたので、単電源でした)
我が家にはリビングのDAC用にデジタルとアナログ用で分けたバッテリーがありますのでこれを活用して、ラズパイ、DACデジタル部とアナログ部の電源を分けることと、ついでにラズパイ内部の各電圧(5V、3.3V、1.8V、1.2V)もシリーズレギュレーターで作りましょう。

で、出来上がったのがこちら。
img_4835

「ラズパイでナントカ」といえば出来上がりも「小さい」という世の常識に真っ向勝負。
ラズパイ本体は右上側のHiFiBerry DAC+Proに埋まってます。
電源だけでラズベリーパイ本体の何倍の体積になるんでしょう?(苦笑)
これでもバッテリーからのDC入力なのでトランスも整流器もブロックコンデンサーもないのですが、DAC3セットと合わせるとメインの自作完全差動アンプとどっこいどっこいのサイズです。

とりあえず、差動出力が動作しないことにはその先進まないので、ラズパイ本体の電源供給改造は後回しでPCM1794を動かしてみたところ。。

音が出ません。。。。。
何かしくじったかと基板の回路を見回してみましたが、これで動かないはずはないという状態です。
いろいろやってたら、音が出る時もあることがわかりました。
整理してみると、
CD取り込みの音源だと音が出ません。
ハイレゾやレコードからダビングした音源は音が出ます。

ということは、16bitのファイルがダメなようです。

調べ直してみたら、ラズパイのI2S出力は16bitフォーマットだとBCKが32fsになっているらしく、PCM17xxとかESS9018とかはそのままでは動かんって、既知の情報でした。
試しに幾つかのCD音源を24bitにコンバート(LSBに0埋めしただけ)してみたら、ちゃんと動作します。
その他にはMPDの出力設定でRpiDAC(PCM1794搭載)を選択すると16bitファイルでも64fsのBCKが出力されて音が出ますが、そうするとラズパイ側スレーブ(外部クロック)が動きません。
無理やりMCKでもいいじゃんと言われればそれまでですが、比較ができないのが悔しい。
だからと言って全部のファイルを「0埋め」で無駄に容量大きくするのもシャクなので、Volumio2またはLightMPDとHiFiBerryDAC+Proでも16bitファイル再生時のBCK64fs出力ができる方法がないか、大調査中です。

追記:解決方法が見つかりました