TNJ-089: いい加減な設計だと性能を出し切れない逐次比較 ADC の AIN と REF 入力(前編)

TNJ-089: いい加減な設計だと性能を出し切れない逐次比較 ADC の AIN と REF 入力(前編)

著者の連絡先情報

石井 聡の写真

石井 聡

はじめに:「君に伝えたいメッセージ」

君はこの WEBラボを見ることがあるかもしれないし、見ないかもしれない。見たとしても、この記事にたどり着くのだろうか。それでも、もし君がこの記事を、偶然にでも、その冒頭だけでも読んでくれれば、私は本当にうれしい。心からうれしい。

私は(キリスト教徒ではないが)、この歌詞を、君に、あらためて、伝えたい。

讃美歌 288 番「たえなる 道標の光よ」([1]より引用)

1st chorus

たえなる道しるべの光よ、家路もさだかならぬやみ夜に、さびしくさすらう身を導きゆかせたまえ。

2nd chorus

行く末遠く見るを願わじ、主よ、わが弱き足を守りて、ひとあし、またひとあし、道をば示したまえ。

3rd chorus

あだなる世の栄えを喜び、誇りて おのが道を歩みつ、むなしく過ぎにし日を わが主よ、忘れたまえ。

4th chorus

標しるべとなりたまいし光よ、今よりなおも野路に山路に、闇夜のあけゆくまで、導きゆかせたまえ。

5th chorus

とこ世の朝に,さ覚むるそのとき、しばしの別れをだに嘆きし愛するものの笑顔、御国みくににわれを迎えん

元気に暮らしていってほしい

 

さて、今回は…

逐次比較型 AD コンバータ(Successive Approximation Register Analog-Digital Converter; SAR ADC)は、一番汎用的な ADC であり、多くの人が使用する ADC ではないでしょうか。アナログ・デバイセズでも、多数の SAR ADC IC 製品を販売しています。もしそのような単独の IC を使うことはないにしても、マイコンに内蔵されている ADC ( たとえば Arduino のマイコンATmega328Pや、Raspberry Pi Pico のマイコン RP2040 に内蔵されている ADC)も SAR ADC です。

この SAR ADC。「AD 変換したい信号源をつなぐだけでいいだろう」と思うかもしれません。しかし SAR ADCアナログ信号入力は「サンプリング・コンデンサ」がそのまま見えているため、この ADC アナログ信号入力の駆動は実はとても難しい話なのです。

また同じように、これもあまり気にしていない人が多いかもしれませんが、リファレンス電圧入力もテキトーに端子処理すると ADC の性能を適切に引き出せない事態が生じてしまいます。

今回以降の 3 冊の技術ノートは、SAR ADC の評価ボードを使用して、さらにそれを不適切な入力回路構成に修正して、どのように ADC の性能劣化がみられるかを実験してみたいと思います。

 

18ビット ADC AD7960で実験してみる

使用した ADCは、最高 5Msps、18 ビットの AD7960 [2]です。この実験では同 ADC の評価ボード、EVAL-AD7960FMCZ [3]を用います。この評価ボードはこのWEBラボでも、技術ノートTNJ-079TNJ-080 の記事で使用したものです。まずは AD7960をご紹介しておきましょう。

AD7960 18 ビット AD コンバータ、5 MSPS、差動入力、PULSAR®

https://www.analog.com/jp/ad7960

【概要】

AD7960は、18ビット、5Mspsの電荷再配分式逐次比較型(SAR)の A/D コンバータ(ADC)です。SAR アーキテクチャのため、ノイズと直線性の両方に関して並外れた性能が達成されています。AD7960 は、低消費、高速、18 ビットのサンプリング ADC、内部変換クロック、それに内部のリファレンス・バッファ回路を内蔵しています。(後略)

この評価ボード EVAL-AD7960FMCZ は、アナログ・デバイセズの製品評価用デジタル回路基板 System Demonstration Platform (SDP)ボード、EVAL-SDP-CH1Z と接続し、SDP ボードからパソコンへ USB 接続する方法で評価システムを実現しています。

図 1 に手持ち環境で今回の評価システムを構成したようすを示します。EVAL-AD7960FMCZ 上の ADC 入力回路あたりが少し乱れていますが、実はこれはこの技術ノートを書くうえで改造した箇所です(笑)。

 

SAR ADC入力を充電するのは時間がかかる

 

SAR ADCの AIN入力/REF入力はコンデンサが見える

SAR ADC の AIN(アナログ信号入力)/ REF(リファレンス電圧入力)端子からは、サンプル・ホールド・コンデンサがそのまま見えます。AD7960 の AIN 入力を簡易的に等価回路としたものを図 2 に示します(データシート [2]からの抜粋)。

この等価回路は±(差動)の AIN 入力の片側だけを示したもので、グラウンド基準で考えると、26pF の容量がサンプル・ホールド・コンデンサに相当すると考えられます。

図 1. 実験に使用した EVAL-AD7960FMCZ と SDP ボード
図 1. 実験に使用した EVAL-AD7960FMCZ と SDP ボード
図 2. AD7960 の AIN(アナログ信号)入力簡易等価回路([2]より抜粋)
図 2. AD7960 の AIN(アナログ信号)入力簡易等価回路([2]より抜粋)

この 26pF を、ADC 変換サイクル中のサンプル期間で、LSB/2 の誤差まで充電する必要があります(LSB は Least Significant Bit。ADC 分解能の意。18 ビットの AD7960 なら 5V リファレンスでLSB/2 の誤差は 19μV )。ここでは最悪条件/ワーストケースを考えてみましょう。

この最悪条件は、図 3 のように AIN 入力がマルチプレックスされており、1 回のサンブリングごとでマルチプレクサが切り替わり、一つの入力(V1)がプラス側フルスケール、もう一つの入力(V2)がマイナス側フルスケールで、それが AIN 入力に交互に現れるというものです。

 

1 次の時定数回路での電圧変化と最終値への収束

まず図 4 のような抵抗𝑅とコンデンサ𝐶で構成されている回路(LTspice の回路)を考えます。これを 1 次の時定数回路と呼びます。コンデンサ C1が時間𝑡で充電されていく波形は

数式1

ここで𝜏は時定数で

数式2

になります。単位は「秒」です。𝑒はネイピアの数というもので、2.71828…という数になります。まあこの数がいくつかはここではあまり関係ありませんが。また𝐸は加えるステップ変化する電圧です。図 4をシミュレーションした波形を図 5に示します。ここでは時定数𝜏 = 1 sec、ステップ電圧𝐸 = 1 V としています。1sec で最終値 1V の 63.21%、2 sec で 86.47%、3sec で 95.02%と変化していることが分かります。といっても時定数 𝜏 = 1 sec の 3倍の時間が経過しても、最終値から 5%程度も離れていることが分かります。「LSB/2 の誤差まで」はまだまだです。

 

𝑽𝑳SB/𝟐への収束条件を検討する

ここで図 4 の抵抗𝑅を、ADC を駆動する駆動インピーダンス(別の言い方をすれば ADC ドライバの出力インピーダンス)、コンデンサ𝐶を AIN の入力等価容量(図 2 では 26pF の容量と示したもの)と考え直します。

このように考えたうえで、AIN の入力等価容量𝐶を𝑉𝐿SB/2(𝑉𝐿SBは ADC の分解能 1 ステップ = 1LSB)まで充電できる時間がどれほどかを計算してみましょう。この「𝑉𝐿SB/2」というのは、AIN の入力等価容量𝐶𝐶の端子電圧が目的とする正しい電圧値となり、AD 変換される条件になります。まず𝑉𝐿SBを考えます

数式3

ここで𝐹Sは ADC のフルスケール電圧、𝑁は ADC の分解能ビット数です。これから「𝑉𝐿SB/2」というのは、

数式4

ここで先に示した式(1)が最悪条件で𝑉𝐿SB/2にまで収束する時間を求めてみましょう。さきのステップ電圧𝐸 [V]を、ADC のフルスケール電圧𝐹Sと等しいものとして計算していきます。まず

数式5

として差分電圧を考えます。𝐸 = 𝐹S(最悪条件)ですから

数式6

数式7

となり

図 3. ADC 入力がマルチプレックスされており、1 回のサンプルごとにプラス側フルスケール、マイナス側フルスケールで入力電圧が切り替わるアプリケーション
図 3. ADC 入力がマルチプレックスされており、1 回のサンプルごとにプラス側フルスケール、マイナス側フルスケールで入力電圧が切り替わるアプリケーション
図 4. RC による時定数回路
図 4. RC による時定数回路
図 5. 図 4 の回路のシミュレーション結果
図 5. 図 4 の回路のシミュレーション結果
図 6. AD7960 データシート Table 3 より抜粋 [2]
図 6. AD7960 データシート Table 3 より抜粋 [2]

数式8

両辺の自然対数を取ります。

数式9

数式10

これから AIN の入力等価容量𝐶を𝑉𝐿SB/2まで充電できる時間𝑡は

数式11

𝜏は時定数で、𝜏 = 𝑅Cです。𝑁は ADC の分解能です。

入力等価容量𝐶が適切なレベル(誤差)まで充電されるためには、最悪条件でこれだけ時間がかかることになります。つまり高速に入力等価容量𝐶を充電するためには、十分に低い駆動インピーダンス(ADC ドライバの出力インピーダンス)である必要があることが分かります。

 

での𝑽𝑳SB/𝟐への収束時間を計算する

実際に実験する前に、18 ビット SAR ADC である AD7960 の AD変換タイミングから計算できる、信号源(駆動)抵抗の最大値を計算してみましょう。

AD7960 のデータシートを確認してみると、Table 3(図 6 に転載)に「Acquisition Time」として、サンプリング時間 tCYC - 115ns と記載があります。tCYCは「Time Between Conversions」ですから、変換周期になります。つまり最大の 5Msps で動作させたい場合には tCYC = 200ns で、Acquisition Time はなんと 85ns しかありません。式(11) を用いてみると、

数式11-2

AD7960 の分解能ビット数は𝑁 = 18ですから

数式11-3

から 

数式11-4

と計算できます。AD7960 の AIN端子の入力容量を図 2 のように26pF とすると、式(2)、

数式2-2

から𝑅 = 256 Ωと計算できます。図 2 の IC 素子の内部抵抗成分185Ωを差し引くと、AIN 入力の外部に許容される最大駆動抵抗値は 71Ωと計算できます。

図 7 は AD7960 の評価ボード EVAL-AD7960FMCZ の AIN 入力回路の部分です([4]より抜粋)。この右の IN+, IN-が ADCAD7960 への入力部分となりますが、入力抵抗 R52, R53 が 33Ωであり、AIN 入力の最大駆動抵抗値 71Ωよりも小さい値で設計されていることが分かります。

しかしこの抵抗が「33Ω < 71Ω」だから良いというわけではなく、この前段にある ADC ドライバの出力抵抗がいくつかという点も重要なポイントです。

 

EVAL-AD7960FMCZ を動かしてみる

では実際に EVAL-AD7960FMCZ を使ってこのようすを実験してみましょう。

 

いにしえの 500kHz RC 発振器の信号を加えてみる

図 8 は今回実験に用いた評価ボード EVAL-AD7960FMCZ の入力フロントエンドの部分を改造したブロックを示しています。

ここにいにしえの 500kHz RC 発振器 417B(図 9)を 250kHz 出力にして接続します。これもヤフオクでゲットしたものです。落札したときは相当ボロボロだったのですが、塗装や部品交換をして、以降 10 年近く元気に動いています。当時、メーカーのサービスの方から回路図もいただきましたので、もしこれ以降、故障しても安心です。ヤフオクを見てみると、各社から 500kHz~1MHz までの RC 発振器が多数出品されています。当時、標準回路のようなものがあったのではないかと推測しています。発振方式はウィーンブリッジ発振器です。ウィーンブリッジ発振器は WEB ラボのデビュー・ネタです [5]。

この RC発振器は古いにも関わらず結構高性能なのです。そこでこの発振器 を 250kHz 出力にして EVAL-AD7960FMCZ の入力(図 8 のように改造したフロントエンド)に加えてみました。

図 7. EVAL-AD7960FMCZ の ADC ドライバ・アンプからAD7960 に加わる経路は抵抗が 33Ωになっている ([4]より抜粋)
図 7. EVAL-AD7960FMCZ の ADC ドライバ・アンプからAD7960 に加わる経路は抵抗が 33Ωになっている ([4]より抜粋)
図 8. EVAL-AD7960FMCZ のフロントエンドの経路を改造した
図 8. EVAL-AD7960FMCZ のフロントエンドの経路を改造した

発振器の出力インピーダンスが 600 Ωなので、 EVALAD7960FMCZ 側も 600Ωで終端してあります(低周波なので意味はあまりありませんが)。

信号レベルは-20dBFS(FS = フルスケール)、1Vp-p に設定します。EVAL-AD7960FMCZ の評価ソフトウェアで FFT したものを図 10 に示します。ノイズ・フロアは 65536 点 FFT で、フルスケールに対して-130dBFS になっています。このようにダイナミック・レンジが非常に広いことから、高調波やノイズはより明らかにスペクトラム上に見えてしまいます。

スペクトラム上に信号の高調波が出ていることもひとつの問題ではありますが、低域に「もやもや」したノイズが観測されます(汗)。一体これは何のノイズでしょうか(汗)。

図 9. 500kHz RC 発振器 KIKUSUI 417B
図 9. 500kHz RC 発振器 KIKUSUI 417B
図 10. RC 発振器の信号をそのまま加えてみた(信号は 250kHz、-20dBFS。65536 ポイント FFT)
図 10. RC 発振器の信号をそのまま加えてみた(信号は 250kHz、-20dBFS。65536 ポイント FFT)

 

ノイズと高調波との格闘が始まる

AD7960 は 18 ビット ADC です。18 ビット分解能における理論SNR(量子化ノイズのみを考慮したときの SNR)は

数式11-5

で計算できます。𝑁 = 18 を代入してみると、𝑆𝑁R𝑄_𝑑B =110.12dBと計算でき、驚異的な理論 SNR であることが分かります!とはいえ AD7960 の実際の SNR はこれより低く、99dB になっています。

それでもほぼ 100dB…。また FFT したスペクトラムとしてノイズ・フロアがさらに低減し、さきの図 10 のようにフルスケールに対して-130dBFS となりますから、観測できるダイナミック・レンジは非常に広いことになります。

一般的にスペアナや FFT アナライザの縦軸の目盛りは 10 段階で、一般的な使い方で 100dB 表示ですが、機器自体のノイズ・フロアはその画面(これを「管面」と私は呼びたい…)下側に見えます。つまり機器のダイナミック・レンジは 100dB もありません。

この図 10 の低域での「もやもやノイズ」は-100dB 以下であり、今回のような高ダイナミック・レンジの測定環境でようやく気が付いたもので、これまでの測定環境では気が付かなかったものなのでした。

「このノイズ源は何だろうか」と自宅ラボの測定器、パソコン(測定に用いている以外のもの)などの電源をすべて切ってみましたが、それでも消えません。

RC 発振器自体から出ているとも思いましたが、非常に古い機器なので、電源回路はトランス+ダイオード・ブリッジ+ドロッパ型電源で構成されているため、RC 発振器の電源がノイズ源という可能性は低いと想定されます。

この業界の皆様がご存じのとおり、電子機器は電源を切っても、電源スイッチを入れればすぐに動作できるように(というより電源スイッチを監視するために)、電源は待機状態で「動作して」います。そのため周辺の機器の電源スイッチをすべて切ったとしても、外来のノイズがゼロになることはありません。ムムム…です。たくさんの差込口かつ複数個ある自宅ラボのコンセントから、測定器の差込口を一個ずつ引っこ抜くことは物理的に難易度が高い状態でした。

これから長い、かなり長い(他の仕事もあるので、早く決着つけないと…、なのですが)時間をかけて回避策を考えていきました。とはいえ、使えるカードが限定される自宅ラボ。たとえばシールド・ボックスなどを用意することができません…。

 

高調波の軽減をまずやってみた

まずは RC発振器の高調波を除去するためにローパス・フィルタを作りました。信号源抵抗は 600Ω、負荷抵抗も 600Ω として図11 のような 5 次 LC LPF を作りました。実機は図 12 のような感じです。10 年ほど前に作った BNC コネクタで実験回路を構成できるシャーシにバラック組み(仮り組み)として作ってみました。300kHz で-3dB になるフィルタです。あまりにもアマチュア・チックですいません(汗)。

これで少しは高調波が減ってくれると願うばかりです…。なおEVAL-AD7960FMCZ のフロントエンドでも歪みが出ますので、この軽減が直に FFT スペクトラムに影響するものではありませんが。

 

低域の「もやもやノイズ」の原因はやはり待機電源からの迷結合だった

図 11 の 5 次 LC LPF に接続する RC 発振器のケーブルを抜いて、5 次 LC LPF 入力をショートすると、もやもやノイズは消え去ります。ということから、RC 発振器の経路を源とするノイズだと切り分けすることはできました。

そこで「なんとか回路テクニックで」と思い、コモンモード除去とシングルエンド・差動変換を実現するため、図 13 のようなトロイダル・コアによるトランスを作ってみましたが、磁界ループが広くなってしまうようで、「もやもやノイズ」はさらに大きくなってしまいました(笑笑笑)。全く違う周波数にもノイズが生じてしまいました。トホホです。

それでも格闘していると、解決は訪れてくれるものです。RC 発振器の上に配置してあるオシロスコープ(TDS784D)のプローブのグラウンド・クリップを RC 発振器に接続した状態で、EVAL-AD7960FMCZ に信号を注入するともやもやノイズが消えたのです…。

図 9 の上に少し見えていますが、このオシロスコープの待機用電源回路のスイッチング・ノイズが金属棚(これも電気的に浮いていまして…)を挟んで、RC 発振器のケースに結合していたのです。RC 発振器の AC 電源はグラウンド端子付きのものではないため、シャーシ・グラウンドが共通にならない、というところも迷結合の原因と考えられます。

ともあれようやくこれで実験結果をお見せできるレベルの実験系ができました!この状態で先と同じ-20dBFS、1Vp-p の信号を注入し(レベルを大きくすると歪みが増大するためこの程度としました)、5Msps でサンプリングし、65536 ポイントで FFTしたスペクトラムを図 14 に示します。

それでもスプリアスと思われる信号が-115dBFS くらいのところに観測されます。750kHz 付近に見えているスプリアスは何も接続せずとも出ていたものです。400kHz 付近に見えているものはRC発振器からの入力ケーブルを外すと消え去りますが、接続した状態で RC発振器の出力レベルを変化させても、FFT観測結果は変わらない、というこれまた不思議なスプリアスです。これも迷結合でしょうか。「本格的にシールド・ボックスなどを用意しないといけないなあ」と現在のラボ環境(と自分の能力!)の限界を思い知ったものでした(>_<)。

図 11. 300kHz で-3dB となる 5 次 LC LPF(入出力インピーダンス 600Ω)
図 11. 300kHz で-3dB となる 5 次 LC LPF(入出力インピーダンス 600Ω)
図 12. 図 11 の 5 次 LC LPF を実際に作ってみた(入出力インピーダンス 600Ω。アマチュア・チックですいません。それでも一応相互インダクタンス結合を避けるために、黒の 470uH のインダクタは 90°弱相互に傾けてあります)
図 12. 図 11 の 5 次 LC LPF を実際に作ってみた(入出力インピーダンス 600Ω。アマチュア・チックですいません。それでも一応相互インダクタンス結合を避けるために、黒の 470uH のインダクタは 90°弱相互に傾けてあります)
図 13. トロイダル・コアによるコモンモード除去フィルタを作ってみたが、ノイズはさらに大きくなってしまった!
図 13. トロイダル・コアによるコモンモード除去フィルタを作ってみたが、ノイズはさらに大きくなってしまった!
図 14. なんとかお見せできるレベルとなった FFT 観測結果(信号は 250kHz、-20dBFS、65536 ポイント FFT)
図 14. なんとかお見せできるレベルとなった FFT 観測結果(信号は 250kHz、-20dBFS、65536 ポイント FFT)

 

今回はとりあえずここまで。次回乞うご期待

とりあえず今回はここまででいったん終わりにいたします。次回以降で、実際に ADC の信号源(駆動)抵抗を変えて、駆動抵抗を大きくしていったときの FFT スペクトラムの変化や、リファレンス入力周辺のインピーダンスを変化(容量を小さく、駆動抵抗を大きく)したときの FFT スペクトラムの変化を見ていきたいと思います。

興味深い結果が出ています。如何に ADC の駆動インピーダンスを低くすることが重要かご理解いただけると思いますので、乞うご期待ください。