STM8S-Discovery (9)

前回の BU9480F の結果は、高調波ひずみがちょっと多いかなという程度で、特に問題のないものでした。
PCM1716E は 8xオーバーサンプリング DAC なので高性能が期待されますが、下に示すように、USB の +5V 電源をそのまま DAC の Vcc に供給する構成では問題がありました。

1 kHz の信号のまわりに見えているスペクトル成分は、主に SD カードのアクセスにともなう基本周波数 375 Hz のノイズで振幅変調されることにより生じたスプリアスによるものです。
最大のサイドバンド成分は

  • 1000 - 375 = 625 Hz
  • 1000 + 375 = 1375 Hz

で、そのレベルは -60 dB に迫ろうかという勢いです。
SD カードからは 1 セクタ分 (512 バイト) を単位としてデータを読み出すので、この周期で消費電流の増減が生じ、ノイズが乗ります。
具体的には、16 ビット・ステレオ・データなので、1 サンプル分のオーディオ・データは 4 バイトで構成されることになり、1 セクタ 512 バイトのデータは 128 サンプルに相当します。
サンプリング周波数 48 kHz のレートで出力するためには、オーディオ・データ 128 サンプル分を

48000 Hz / 128 = 375 Hz

のレートで SD カードから読み出さなければならず、SD カード・アクセスにともなう電源変動も、このレートで発生することになります。
USB +5V 電源の電圧変動をオシロで観測した写真を下に示します。

下のトレースが SD カードの CS 端子の波形で、「L」レベルの部分がデータを 1 セクタ分読み出している期間で、「H」の期間がサンプル・バッファの空きを待っている部分です。
上のトレースが USB +5V の AC 変動波形で、20 mV/div レンジになっています。
SD カードのアクセス周期と一致した形の 20 〜 30 mVp-p 程度の電圧変動が生じていることが分かります。
PCM1716E のデータシートの「Analog Output」の項目には、

PARAMETER CONDITIONS MIN TYP MAX UNITS
Output Voltage Full scale (0dB) 0.62 Vcc Vp-p
Center Voltage 0.5 Vcc V

という記述があります。
これは、出力の「中点電圧」および「振幅」が電源電圧 Vcc に依存するということであり、つまり、基準電圧として Vcc が使われるということです。
また、データシートのどこにも、「基準電圧内蔵」のような表現はありません。
5V 電源に振幅 10 mV のノイズが乗った場合、振幅変調成分は -60 dB 程度になりますから、オーダーとしてはスペクトルの観測結果と一致します。
BU9480F も同様に、電源電圧を基準電圧に使っていますが、スペクトルの観測結果に振幅変調成分は見られません。
これは、BU9480F の電源は 3.3V レギュレータ出力に接続してあり、3.3V 電源には 375 Hz ノイズ成分が乗っていないためです。
3.3V 電源には、電流変動の原因である SD カードも接続されているのですが、レギュレータの作用により電圧変動が抑えられています。
そんなわけで、5V ラインにもレギュレータを挿入したいのですが、5V 入力で 5V 出力は実現不可能です。
PCM1716E のスペックでは、動作電源電圧の最小値が 4.5V となっているので、ここまで電圧を下げれば、レギュレータの入出力電位差は 0.5V 以上となり、LDO (Low Drop Out) タイプのレギュレータが使える可能性があります。
しかし、出力電圧 4.5V の固定電圧タイプは存在しないので、可変電圧タイプの LDO が必要になりますが、残念なことに手持ちがありません。

そこで、手持ちのシャント・レギュレータの TL431 で 4.5V レギュレータを作り、試してみると一応の効果はありましたが、左の回路図に示す簡単な一石のリプル・フィルタの方が効果がありました。
DAC の消費電流は fs = 48 kHz で実測値 27 mA で、Vbe をできるだけ小さくするため、コレクタ電流定格の大きいトランジスタの方が良いのですが、手持ちに適当なものがなかったため、IC = 150 mA の 2SC1815 クラスよりは大きい 2SC2710 (IC = 800 mA) を使いました。
回路図に各部の電圧の実測値が記してありますが、DAC の電源電圧としては 4.4V と、少し低い値になりました。
このリプル・フィルタを使った場合の電源ノイズの波形の写真を下に示します。

下のトレースの SD カードの CS 信号波形と同期して変動するような成分は、上のトレースの電源電圧波形には見られません。
この状態でのスペクトルのプロットを下に示します。

振幅変調成分は最大でも -90 dB 程度のレベルまで下がり、電源ハムとその高調波、1 kHz 信号の 2 次、3 次、7 次高調波が目立つ程度になりました。
SD カード・アクセスの影響を完全になくすために、一切 SD カードにはアクセスせず、RAM 内のサンプル・バッファに初期設定されたデータを変更せずに再生し続けるプログラムを作り、リブル・フィルタなしで USB +5V に直接接続した場合の出力スペクトルを観測した結果を次に示します。

1 k バイト (256 サンプル分) のバッファに 5 周期分のサイン波のデータを設定してあるので、出力周波数は正確に 1 kHz ではなく、
5 * 48 kHz / 256 = 937.5 Hz
となっています。