FIRチャンネルデバイダの作成【19】デジタルボリューム
マルチアンプシステム向け、FIRフィルター搭載チャンネルデバイダー(チャンデバ)自作に関連する記事の一覧はこちら!
今回は、デジタルボリュームを追加してみましょう。
さて、デジタルボリュームですが仕組みは、内部のI2S信号で送られてくる数値に、ボリュームの数値(0〜1.0)を掛け算することで、実現していきます。
よって、ビット落ち!することは確実ですので、利用するかどうかは、各自ご判断を、という所です。
私の環境では、後段で、PGA2311を利用したマルチチャネルボリュームを構えているので、使用していないというのが現実です。
とは言うものの、利用したいシーンは出てくるかもなので、ご紹介いたします。
っと、さらに、ご紹介します、言っていますが、実際には、
こちらのAUAD1467公式の評価ボードのユーザーガイドのコピペ的なお話ですが。
回路図の変更
まずは、いつものように、挿入部分をカットします。
音に影響がでるので、とにかく後段に置きます。
そして、追加するモジュールは4種類5個配置します。
まずは、ADC入力
DSP内部の値を読み取るモジュール(DSP Readback)、これは2個使います。
そして、シフト演算モジュール
最後に、外部コントロール付きボリュームコントロール(以前使っているものと違います!)
これらをドラッグ&ドロップして、以下の図の配線&パラメータに設定してください。
概要は、
- ADC0から入力
- Readbackで32ビット整数としてどんな値か確認(なのでReadbackモジュールはなくてもいいですが、デバッグ的にあったほうが楽)
- 左に14ビットシフトして、8.24形式の小数に変換
- Readbackで8.24形式小数としてどんな値か確認
- 外部コントロール付きボリュームコントロールのコントロール信号(赤ポチ)として入力
このような感じです。まあ、コピペでほぼほぼ問題なく動作します。
ちなみに、外部コントロール付きボリュームコントロールですが、
青い四角の中をクリックすると、ボリュームの上げ方、下げ方の指定、
その下にある「8」とかの数値は、上げる時間、下げる時間、の指定となります。
※実際にどのくらいの時間?は、
こちらのQAで記載されていますので参考にすると良いでしょう。
そして、外部コントロール付きボリュームコントロールを8ch化して、全体に組み込みます。
ボリューム接続
一般的な、Aカーブ、Bカーブ(お好みで)の、10Kくらいのボリュームを以下の部分に接続します。
ADCの基準電圧は、内部IO電圧(3.3V)となっているので、リファレンスは3.3V端子からもらいます。
ただ、配線の長さによっては以外とノイズが乗るのでADC0への入力がふらつきます。
GNDでシールドできるような、内部2線のシールド線を使う、あと0.1uF+0.01uFのコンデンサをADC0入力直前に差し込むと低減されます。
ただ、実際に気になる(聞いて分かるほど)ほどボリュームが揺れるかと言うとそうでもないので、まあお好みで。
ここまで出来たら書き込みを行って動作確認してみてください!
無事に、ボリュームコントロールできているかと思います。
つづく!