D/Aコンバータの基本的なキャリブレーション方法

理想的なD/Aコンバータ(DAC)に、デジタル・データを入力として与えれば、それに対応する正確な電圧が出力されるはずです。しかし、現実のDACを使用した場合にはそうはなりません。出力電圧の精度は、DACをはじめ、シグナル・チェーンで使われる各種コンポーネントのゲイン誤差やオフセット誤差の影響を受けます。したがって、正確な出力電圧を得るためには、それらの誤差を補償しなければなりません。その補償は、外付けのコンポーネントによる調整や製造後のトリミングによって実現することも可能です。しかし、デジタル・キャリブレーションを利用すれば、ゲイン誤差/オフセット誤差を考慮してDACに与える入力を調整するということが可能になります。そのようにすれば、外付けコンポーネントによる調整やトリミングは不要になります。

オープンループ・システムのキャリブレーション

オープンループ・システムには帰還パスがありません。出力電圧が適正な値であるか否かは設計者に任されます。通常、高い精度を得るには、14~16ビットの分解能を備えるDACが必要です。ここで重要なのは、データシートの積分非直線性(INL)と微分非直線性(DNL)の仕様には、ゲイン誤差とオフセット誤差は含まれていないということです。これらの誤差はデバイスごとに異なり、個々に補正を行う必要があります。多くの場合、その誤差の補正は工場から出荷される際、キャリブレーションの一部として行われます。

図1は、理想的なDACと実際のDACの伝達関数を示したものです。この例の場合、0Vの出力が期待されるケースでも、オフセット誤差として負の出力電圧が生じます。また、ゲイン誤差により、理想的な状態と比べて広い範囲(スパン)の出力が生成されます。

図1.DACの伝達関数
図1.DACの伝達関数

DACの伝達関数は、y = mx + cで表される直線としてモデル化することができます。

ここで、各変数の意味は以下のとおりです。

y:出力

m:伝達関数の傾き

x:DACの入力

c:オフセット電圧

 

理想的なDACでは、ゲインmの値は1、オフセットcの値は0です。そして、出力は完全に直線的に入力に追随します。現実のDACでは、ゲインおよびオフセットの値は理想どおりにはなりません。しかし、それらの値がわかっていれば補正することは可能です。

例えば、分解能が16ビットのDACにおいて出力スパンが公称0V~10Vであったとします。そして、デジタル入力が0に設定されているときに、-30mVの出力が測定されたとします。加えて、デジタル入力を65535(フル・スケール)に設定した場合に10.02Vの出力が測定されたとしましょう。

その場合、以下のようなことがわかります。

◦ オフセット誤差の値は-30mV

◦ スパン誤差は20mV - (-30mV) = 50mVで、実際のスパンは10.05V

◦ ゲインは10.05V / 10V = 1.005

 

ゲイン誤差を補償する

ゲイン誤差を補償するためには、DACのデジタル入力にゲイン誤差の逆数を乗じます。つまり、以下のような処理を行います。

x1 = x × (10 V/10.05 V)

 

ここで、xは本来の入力の値、x1は実際にDACにロードされる値です。なお、この例の場合、0~65535の入力によって10.05Vのスパンが生成されます。したがって、本来の10Vのスパンは0~65209の入力によって得られることになります。

オフセット誤差を補償する

現実のDACでは、オフセット誤差により、デジタル入力が0である場合に0Vではない出力電圧が生成されます。オフセット誤差は測定が可能であり、相応のデジタル値をDACの入力に加える/減ずることによって補正できます。

上記の例では、DACがとり得るコードの数は0~65536で、出力スパンは10.05Vです。すなわち、1LSBのステップは以下のように求められます。

10.05 V/65536 = 153.35 µV.

 

この例における-30mVのオフセット誤差は、(30mV /153.35μV) = 196 LSBに相当します。そのため、DACに196が入力されたときに出力電圧が0Vになります。

誤差を補正する式

ゲイン誤差とオフセット誤差を補償すれば、正確な出力電圧が得られるようになります。以下に示す式を使えば、所望の電圧を生成するために、DACに入力すべき値を計算することができます。

[ 現実のDACの入力]= (10V / 10.05V) ×[ 理想的なDACの入力] + 196

補償方法のオプション

上述した計算をDSPやマイクロプロセッサで実行するとしたら、追加のオーバーヘッドが生じ、コストと時間が増大することになります。そこで、一部のDACは自身で計算を行うためのレジスタを備えています。それを利用すれば、プロセッサはそれ以外の機能を実行するためにリソースを割けるようになります。アナログ・デバイセズは、denseDACブランドのマルチチャンネルDACとして「AD536x」、「AD537x」、「AD538x」、「AD539x」の各製品ファミリを提供しています。これらの製品の分解能は12~16ビットであり、8~40のチャンネルを備えています。単電源で動作する製品の場合、5Vの出力を生成できます。両電源の製品の場合、±10Vの出力を生成することが可能です。いずれの製品も、各チャンネル向けにm、cに対応する専用のレジスタが用意されています。そのため、チャンネルごとにゲインとオフセットのキャリブレーションを実施できます。

ここで図2をご覧ください。これは、16ビット、40チャンネルのDAC「AD5370」の1つのチャンネルの例を示したものです。mのレジスタ、cのレジスタの値を使用し、以下のようなステップで補償を行います。

  1. DACの入力をゼロ・スケール、フル・スケールに設定し、オフセット誤差とフル・スケール誤差を測定します。
  2. とり得るコードの数(この例では65536)によってスパンを割ることで、実際のLSBに相当する値を計算します。
  3. mのレジスタにはデフォルト値が設定されています。それを超えるスパンに相当するLSB数を減じます。例えば、スパンが10Vよりも50mV広くなる場合、そのスパンの超過分は326 LSBに相当します。
  4. cのレジスタにはデフォルト値が設定されています。それに対するオフセットに相当するLSBの値を加えます。例えば、-10mVのオフセットは65 LSBに相当します。

このようにキャリブレーションを実施することにより、各DAC製品を理想的なものと同様に扱えるようになります。上述した方法により、DAC内部、あるいはシステムの誤差を補償するための適切な値を計算することができます。

図2.AD5370の1つのチャンネルに対するキャリブレーション方法
図2.AD5370の1つのチャンネルに対するキャリブレーション方法

著者

Ken Kavanagh

Ken Kavanagh

Ken Kavanaghは、高精度DACグループのアプリケーション・エンジニアです。1994年以降アプリケーション関連の仕事に従事しており、現在はnanoDAC®およびdenseDAC™製品のアプリケーション・サポートを担当しています。1999年にアイルランドのリムリック大学で工学士の学位を取得しました。

本記事に関するご注意

本記事は過去に作成されたものであり、本文内で取り上げられている製品やソフトウェアの一部につきましては、場合により新規設計には非推奨、製造中止となっている場合がございます。
ご了承のほど、お願い申し上げます。
Image
本記事に関するご注意