要約
多くの設計エンジニアは、ADC仕様における微妙な点が、希望するシステム性能以下の性能へとつながることがよくあるという場面に出くわします。このアーティクルはシステム要件をもとにADCを選択する方法について説明し、ADCの測定を行う際の様々な誤差要因について詳しく説明します。
分解能12ビットのアナログ-ディジタルコンバータ(ADC)を使用したからといって、システム精度が12ビットになるとは限りません。データ収集機器の性能が予想より大幅に低くて、エンジニアを驚かせることもあります。最初のプロトタイプ製造後に問題に気づき、生産開始の期日が迫る中でADCの性能を向上させるために長時間を費やして設計をやり直すことになります。いったい何が起こったのでしょう?最初の解析の後に何が変わったのでしょう?ADCの仕様を徹底的に理解することにより、所望の水準を下回る性能の原因となる微妙な点が明らかになります。ADCの仕様の理解は、特定のアプリケーションに最適なADCを選択するためにも役立ちます。
全体のシステム性能要件を作成することから始めましょう。システム内の部品はそれぞれの誤差を持ちます。目標とするのは誤差の合計を一定リミット以内に収めることです。ADCは信号経路において重要な部品であり、適切なデバイスを選択するために注意を払わなくてはいけません。全体システム性能の評価を始める前に、ADCに関して、変換レート、インタフェース、電源、消費電力、入力レンジ、そしてチャネル数の要件が許容できるものであると仮定しましょう。ADCの精度は、積分非直線性誤差(INL)、オフセットと利得誤差、そして電圧リファレンスの精度、温度効果、AC性能といったいくつかの重要な仕様に依存します。ADCの分析を始めるにあたってはDC性能からみてゆくのが賢明です。ADCは、AC性能に標準化されていないテスト条件を多用しているため、DC仕様に基づいた2つのICを比較する方が容易であるためです。DC性能は、一般的にAC性能よりも良好です。
システムの必要条件
全体のシステム誤差を測定するのによく使われる2つの方法は、根二乗和(RMS)法とワーストケース法です。RSS法を使っている際、誤差項はそれぞれ二乗され、加算され、次にその平方根をとります。RSS誤差予算は以下で得られます。
ここで、ENは特定の回路部分またはパラメータの項です。この方法は、すべての誤差項が非関連である際に(その場合があるかもしれませんしないかもしれませんが)最も高精度となります。ワーストケース誤差分析では、すべての誤差項が加算されます。この方法では誤差が特定制限値を超えないことを保証します。誤差がどれだけ悪くなりうるかの制限値を設定するので、実際の誤差は常にこの値以下です(たいてい大幅に低い)。
測定された誤差は通常、この2つの方法で得られた値の間になりますが、RSS値に近い場合が多いです。誤差予算によって、誤差項の標準あるいはワーストケースの値を使うことができる点にご注意ください。この決定は、測定値の標準偏差、特定パラメータの重要度、ほかの誤差と比較した誤差の大きさなど多くの要因によります。そのため、従わなくてはいけない厳しいルールはありません。このアーティクルでの分析ではワーストケース法を使用します。
仮に、0.1%すなわち10ビットの精度(1/210)が必要であるとすると、これより高い分解能のコンバータを選択することが妥当であり、12ビットコンバータを選択すれば十分であると考えることができます。しかし仕様を検討しない限り、12ビットの性能が得られるという保証はありません(もっと良いかもしれませんし、悪いかもしれません)。例えば、積分非直線性誤差が4 LSBの12ビットADCは、たかだか10ビットの精度(オフセットおよび利得誤差がキャリブレーション済みとして)しか提供できません。しかしINLが0.5 LSBのデバイスであれば、0.0122%誤差、すなわち13ビットの精度(利得およびオフセット誤差を除去した後で)を提供できます。最良条件の精度を計算するには、最大INL誤差を2Nで割ります(Nはビット数です)。この例では、ADCの誤差として0.075% (即ち11ビット)を許容すると、残りの回路に許される誤差は0.025%となります。これには、センサおよび関連フロントエンド信号調整回路(オペアンプ、マルチプレクサ等)の誤差が含まれます。ディジタル-アナログコンバータ(DAC)、PWM信号またはその他信号経路に存在するアナログ出力信号の誤差も含まれるかもしれません。
全体システムは、信号経路における各回路部品の誤差項の合計を基に全誤差予算を行うと仮定します。その他としては、1kHzの帯域幅で変化の遅いDCタイプのバイポーラ入力信号を測定し、動作温度範囲は0℃~+70℃、性能保証範囲は0℃~50℃とします。
DC性能
微分非直線性
最初に検討するべき仕様は、ADCの主要パラメータとして挙げられてはいませんが、微分非直線性(DNL)誤差です。DNLは1つのコードが近隣のコードからどれだけ離れているかを示します。この距離は入力電圧の大きさの変化として測定された後LSBに変換されます(図1)。INLはDNL誤差の積分です。DNLが主要パラメータのリストに含まれていないのはこのためです。ADCの性能の良さを表わす重要な要素は「ミッシングコードがないこと」です。これは、入力電圧範囲を掃引した時に、全ての出力コードコンビネーションがコンバータ出力に現れるということです。DNL誤差が±1 LSBより小さいと、ミッシングコードがないことが保証されます(図1a)。図1b、1cおよび1dに、3つのDNL誤差値が示されています。デバイスのDNL誤差が-0.5 LSB (図1b)の場合はミッシングコードがないことが保証されますが、誤差値が-1 LSB (図1c)の場合はミッシングコードがないと保証されるとは限りません(コード10がありません)。最大DNL誤差の仕様が+/-1のADCは、殆どの場合ミッシングコードがあるかどうかも仕様に記載されています。生産試験リミットはデータシートリミットよりも厳しいので、通常はミッシングコードがないことが保証されています。DNL値が-1より大きいと(図1dにおいて-1.5 LSB)、そのデバイスにはミッシングコードがあります。
DNL誤差の値が「オフセット」されていると(即ち-1 LSB、+2 LSB)、ADCの伝達関数が変わります。オフセットDNL値は理論的にはミッシングコードなしの可能性があります。ここで重要となるのは下限を-1 LSBにすることです。DNLは一方向で測定され、通常は伝達関数の上方に向かいます。コード[N]において遷移を起こさせるために必要な入力電圧レベルが、コード[N+1]における遷移に必要な入力電圧レベルと比較されます。その差が1 LSBであればDNL誤差はゼロです。差が1 LSBよりも大きければDNL誤差は正になり、差が1 LSBよりも小さければDNL誤差は負になります。
ミッシングコードがあるからといって必ずしも悪いわけではありません。必要な分解能が13ビットである場合に、DNL仕様が< = +/-4 LSBで価格が5ドルの16ビットADC (実効的には14ビットでミッシングコードなし)と、DNL仕様が< = +/-1 LSBで価格が15ドルの16ビットADCが選択肢であるならば、グレードの低い方のADCを購入することにより、部品コストを大きく節約すると共にシステム必要条件を満たすことができます。
INL
INLはDNL誤差の積分として定義されます。すなわち良いINLはDNLを保証するのです。INL誤差は、コンバータの測定値が理想的な伝達関数の値からどれだけ離れているかを示します。上記の例でいえば、12ビットシステムにおいてINL誤差が+/-2 LSBであるということは、最大非直線性誤差が2/4096、即ち0.05%ずれる可能性を意味します(これだけですでに割り当てられたADC誤差予算の約3分の2に相当します)。ですから、少なくとも1 LSBの部品が必要です。INL誤差が+/-1 LSBであれば精度は0.0244%となり、割り当てられたADC誤差予算の32.5%に相当します。仕様が0.5 LSBであれば精度は0.012%となり、ADC誤差予算リミットの約16% (0.012%/0.075%)となります。INL誤差とDNL誤差のキャリブレーションや補正は簡単にはできないことに注意して下さい。
オフセットおよび利得誤差
オフセットおよび利得誤差は、マイクロコントローラ(µC)またはディジタル信号プロセッサ(DSP)を使用して容易に較正できます。オフセット誤差の場合、コンバータがバイポーラ入力信号を許容するのであれば測定は簡単です。バイポーラシステムにおいては、オフセット誤差によって伝達関数がずれますが、利用可能なコードの数は減少しません(図2)。バイポーラ誤差をゼロにするための方法は2つあります。第1は、伝達関数のx軸とy軸をずらして、負のフルスケール点がユニポーラシステムのゼロ点に合うようにする方法です(図3a)。この技法においては、オフセット誤差を除去して、その後伝達関数を「新しい」ゼロ点の周りで回転させることによって利得誤差を調整します。第2の技法は反復的なアプローチを使用します。最初にADC入力に0Vを印加して変換を実行します。この変換結果はバイポーラゼロオフセット誤差を表わします。次に、負のフルスケール点の周りでこの曲線を回転させることによって利得調整を行います(図3b)。伝達関数がA点の周りで回転したこと、それによってゼロ点が所望の伝達関数からずれることに注意して下さい。このため、あとでオフセット誤差較正が必要になるかもしれません。
ユニポーラシステムはもっと複雑です。オフセットが正の場合はバイポーラ電源と同じ方法を使用しますが、ADCのレンジの一部が失われるという点が異なります(図4参照)。オフセットが負の場合は、変換結果がそのままオフセット誤差を表わす訳ではありません。ゼロより下ではコンバータは単にゼロを表示するだけです。ですから、オフセット誤差が負の場合は、入力電圧を徐々に増加させて、どこでADC遷移が初めて起こるかを見つける必要があります。ここでもADCのレンジの一部が失われます。
上記の例に戻って、オフセット誤差の2つのシナリオを以下に示します。
- オフセット誤差が+8mVでリファレンスが2.5Vの場合、これは12ビットADCにおける13 LSBの誤差に相当します(8mV/[2.5V/4096])。分解能はまだ12ビットですが、各変換結果から13コードを差し引いてオフセット誤差を補償する必要があります。このシナリオで実際に測定可能なフルスケール値は2.5V (4083/4096) = 2.492Vとなります。これより大きい値であればADCがオーバーレンジになります。ADCの「ダイナミックレンジ」即ち入力値の範囲は小さくなります。これは、より分解能の高いADCにおいては更に重要であり、16ビットレベル(VREF = 2.5V)においては、8mVは210 LSBに相当します。
- オフセットが-8mV (ユニポーラ入力の場合)であれば、変換が行われても、ゼロに近い小さなアナログ入力値はアナログ入力が+8mVを超えるまで表示されません。これもADCのダイナミックレンジを減少させます。
利得誤差は、フルスケール誤差からオフセット誤差を差し引いたものとして定義されます(図5)。フルスケール誤差は伝達関数曲線の最後のADC遷移において測定され、理想的なADC伝達関数と比較されます。利得誤差は、ソフトウェアでリニア関数y = (m1/m2)(x)を使用することによって簡単に補正できます。ここで、m1は理想的な伝達関数のスロープ、m2は測定された伝達関数のスロープです(図5)。
利得誤差の仕様は、ADCの電圧リファレンスによる誤差を含む場合と含まない場合とがあります。電気的仕様では利得誤差の試験条件をチェックして、内部リファレンスと外部リファレンスのどちらが使われているかを確認することが重要です。通常、利得誤差はオンチップリファレンスを使用するとずっと大きくなります。利得誤差がゼロであれば、変換時にフルスケールアナログ入力が印加された場合の変換結果は、全て1 (12ビットの例では3FFh)になります(図6)。実際のコンバータは理想的ではないため、フルスケールより大きな電圧が印加された時(利得誤差が負)あるいはフルスケールより小さな電圧が印加された時(利得誤差が正)に、変換結果が初期に全部1になることがあります。利得誤差を調整する方法は2つあります。1つは特定のリファレンス電圧値において出力がフルスケールになるようにリファレンス電圧を微調整すること、もう1つはソフトウェアの直線補正曲線を使用してADCの伝達関数曲線のスロープを変えることです(一次リニア方程式または参照表を使用することができます)。
オフセット誤差の場合と同様に、利得誤差の場合もダイナミックレンジが減少します。例えば、フルスケール入力電圧が印加された時に得られたコードが理想の4096 (12ビットコンバータの場合)ではなく4050だとすると、負の利得誤差があることになり、上端の46コードは使用されません。同様に、フルスケールコードの4096がフルスケールより小さな入力電圧で表示される場合もADCのダイナミックレンジが減少します(図6参照)。フルスケール誤差が正の場合、コンバータが全部1の変換結果を与える点を超えて較正することはできません。
オフセットおよび利得誤差に対処する最も簡単な方法は、これらの値がキャリブレーションの必要がないくらいに小さいADCを見つけることです。オフセットおよび利得誤差が4 LSB未満の12ビットADCを見つけるのは比較的簡単です。
その他の僅かな誤差のソース
コードエッジノイズ
コードエッジノイズは、伝達関数上のコード遷移のところに現れるノイズ量です。データシートではよく仕様指定されません。高分解能のコンバータ(16ビット以上)はLSBが小さいため、コードエッジノイズがより顕著ですが、それでもコードエッジノイズの仕様が指定されていないことがよくあります。コードエッジノイズは数LSBに達することもあり、アナログ入力がちょうどコードエッジのところで実行される変換では、LSBにコードのちらつきが生じることがあります。コードエッジノイズが大きい場合は、このノイズを変換結果から効果的に除去するために複数のサンプルの平均をとることが必要となります。必要なサンプル数はいくつでしょうか?コードエッジノイズが2/3 LSB RMSである場合、これは約4 LSBp-pに相当します。ノイズを1 LSBに減少させるには、16サンプルが必要です(性能の改善度はサンプル数の平方根によって決まります)。
リファレンス
リファレンスが内部か外部かに関わらず、最大のADC誤差ソースの一つはリファレンス電圧です。リファレンスがチップに含まれている場合は、仕様が適正に定められていないことがよくあります。リファレンス誤差の原因を理解するには、特に3つの仕様(温度ドリフト、電圧ノイズ、および負荷レギュレーション)を考慮に入れる必要があります。
温度ドリフト
温度ドリフトはデータシートの中で最も見過ごされやすい仕様です。温度ドリフトがどのようにADCコンバータの分解能性能に影響を与えるかに注意して下さい(図7)。例えば、12ビットコンバータが拡張温度範囲(-40℃~+85℃)で精度を維持するためには、ドリフトは最大4ppm/℃である必要があります。残念ながら、このレベルのオンチップリファレンス性能を備えたADCコンバータは提供されていません。条件を緩めて温度変動を10℃とすると、12ビットADCのリファレンスは最大25ppm/℃しかドリフトできないことになり、これでもオンチップリファレンスとしては厳しい条件です。この誤差の重要性がプロトタイプ段階で明らかになり難い理由は、部品が類似のロットからきているためであり、製造プロセスの違いに起因する極端な仕様が試験結果に反映されていないからです。
システムによっては、温度が一定に保たれてドリフトの問題を回避しているために、リファレンス精度は大きな問題となりません。一部のシステムで採用されているレシオメトリック測定の場合は、センサを励起するのと同じ信号がリファレンス電圧として使用されるためにリファレンス誤差が除去されます(図8)。励起ソースとリファレンスが一体になって変動するため、ドリフト誤差は回避されます。
一部のシステムでは、キャリブレーションの頻度が高いためにリファレンスのドリフトが実質的に除去されます。更に、絶対精度ではなく相対精度が重要であるというようなシステムも存在します。この場合、リファレンスがゆっくりと経時変化してもシステムは所望の精度を提供します。
電圧ノイズ
もう一つの重要な仕様は電圧ノイズです。この仕様は、多くの場合RMS値またはピーク間値として定められます。性能への影響を調べるにはRMS値をピーク間値に変換して下さい。2.5Vリファレンスのピーク間電圧ノイズが出力において500µV (即ち83µV RMS)である時、このノイズは0.02%の誤差になりますが、これはぎりぎり12ビットの性能に相当します(しかもこれはコンバータ誤差を考慮する以前の話です)。理想的には、リファレンスノイズ性能を1 LSBよりずっと小さくして、ADCの性能を制限しない程度に抑えるべきです。通常、オンチップリファレンス付きのADCは電圧ノイズの仕様を定めていないため、誤差を決めるのはユーザの仕事になります。内部リファレンスを使用していて所望の性能が得られない場合は、オンチップリファレンスが原因であるかどうかを調べるために、非常に良質の外部リファレンスを使用して下さい。
負荷レギュレーション
注意するべき最後の仕様はリファレンスの負荷レギュレーションです。ADCに使用される電圧リファレンスは、他のデバイスを駆動するのに十分な電流を備えていることが多いため、他のICにも使用されます。これら他の部品へと流れる電流は電圧リファレンスに影響を与えます。即ち、流れる電流が大きくなるとリファレンス電圧が落ち込みます。リファレンスを使っているデバイスが間欠的にターンオン、オフすると、リファレンス電圧は上下に変動することになります。2.5Vのリファレンスのリファレンス負荷レギュレーション仕様が0.55µV/µAである場合に、他のデバイスに800µAの電流が流れると、リファレンス電圧は最大440µV変化しますが、これは0.0176% (440µV/2.5V)、即ち誤差マージンのほぼ20%になります。
その他の温度効果
温度に関するトピックを続けると、あまり注目されない仕様として、オフセットドリフトと利得ドリフトがあります。通常、これらの仕様は標準数値のみを定めているため、仕様がシステムの要件を満たすに十分かどうかを決めるのはユーザの仕事になります。オフセットおよび利得ドリフト値を補償する方法は2つあります。1つは、オフセットおよび利得ドリフトを完全に測定して、温度変化に応じて値を調整するためにメモリに参照表を作ることです。しかし、この方法は各ADCを個々に補償しなければならず、補償プロセスに時間がかかるので面倒です。2つ目の方法は、大きな温度変化があった時にキャリブレーションを実行することです。
温度キャリブレーションを一度だけ行うシステムの場合は、ドリフト仕様に注意することが重要です。初期オフセットがキャリブレーションされた後で温度が変化すると、ドリフト項に起因する誤差が生じて、キャリブレーションの効果は打ち消されてしまいます。例えば、温度Xで読取りが行われ、しばらく後に温度が10℃変化してから全く同じ測定を行ったとます。これら2つの読取り値は異なっている可能性があり、システムの再現性、ひいては信頼性が疑わしくなります。
メーカーが最大リミットを記載しない理由はコストが増えるためです。ドリフトテストには特別な基板が必要とされる上、製品が最大ドリフトリミットを超えないことを保証するために、テストフローに特別なステップを追加(即ち製造コストを追加)しなければなりません。
利得ドリフトは、内部リファレンスでテストされるデバイスの場合に特に問題になります。この場合、リファレンスドリフトは利得ドリフトパラメータに含めることができます。外部リファレンスの場合、ICの利得ドリフトは通常小さく0.8ppm/℃程度です。ですから、+/-10℃の温度変化から+/-8ppmの変化が生じます。例えば、12ビット性能は244ppmに相当します(1/4096 = 0.0244% = 244ppm)。即ち、誤差は12ビットレベルのLSBに比べてずっと小さいことになります。
AC性能
一部のADCは入力信号がDCであるかまたはDCに近い時にのみ良好に動作します。他に、DCからナイキストまでの入力信号に対して良好に動作するADCもあります。DNLとINLがシステムの必要条件を満たすというだけでは、AC信号の存在下でそのコンバータが同じ性能を示すということにはなりません。DNLとINLはDCテストの仕様であり、AC性能の感じをつかむには、AC仕様をみる必要があります。データシートの電気的特性表と標準動作特性はAC性能の手がかりを与えてくれます。検討するべき主な仕様は、信号雑音比(SNR)、信号雑音と歪み比(SINAD)、全高調波歪み(THD)およびスプリアスフリーダイナミックレンジ(SFDR)です。まず、SINADまたはSNRの仕様を検討するべきです。SINADは、入力サイン波のRMS値と、コンバータのノイズ(高調波[全高調波歪み]成分を含めてDCからナイキスト周波数まで)のRMS値の比として定義されます。高調波は入力周波数の倍数のところで発生します(図9参照)。SNRはSINADと似ていますが高調波成分を含みません。ですから、SNRは常にSINADよりも良いはずです。通常、SINADとSNRはいずれもdB単位で表示されます。
ここで、Nはビット数です。理想的な12ビットコンバータの場合、SINADは74dBです。この式をNについて書き直すと、RMSノイズの関数として取得される情報のビット数がわかります。
この式は実効ビット数(ENOB)の定義となっています。
SINADは入力周波数の関数です。周波数がナイキストリミットに向かって増加すると、SINADは減少します。データシートの仕様がナイキスト周波数と較べて低周波数でテストされている場合、性能はナイキストの近くで著しく悪化します。データシートの標準動作特性中のENOBグラフを見て下さい。ENOBが周波数と共に劣化する主な原因は、入力周波数の増加につれてTHDが悪化していくからです。例えば、測定する周波数でSINADの最小値が68dBである場合、ENOB値は11です。即ち、コンバータのノイズと歪み性能のために1ビットの情報が失われたことになります。これは、12ビットコンバータが最良の場合でも0.05%の精度しか提供できないことを意味します。INLはDC仕様であることに注意して下さい。ENOBはAC信号に対する非直線性に関する仕様です。
SNRは歪み成分を除去した信号雑音比です。SNRはコンバータのノイズフロアがどこにあるかを表わします。SNRが入力周波数の関数として急減することがあります。これはコンバータがそのポイント近辺の周波数用に設計されていないことを意味します。SNRを改善する方法の一つとしてオーバサンプリングがあり、これは処理利得を提供します。オーバサンプリングとは、測定する信号よりもずっと速いレートでサンプリングすることにより、コンバータのノイズフロアを下げる方法です。これにより、ノイズが周波数ドメインの広範囲に広がるために1つの周波数ビンにおけるノイズは実効的に減少します。2Xのオーバサンプリングでは、ノイズフロアが3dB減少します。
SFDRは、入力サイン波のRMS値と、FFTプロットの周波数ドメインで見られる最も大きなスパーのRMS値との比として定義されます。これは通常dB単位で表現されます。SFDRはADCのダイナミックレンジを最大限にすることが必要な一部の通信アプリケーションにおいて重要です。スパーがあると、ADCは小さな入力信号を変換できなくなります。これは、測定する信号よりも歪み成分の方がずっと大きくなることがあるからです。このためにADCのダイナミックレンジが制限されます。周波数ドメインに大きなスパーがあっても、SNRには大きな影響がないかもしれませんが、SFDRには大きな影響が出ることに注意してください。
最後に
前述のADCの例において、DCタイプの信号を測定しており、ADCはバイポーラ入力信号を許容するとします。MAX1241のBグレードを選んだ場合、DNL誤差は1 LSB、INL誤差は1 LSB(0.0244%)、オフセット誤差は3 LSB (3/4096 = 0.0732%)、利得誤差は4 LSB (0.0977%)です。これらの誤差を足し合わせると、全誤差が0.1953%となります。オフセットと利得誤差はキャリブレーションによって除去できるため、誤差は0.0244%に減ります。この場合、電圧リファレンス誤差が0.075% - 0.024% = 0.051%よりも小さければ、誤差予算内に留まります。ドリフトが5ppm/℃で50℃以上の温度変化があるとドリフト誤差は0.025%となり、残りの誤差予算は0.026%となります。12ビットの性能を実現するには、電圧ノイズ仕様が1 LSB (2.5V/4096 = 610µVp-pまたは102µV RMS)よりもずっと小さな電圧リファレンスが必要です。MAX6166は、ドリフトが5ppm/℃で広帯域電圧ノイズが30µV RMSであるので適しています。また、ADC (および必要であればその他の回路)を駆動するための電流ソースおよびシンク能力を十分に備えています。ノイズ仕様の30µVは180µVp-pに相当しますが、これは12ビットレベルのLSBの3分の1、11ビットレベル(この例のシステム必要条件)のLSBの6分の1です。
MAX1241の利得ドリフトをチェックすると、仕様は0.25ppm/℃、即ち50℃の温度変化に対して12.5ppmとなり、十分に仕様内に収まっています。
これで、仕様に起因する性能の隠れた問題を防止する実際的な解決法が得ることができました。この例ではAC性能には言及していませんが、ADCの仕様と、コンバータの性能に対するこの仕様の関係についての理解は、必要な性能を実現できるADC選択のための情報としては十分だと言えます。