NビットD/Aコンバータ(DAC)の伝達関数は、次式のように表すことができます。
ここでは、Aはアナログ出力、Dはデジタル入力、Gはゲイン、VFSは公称フルスケール電圧、VOSはオフセット電圧です。理想的なDACの場合、G=1、VOS=0になります。
キャリブレーションが必要かどうかは、デバイスのオフセット誤差とシステムの要求仕様によって決まります。16ビット、16チャンネルDACのAD5360は工場調整済みですが、数mVのオフセットが存在する可能性はあります。次の例は、単純なソフトウェア・アルゴリズムで未知のオフセットを1mV(typ)未満に低減する方法を示しています。この方法は、工場出荷時のキャリブレーションだけでなく、DACの使用開始後いつでもオフセット補正に使用できます。
AD5360の内蔵オフセットDACは、メインDACの出力範囲を正のユニポーラ、負のユニポーラ、0V中心のバイポーラ、非対称のバイポーラに設定できます。オフセットDACのデフォルト設定値は、5Vリファレンス使用時に±10Vの出力範囲です。オフセットDAC自身にもオフセット誤差があります。16個のDAC出力は出荷時にオフセットDACのデフォルト設定値を用いて調整トリミングされるため、この状態ではDAC出力オフセット誤差は補正されています。しかしオフセットDACをデフォルトから変更すると、そのオフセット誤差がメインのDAC出力のオフセット誤差に影響します。
AD5360の2つの機能によって、オフセット・キャリブレーションは簡素化します。1つはGPIOピンで、レジスタの読出しによってそのステータスを判定します。もう1つは内蔵のメインDAC出力モニター用のマルチプレクサで、16個のDAC出力のいずれか、または2つの外部電圧をソフトウェア制御で1本のピンに切り替えて出力することができます。
動作原理
オフセット・キャリブレーションは以下のように行われます。外部に付けられたアナログ・コンパレータ(AD790)が2つの電圧MON_OUTとSIGGNDを監視します。MON_OUTは未知のオフセット(補正前のオフセット誤差)を含むDAC出力で、SIGGNDはDACのグラウンド・リファレンス(0V信号)です。コンパレータの出力は、未知のオフセットがSIGGNDより大きいか小さいかどうかを示します。DACの出力は、コンパレータの出力がトグルして、DAC出力電圧がコンパレータで検出できるほどSIGGNDに近くなるまでインクリメントまたはデクリメントします。コンパレータ出力はGPIOピンに接続され、そのステータスは関連するレジスタを読み出すことで判定できます。図1に回路図を示します。
AD5360のマルチプレクサは、選択したDAC出力をMON_OUTに接続します。このスイッチの抵抗RDSONは低いとはいえゼロではないため、MON_OUTからの電流によりRDSonで電圧降下が発生し、出力誤差が生じます。これを防ぐために、低ノイズ・アンプAD8597によってMON_OUTをバッファリングします。アンプ出力のローパス・フィルタは、高精度の高速コンパレータAD790が検出してしまう高域のノイズを低減し、誤ったトリガを防止します。AD790は±15V電源で動作し、AD5360と電源互換性があります。また、AD790の最大差動入力電圧は15Vであるため、入力でアッテネートしなくてもAD5360の出力電圧を扱うことができます。図1の回路では、チャンネル・オフセットが正の値になるとコンパレータ出力がローレベルになります。これは、出力電圧を下げてオフセットを補正する必要があることを示しています。また、チャンネル・オフセットが負の値になるとコンパレータ出力はハイレベルになります。この場合は、出力電圧を上げてオフセットを補正する必要があります。
AD5360のモニター・マルチプレクサとGPIOの構成
0x0C002X(Xは必要な出力チャンネル)をモニター特殊機能レジスタに書き込むと、モニター・マルチプレクサをイネーブルし、必要なチャンネルを選択できます。これが行われると、MON_OUTピンに選択したチャンネルと同じ出力電圧があらわれます。GPIO特殊機能レジスタのビット0は、GPIOピンのステータスを示します。読出し/書込みレジスタの詳細は、AD5360のデータシートを参照してください。
チャンネル毎のキャリブレーション
図2は、キャリブレーション・ルーチンを示しています。DACチャンネルには0x8000がロードされます。理論的には、これによってSIGGND(すなわち0V)に等しい電圧が設定されます。この例では、あるDACチャンネルが負のオフセットを持つものと仮定しています。GPIOレジスタを読み出すと、コンパレータ出力がローレベルであることがわかります。この場合、コンパレータ出力がハイにトグルするまでその入力をインクリメントする必要があります。DAC入力レジスタに書き込むコード値を次第に上げていきながら、GPIOレジスタの読出しを続けておこないコンパレータがトグルするところを検出します。図2から、これはコード0x8009に発生することがわかります。AD790の最大ヒステリシス帯域は0.65mVであるため、DACコード値をここから下げてゆくことで、DACオフセットをさらに正確に判定することができます。コンパレータ出力は再びコード0x8006でローにトグルしました。したがって、出力がSIGGNDに最も近くなる値は、コード0x8006から0x8009のどこかに存在します。この例では0x8007を選択するのが最適ですが、このシステムを使って一番良い出力が得られるコードを判定することはできません。コンパレータとオペアンプのオフセットのために、2つのコンパレータ・トリップ点の間のどのコードで最高の結果が得られるかが判定できないのです。いずれにせよDACチャンネルの場合はSIGGNDから1mV未満の値になります。
結論
この方法で、ソフトウェア・アルゴリズムと外部部品を数点使って未知のオフセット誤差を1mV未満に低減することができます。