dsPIC33FJ64GP802 (2) --- DAC の周波数特性 (2)

dsPIC マイコン本体のプログラムで固定周波数の正弦波、あるいはリニア周波数スイープの正弦波を発生させ、DAC に出力し、アナログ信号をホスト PC のオーディオ入力に接続して「WaveSpecta」で周波数特性を観測した結果を示します。
他に注記のない限り、WaveSpectra やプログラムの設定は下のようになっています。

  • 録音コーデック設定: 16 ビット 96 kHz サンプリング
  • FFT ポイント数: 131072 (128 K)
  • 窓関数: フラット・トップ窓
  • サイン波テーブル: 16 ビット精度、1 周期 4096 エントリ

まず、DAC のサンプリング周波数を 48 kHz にして、1 kHz の固定周波数の正弦波を発生させた場合の特性を下に示します。

2 次高調波、3 次高調波ともに -80 dB 以下のレベルとなっています。
15 kHz、17 kHz 付近に -70 dB 程度のピークが見られますが、これは 1 kHz の奇数次高調波と思われます。
次は、DAC のサンプリング周波数 fs = 48 kHz とし、180 秒かけて 0 ~ fs/2 までのリニア周波数スイープを行い、WaveSpectra のピーク・ホールド機能でプロットした結果を下に示します。
周波数軸はリニア・スケールになっています。

ナイキスト周波数 (fs/2) である 24 kHz でスパイク状のピークが生じているのは、周波数スイープを
0 → fs/2 → 0 → fs/2 → …
と「三角波」状に行っているため、fs/2 で周波数変化の微分に不連続が生じ、スペクトラムが乱れるせいです。
通過域のレベルを -20 dB の目盛りに合わせているので、目盛りから -80 dB 程度と読み取れる阻止域のレベルは実際は -60 dB 程度となります。
「ハイエンド」とはいきませんが、「普及型」クラスの単体の オーバーサンプリング DAC 程度の性能があることが分かります。
通過域に関しては、周波数スイープの速度が「速すぎる」ため、等リプル特性になっているかどうかは分かりません。
通過域端の 20 kHz では、約 0.3 dB レベルが低下しています。
DAC のクロックを分周して、非常に低い周波数に設定できるので、DAC のサンプリング周波数を 375 Hz に設定して測定してみました。
ホスト PC の 96 kHz サンプリングのコーデックで観測可能な 48 kHz は、DAC サンプリング周波数 375 Hz の 128 倍に当たり、256 倍オーバーサンプリングのナイキスト周波数に相当します。

上のグラフは、WaveSpectra での観測結果を「.WSO」ファイルとしてセーブし、そのファイルからプログラムで値を読み取って gnuplot で表示したものです。
WaveSpectra で小さい画面に表示させると、微細な構造は省略されてしまうので、それを避けるためです。
WaveSpectra で大きい画面に表示したものを「縮小」したものを下に示します。
図をクリックすると、オリジナルの (大きい) グラフが表示されます。

dsPIC_DAC375Hz_sweep_WS.png

20 Hz 付近でレベルが低下していますが、これはホスト PC のコーデックの HPF の影響によるもので、dsPIC の DAC 自体は DC までフラットなゲインを保っています。
阻止域の減衰量は、おおむね 60 dB 程度以上ありますが、1.3 kHz および 1.7 kHz 付近の「ウサギの耳」状の部分の減衰量は 38 dB 程度しかありません。
1.5 kHz はサンプリング周波数 375 Hz の 4 倍 であり、DAC fs = 48 kHz では 192 kHz に相当します。
外部のアナログ回路で、この「ウサギの耳」領域を減衰させれば、SN が向上するかも知れません。
4 kHz 程度へ向かってノイズ・フロアが上昇しているのは、ノイズ・シェーピングされたノイズを落としきる設計にはなっていないものと思われます。