複数のデータファイルを結合して、INL/DNLの処理を最適化

要約

このアプリケーションノートでは、MATLABの強力なコマンドのいくつかを利用して、メモリ量の限られた高速データ収集システムのコード密度を高め、あらゆる高速A/Dコンバータ(ADC)のINLとDNLのテストに必要な多数のコードの繰り返しを実現する方法について示しています。

この簡潔なアプリケーションノートは、MATLAB(TM)¹などのデータ処理ソフトウェアを使用して、ロジックアナライザのメモリ深度が限られた状況でコードの数を増やす方法について記述しています。HP16517A高速状態カード(135MHzを超えるデータレート用)を装備したロジックアナライザ(LA)のメインフレームHP16500Cを用いて超高速データを収集したことのあるエンジニアであれば、おそらくこのようなメモリ制限をすでに経験していることでしょう。

標準バージョンのこのHPシステムは通常、64kの最大メモリ深度を備えていますが、1回のテストランで65536のデータポイントしか収集することができません。64kのメモリが収集するデータポイントは、INL/DNLグラフを正確に描写するには到底十分ではありません。実際、INLとDNLのグラフを描くには、一般的に256k~4Mのデータポイントをロジックアナライザによって収集する必要があります(このデータポイントはMATLABまたは別の信号処理ソフトウェアによって処理されます)。

上述のデータ収集システムの標準メモリ深度64kを使用して適切なINL/DNL特性を得るためには、複数のデータレコードを収集して、1つのファイルに結合する必要があります。たとえば、256kのデータポイントが必要な場合には、4セットの64kのデータポイントを収集して結合する必要があります。その後、アプリケーションノート2085 「Histogram Testing Determines DNL and INL Errors」に記載したMATLABプログラム(または同様のソースコード)でこれらを処理します。

複数のデータレコードを、INL/DNLを処理することができる大きさの1つのファイルに結合するには、以下の手順を実行します。

  1. 高速状態カード(HP16517A)を用いて、64kのデータポイントを収集します。
  2. コードファイル内のコードの一部と見なされないLA固有の行をすべて削除し、ファイルを保存します。
  3. 新しい変数をファイルの内容に割り当てます。
    MATLAB command: a=load('inltest1');
  4. 高速状態カードを用いて、別の新しい64kのデータレコードを収集します。
  5. 先ほどと同様に、コードファイル内のコードの一部と見なされないLA固有の行を削除し、ファイルを保存します。
  6. 別の新しい変数を新しいデータファイルの内容に割り当てます。
    MATLAB command: b=load('inltest2');
  7. 両方のデータレコード(AとB)を結合し、これらを新しい変数に割り当てます。
    MATLAB command: c=vertcat(a,b);
  8. 結合したデータレコードのサイズをテストしたい場合は、MATLABで「size(c);」と入力するだけで、132kのデータレコードを受け取ることができます。
  9. この新しいレコードを.TXTまたは.DATファイルとして保存し、INL/DNLの計算用のデータとしてMATLABが処理することができるようにします。
    MATLAB command: save inldata.txt c -ascii;
  10. 上記のコマンドは、ファイルをあらかじめ定義されたディレクトリにASCIIファイルとして保存するものであり、このファイルをINL/DNLのテストルーチンで利用することができます。
  11. 上記のプロセスは、1つのMATLABセッションにおいてすべての手順を実施する場合に機能します。事前に結合したファイルを用いてこのプロセスを実施することもできます。この目的の場合には、データが保存されているファイルをロードし、そのファイルに新しい変数を割り当てるだけです。
    MATLAB command: d=load('inldata.txt');
  12. このタスクが完了すれば、新しいデータのセットを取り込んで、既存のデータに追加することができます。別の64kのデータレコードを収集し、その内容をまた別の新しいマトリックス変数に割り当てます。
    MATLAB command: e=load('inltest3');
  13. 古いテキストファイル(変数dに割り当て済み)を、変数e内の新しいデータに結合します。
    MATLAB command: f=vertcat(d,e);
  14. ステップ9に従い、拡張された新しいマトリックスの内容をASCIIファイルに保存します。
MATLAB内で「y=vertcat(a,b,c,d,e,f,g,h)」というコマンドを入力するだけで、複数の変数を同時に結合することもできます。既存の機器と簡単なソフトウェアコマンドを用いてこれらのテストを実行するには、多数の異なる方法、プログラム、およびセットアップ構成があります。ここに示したプロセスは、MATLABの強力な性能を使用した一例にすぎません。

INL/DNLテストプログラムでループを閉じるには、MATLABでINL/DNLテストルーチンを呼び出すだけです。このルーチンを実行し、指示に従って、連結されたデータセットをプログラムにロードします。結合したデータを.TXTまたは.DATファイルに保存している場合、マトリックスファイルのデータパスをログ記録することを忘れないでください。プログラムのプロンプトに従って、正確なパスとファイル名をテストルーチンにロードする必要があります。またプログラムは、データポイントの数(連結されたマトリックスのサイズ)、コンバータの分解能、およびその中間コードも要求します。INL/DNLテストプログラムを実行する前に、必ずこの情報を準備してください。

参考資料

  1. アプリケーションノート283 「高速アナログ-ディジタルコンバータ(ADC)のINL/DNL測定
  2. アプリケーションノート2085 「Histogram Testing Determines DNL and INL Errors