DSDでヘッドフォン駆動

何で?いまさらDSD?

コンテンツ的には不便この上なくて、DSDって大嫌いなんだけど、自作ハード的には簡単にそこそこの音が出せるので

テクノロジーとしてけっこう楽しめるテーマなので取り上げます。

たとえば以下のような場合、貴方ならどうする?

  • 音声合成や録音ファイルでFPGA搭載の機械にしゃべらせたい
  • ヘッドフォンで音声の内容をモニターしたい
  • ライン出力も欲しい
  • しかしデジタル出力ピンしか空いてない

こんな時、普通はDAコンバーターを接続してクロックとデーターを入れてと、最低でも3本~4本のポートを使わないとダメと思ってしまうのが普通ですが、

答え:

DSDを使えば、モノならたった1ピン、ステレオでも2ピンあれば、そこそこの音質で音声を鳴らすことができます!

応用例:

オーディオ機能のないDE0で音を出したい、でもDACを繋ぐなんで難しいこと無理っス! というような場合。

ヘッドフォン駆動の実験

ブロック構成

Verilogコード&解説

DeMUXモジュールはI2SのPCMステレオ形式の時分割信号をL/R個別のパラレルデータに分けます。

DeMUXの記事は→こちら

パラレルに分離されたPCMデータからDSDビットストリームに変換するのをDSDモジュレータといいます。

DSDモジュレーターの記事は→ こちら

DE1-SOCでの実現方法はこちら

外付けのアナログ回路(ヘッドフォン用)

実際に作成した拡張ボード

441Hzのサイン波を出力したときの出力波形

DSD波形は3.3VppでDE0のポートで直接駆動しています。

上の波形はヘッドフォーン端子にて測定した波形。

441Hzのサイン波を出力したときのスペクトラム解析結果

こんな、簡単な付加回路ながら、2次高調波のレベルは0.1%以下という、そこそこのクオリティ

アンプの石も要らず、けっこうな音量でヘッドフォンが鳴ってしまいました!

電源由来の残留ノイズの改善

シングルエンドの1ビットだとどうしても電源電圧の変動がそのまま音になってしまいます、そこであと1ピン使ってリファレンス(仮想グランド)を作ってみました。 これで電源電圧の変動による影響は同相になるのでキャンセルされ音にならなくなるし、いまいましい大型の音声カップリングの電解コンデンサーを追放してDC結合することが可能になります。

仮想グランド版の処理ブロック図

ヘッドフォンのコモン端子をデジタルゼロを再生する第3のチャンネルとして回路を追加

仮想グランド版の外付け回路図

以下に、仮想グランド版のスペクトラム分布を示します。

差動プローブじゃないのでフローティンググランドのためか50kHz以上のノイズが少し増えた気がします、可聴帯域ではあまりノイズが減っているのかが判りづらいのですが,、電源電圧の変動などもっと低い成分があればハッキリ差が見えるものと思います。

なぜかだか?2次の高調波歪みが3dBほど改善されています、クロストーク成分があったのか?と思いましたが、ふと基板を見て気がつきました・・・

オーディオ特性の改善

「こんな簡単な回路で使い物になるマトモな音なんで出せる訳ないだろ」と思い込んでましたので、引出しの中に転がっていた電源バイパス用のMLCC(積層セラミックコンデンサー)を使ってたのですが、公称の容量こそ0.1uFで同じなのですが違う種類のコンデンサーを使っていたのです。 一般にセラミックコンデンサーは高誘電体であり、正確に電荷を保持できないため歪みが多くこのような用途には適しません、そのため高級オーディオ機器ではマイカ(雲母)やスチロールコンデンサーやマイラーフィルム・コンデンサー等を使ってDSDパルスの電荷を正確に保持できるようにしています。 そこで私もそれに倣って安価ですがそれなりの特性をもつマイラーフィルム・コンデンサーに交換してみました。 この効果を確認するのと平行して、LとCで構成されるLPFのカットオフ周波数もちゃんと適正なのか周波数特性を確認してみました、以下にDDS生成のサイン波の歪みスペクトラムと、AD変換経由でサンプリングした周期ノイズでの周波数特性の測定結果を示します。