STM8S-Discovery (13)

これまで、DAC 出力にはフィルタを付けずに「裸」の特性を測定してきましたが、BU9480F では通過帯域内の「ハイ落ち」が目立つので、補正用のポストフィルタを設計してみました。
OP アンプを 1 個使用した 3 次 Sallen-Key 回路を使うことを念頭に、3 次ローパス・フィルタ特性でハイ落ちの補正と、ナイキスト周波数以上の成分の減衰の機能を実現します。
3 次 LPF 特性は、1 次 LPF 特性と 2 次 LPF 特性の縦続で実現されますが、1 次 LPF 特性は高域に向かって振幅が減る一方ですから、通過域のハイ落ちの補正はできず、阻止域での減衰が主な作用になります。
ハイ落ちの補正は、Q を 1 以上に選んでカットオフ周波数付近にピークを持つ 2 次 LPF 特性の、ピーク位置までのゲインの「上り坂」の部分で DAC の特性の「下り坂」の部分をキャンセルする形になります。
図で見たほうが分かりやすいですから、まず、結果のグラフを下に示します。

上の図の青い線が BU9480F の特性、緑の線が補正 3 次 LPF の特性、赤の線が DAC 出力に LPF をかけた後の特性です。
0.5 fS 付近にピークを持つ補正フィルタの、ピークに向かってゲインが上昇していく部分で DAC 特性のゲイン下降部分を埋め合わせます。
ナイキスト周波数以上の部分では、3 次 LPF なので -18 dB/oct のスロープで減衰して行きます。
1.5 fS では、元の特性より 20 dB 以上減衰しています。
通過帯域内の特性を次に示します。

0 〜 0.45 fS の帯域で、0.1 dB 以内のリプルにおさまっています。
この特性は、

  • 1 次 LPF のカットオフ周波数 fC1
  • 2 次 LPF のカットオフ周波数 fC2
  • 2 次 LPF の Q

をパラメタとして、プログラムで 0 〜 0.45 fS の帯域での最大誤差量が最小になるような組み合わせを総当りで計算したものです。
最初は、3 つすべてのパラメタを変化させていましたが、1 次 LPF の特性は通過帯域の補正には「邪魔」になるような寄与の仕方なので、fC1 は大きい値が選ばれる傾向にあり、阻止域の特性が悪くなってしまいます。
そこで、fC1 は 1 に近い値としてあまり選択の余地がないようにして阻止域の特性を確保し、Q の値も実現しやすいように Q = 2.2 の固定値として、主に fC2 だけを変化させるようにしました。
求まった結果は、正確に等リプルの最良近似ではないのですが、リプルが 0.1 dB 以下なので、満足することにしました。 結果の数値を下に示します。

 パラメタ  数値 fS=48kHz fS=44.1kHz
  fC1 1.1875 fS 57000 Hz 52370 Hz
  fC2 0.5538 fS 26580 Hz 24430 Hz

Q = 2.2, ζ = 0.2273

この結果を、Web サイト「大川電子設計」の
Sallen-Key 3次ローパス・フィルタ各種計算ツール
を利用して fS=48kHz の場合の具体的な回路素子値を求めると、次の回路図のようになります。

OP アンプは STM8S-Discovery のユニバーサル・エリアに実装するため、手持ちの SOP 8 ピンの NJM3414 を使いました。 これは、古い CDROM ドライブの基板からはがしてきたものです。
レイル・ツー・レイルタイプの OP アンプではないので、USB +5V から Vcc を供給して、3V 程度の出力を出せるようにしてあります。
最初は計算値通りの値の、精度不明のセラミック・コンデンサ (茶色の円盤型の古いタイプ) を使って組んだのですが、誤差が大きく、5 % 精度の積層セラミック・コンデンサを使ってカット・アンド・トライして、

  • C1 = 270pF + 82pF
  • C2 = 270pF + 270pF

としました。 C3 は茶色のセラミックの 20pF を使っており、ストレー容量とあいまって、ここが誤差が大きいかも知れません。
このフィルタを使った場合の、TSP 法による測定結果を下に示します。

TSP 波形は 48 kHz サンプリング、サンプルデータ数 65536 のものを使いました。
WaveSpectra の録音設定は 96 kHz なので、DAC のサンプリング周波数 48 kHz までの測定となります。
青い線がフィルタなしの BU9480F の特性、赤い線が LPF 通過後の特性です。
最初に示した計算値でのグラフと同様な特性になっています。
ナイキスト周波数 24 kHz 以下の通過域でのリプルの特性を下に示します。

フィルタが計算通りに実現できていないのと、PC 側の ADC のリプルが重なっているために、計算データでのグラフとは形が違っていますが、リプルの大きさは 0.1 dB 程度になっています。
最近は DAC の話ばかりで、記事のタイトルの「STM8S-Discovery」自体の話からは離れてきたので、この話題については、今後は別のタイトルに改めようと思っています。