DACユニットの検討(製作編39)

f:id:torusanada98:20200907072803j:plain

製作編39

動作確認でノイズの発生を確認した位相切り替え時のノイズ対策と電源オン後のデモ画面をフィックスします。

位相切り替え時ノイズ

前回の記事で実装を行った位相切り替え機能ですが、再生時の位相切り替えでノイズの発生を確認していました。たいした問題ではないかもしれませんが、品位に関わると考えて対策検討をする事にしました。おそらくDAC ICがコマンドを受信したタイミングで単純に位相を切り替えているだけなので、信号の出力状態によりノイズが発生していると推測します。念のため切り替え時の波形を見ておこうと考えましたが、このままの状態では捕まえられません。仕方がないので、マイコンからトリガ信号を出力する事にしました。下記がトリガ出力を追加した位相切り替え処理のソースです。

f:id:torusanada98:20200907072948p:plain

デバッグ用にポート3を出力ポートに設定して、イニシャル処理で出力を'L'にします。位相切り替えコマンド発行直前に'H'を出力し、コマンド発行終了後に出力を'L'に戻す簡単なものです。この信号をオシロスコープのトリガとして、1KHz正弦波再生時の切り替えの瞬間波形を捕らえてみます。

f:id:torusanada98:20200907073119j:plain

写真左に黄色の線が垂れ下がっていますが、追加したポート3出力ラインです。早速波形をモニタしてみました。

f:id:torusanada98:20200907073230j:plain

f:id:torusanada98:20200907073242j:plain

写真上がLchで下がRch切り替え時です。どちらも位相がいきなり切り替わり、不連続な波形となっています。切り替えタイミングは、L-chがトリガから約1.5ms後、R-chが約1.8ms後です。DAC ICへコマンドを発行する順番起因でタイミングが違っています。

位相切り替えボツ音対策

不連続な波形をなくす為にミュート処理を追加してみます。Mute制御機能はレジスタ18のbit0に割り当てられています。

f:id:torusanada98:20200907073311p:plain

f:id:torusanada98:20200907073324p:plain

まずは単純に位相切り替えコマンド発行前にミュートオンして、切り替え完了後にミュートオフする処理を追加してみました。

f:id:torusanada98:20200907074329p:plain

早速波形をモニタします。

f:id:torusanada98:20200907073604j:plain

ミュートはかかっていますが、切り替えに間に合っていません。位相切り替えコマンド発行前に1msのディレイを追加してみました。

f:id:torusanada98:20200907073636j:plain

ディレイ追加後はミュート処理が終わってから位相切り替えが実行されています。念のため復帰時の波形も確認してみます。

f:id:torusanada98:20200907073700j:plain

問題なく出力が復帰しています。下記がミュート処理を追加した最終ソースです。

f:id:torusanada98:20200907074037p:plain

デバッグ用のポート出力はソース上コメントアウトしています。

音聴き

ボツ音対策の効果を実際に音を聴いて確認します。再生は真空管ヘッドホンアンプ+バランスヘッドホンで行いました。ディスクは一般の音楽ディスクに入れ替えました。再生をスタートさせて位相を切り替えてみます。対策前は切り替え時にボツ音が出ていましたが、対策後は違和感なく切り替わる事が確認できました。下の画面は、音楽再生時の切り替え波形です。

f:id:torusanada98:20200907073813j:plain

デモ画面

電源オン直後に表示するデモ画面をフィックスさせます。最低限ユニットの型式「DAC-1」とファームウェアのバージョン表示をさせます。表示はこんな感じにしました。

f:id:torusanada98:20200907073845j:plain

表示させている時間は、あまりせわしなくならない様に、また間延びしないように設定しました。デモ画面表示のソースは以下のとおりです。

f:id:torusanada98:20200907073912p:plain

上記のソースでは、LCDパネルのカーソル設定コマンド後のディレイを50msと大きく取っていますが、後で確認して一括で変更する予定です。次回は評価中のディスク入れ替えで時々ノイズが発生していたのでロックエラー後のミュートディレイタイムの再調整を行います。

 

つづく(製作編40)