CNT-91におけるゼロデッドタイムの連続測定
CNT‑91は、ゼロ時間による連続データ出力の概念を導入しています。
本ページでは、CNT‑90に関連する改善された機能について説明します。
まずは、CNT‑90とCNT‑91の異なる測定、出力データ転送モードの概要を説明させていただきます。
CNT‑90/CNT‑91の測定・出力データ転送モード
CNT‑90とCNT‑91は3つの異なるモードで動作できます。
- シングル(個別)測定
- ブロック測定
- ゼロデッドタイム シングル測定(CNT‑91のみ)
- ゼロデッドタイム ブロック測定
A : シングル測定
- READ?
- INIT+FETCH?
- GET
シングル測定とは、一度に1つの測定を実行し、ディスプレイとデータ出力 (GPIB または USB) に転送することを意味します。
接続されたコントローラから、GET コマンド (Group Execute Trigger) を使用してカウンターの個々の測定を1つずつトリガーすると、本モードでは測定間に約2msのデッドタイムが発生します。
本モードでは、内部測定メモリバッファは使用されません。
上記のコマンドをシングル測定に使用すると、測定を初期化(start)するタイミングを正確に制御できます。
通信プロセスは簡素化されます。
- Controller talker /CNT-9x listener: “start measurement” (GET)
- Controller talker /CNT-9x listener: “send result” (FETCH?)
- CNT-9x talker/ Controller listener: “sending result data”
- Controller talker /CNT-9x listener: “start next measurement” (GET) …
CNT‑91: CNT‑90 モードに加えて、CNT‑91 には追加の出力モードがございます。
Talker only (SYSTem:TALKonly ON)
Talker は、カウンターが 1 回トリガーされ、その後コントローラからの後続のトリガー コマンド (GET) を待たずに、可能な限り最高のレートで測定データを出力するという点のみ、GET トリガーによる個別の測定とは異なります。
これにより、測定間でコントローラが制御を行わなくなるため、転送のオーバーヘッドが軽減されます。
コントローラは個々の測定を初期化できず、コントローラがInterface Clear コマンドまたはカウンターのフロント パネルの CANCELキーを押して転送を停止するまで、測定データは送信され続けます。
この「リアルタイム」転送モードでの測定間のデッドタイムは 250µs未満です。
上記を達成するためにも、通信プロセスは簡素化されます :
- Controller talker /CNT-90 listener: “go to Talker only mode and start measurement”
- CNT-90 talker/ Controller listener: “sending result data”
- CNT-90 talker/ Controller listener: “sending result data”
- CNT-90 talker/ Controller listener: “sending result data”
- etc…
B : ブロック測定
- READ:ARR?
- INIT + FETCH:ARR?
ブロック測定とは、特定の測定機能をセットアップすることを意味します。
例えば、周波数を設定し、コントローラからブロック測定順シーケンスをトリガーします。
その後、設定したサンプル数に達するまで、個々の測定結果が 1つずつ内部メモリに転送され、保存されます。その後、FETCH ARRAY コマンドを使用してメモリの内容をコントローラに送信できます。
測定間のデッドタイムは大幅に短くなり、わずか 4~8µsです。
デッドタイムを最小限に抑えるには、例えば次のような設定が必要です。
- 補間器のキャリブレーションを無効にします (CAL:INT:AUTO OFF)。
- スループットを最大化するには、ディスプレイをオフにして (DISP:ENAB OFF)、パックされたデータ形式 (FORM:PACK) を使用する必要があります。
これらのデータ取得モードを使用すると、ブロック転送が実行されますが、ブロック全体が受信されるまで個々の測定値を確認することはできません。ブロックを初期化 (start) するタイミングを SW 経由で正確に制御できます。
CNT-90 でのブロック測定の手順には順序がございます。
まず、ブロック内の全ての値を測定して内部メモリに保存し、次にブロック内のすべての測定値が処理 (計算・フォーマット化) され、最後にブロックが PC に転送されます。測定機能には、デッドタイムを伴う標準機能 (周波数、周期、Vp-p など) または生のタイムスタンプ機能(ゼロデッドタイム) を使用できます。
こちらは、たとえ個々のブロックにデッドタイムゼロのデータが含まれている場合でも (生のタイムスタンプモード)、データ出力のブロック間のデッドタイムにより、データのギャップが常に存在することを意味します。
CNT-90 では、真のゼロデッドタイム測定 (生のタイムスタンプ) は最大 750,000 サンプルまでしか行うことができず、それ以降はデータにギャップが必ず存在します。
C : ゼロデッドタイム シングル測定
CNT-91のみがゼロデッドタイムのシングル測定を備えており、ローカル操作とリモートバス操作の両方のフロントパネルからアクセスできます。事前定義された測定値が 3 つあります。
周波数連続、周期連続、TIE (時間間隔誤差)
周波数または周期では、経過したイベントと時間を読み取るたびに、経過した入力トリガー イベントまたは入力サイクル (Ni) の数と経過時間 (Ti) を、測定時間設定で定義された間隔で読み取ります。周波数または周期は次のようにオンザフライで計算します。
定義として、周波数値は常に、測定時間中の平均サイクル数/秒であることに注意ください。
周波数を測定する場合、入力信号はタイムスタンプが付けられる前に「2」で割られます。
これは、最小周波数測定時間が2サイクルを超えることを意味します。
周期が連続しており、TIE には入力分周器がなく、Ni = Ni-1 + 1 である限り単一周期です。これは、最大約 250kHzまでの入力周波数の場合に当てはまります。
160 MHz までのより高い周波数おいては、測定値は連続した平均周期となります。
D: ゼロデッドタイム ブロック測定 (生のタイムスタンプデータ)
CNT-91 と CNT-90 はどちらも、ブロック測定機能としてのみ、ゼロデッドタイムの「Raw(生の)」タイムスタンプ測定を実行します。こちらはフロントパネルからアクセスできません。 GPIBまたは USBバスから特定のブロックサイズを設定し、4µs以上のペーシング時間を選択して、タイムスタンプ測定 (FUNC:TSTA) を開始します。
このモードでは、蓄積されタイムスタンプが付けられた入力トリガーの数が保存されます。
E(i) は、蓄積された入力サイクルの i番目のサンプルです (すべてのトリガーイベントがカウントされ、入力AまたはBで最大 160 MHzまで蓄積されます)。
負の傾きの場合は E(i)=0、正の傾きの場合は入力サイクルの累積数
- Tp1(i) :最初の正のトリガーイベントのタイムスタンプ
- Tp2(i) :2 番目の正のトリガーイベントのタイムスタンプ
- Tn1(i) :最初の負のトリガーイベントのタイムスタンプ
- Tn2(i) :2番目の負のトリガーイベントのタイムスタンプ
ペーシング時間の後に発生する最初のトリガーイベントは、正の傾きだけでなく負の傾きになる可能性があるため、4つのタイムスタンプのシーケンスは次のようになります。
pos – neg – pos – neg OR neg – pos – neg – pos . ※pos=正, neg=負
これを識別する方法は、負の傾きの場合は 0、正の傾きの場合は正の整数であるイベント番号を確認することです。
CNT‑91 : CNT‑90の生のタイムスタンプモードに加えて、CNT‑91 は、ゼロデッドタイムブロック測定として、周波数と周期の連続測定と TIEの測定も可能です。
通常のブロック配列測定と同様に、この測定は、内部メモリバッファが、3.5M サンプル (CNT-91) または 750k サンプル (CNT-90) で満たされるまで、最高速度で継続できます。その後、ゼロデッドタイムデータの次のブロックを再度測定する前に、メモリを読み取って空にする必要があります。
ただし、CNT-91 は、以下で説明するように、時間無制限でゼロデッドタイムデータの連続「ストリーミング」測定を行うこともできます。(下記参照)。
連続ストリーミング出力モード
CNT-91 出力モードは、基本的には通常のブロック測定モードですが、内部メモリへのデータの保存、保存されたデータの処理、およびデータの出力が並列処理される点が異なります。さらに、CNT-91 ではブロックのサイズに制限はありません。
連続測定には、以下で説明するように、「Fetch on the Fly」と「Overwrite Mode」の 2つの種類があります。
Fetch on the Fly
実行中にバッファに収まる通常のブロック測定から結果を取り出す機能です。
ただし、考慮すべき点の1つとして、測定が完了していない間は、実際に取得できるサンプルの数がわからない可能性があるということございます。
そこで、FETC:ARR? MAXを使用ください。
Overwrite Mode
これは、メモリに収まるよりも大きい測定値の合計数、つまり 350Mサンプルを超える場合に該当します。バッファがいっぱいになると、古い値が新しい値で上書きされます。この処理は、常に(合理的な測定速度で)安全にリアルタイムで取得できるように行われます。つまり、上書きされるデータは、取得中のデータであってはなりません。
ほぼすべての測定機能において使用される方法は以下の通りです。メモリバッファは6つのセグメントに分割されており、各セグメントは特定の用途に専念しています(データが取得されるセグメントと新しいデータが書き込まれるセグメント)。セグメントの役割は必要に応じて切り替え可能です。
取得速度が測定速度におおむね追いついている限り、通常の循環バッファとほぼ同様に機能します。ただ、十分な速さで取得しない場合や測定を停止した場合、バッファには取得されていないデータが多数残りますが、常に1つまたは2つのセグメントには有効な最新の結果データが残ります。つまり、バッファ1/6~1/3(60万から120万測定)の範囲です。
もし機器がOverwrite modeで処理できる以上の速さで測定するように設定されている場合、最終的にはバッファ内に無効なデータが残ることになります。最も多いのは無効なタイムスタンプですが、無効な測定結果も発生する可能性があります。内部テストではこの状況を検出し、測定を中止し、エラーキューに「-321, ”Storage fault”」というエラーを記録します。これは、バッファの内容が信頼できないことを示します(ただし、データは取得可能です)。
Overwrite modeにおける測定速度の制限は、多くの要因に依存します。例えば、ユーザーがデータをリアルタイムでどのように取得するかによって異なります。このため、測定速度に関する明確なルールを設定するのは困難です。
現在、2つの制限が適用されています:Overwrite modeでは、使用されるペーシング時間は最小50µ秒です。これは、ユーザーが機器を「詰まらせる」ことを防ぐためとなります。
実際のテストでは、10k Sa/sを超えるデータキャプチャレートは、長時間の測定中に無効なデータを引き起こす可能性が高いことが示されています。安全を考慮して、ペーシング時間は100µ秒以上に設定し、余裕を持たせることを推奨します。位相など、より複雑な計算を伴う測定は、単純な周期測定よりも長いペーシング時間を必要とします。
CNT‑91の新しい SCPI コマンドまたは変更された機能
FETCh:ARRay?<number of samples> | MAX (CNT-91のみの機能)
<サンプル数>を指定した場合、機器はその数のサンプルが利用可能になるまで待機します。これにより、測定が期待通りに進まない場合、長時間待たされることがあります。
“MAX”パラメータを使用すると、機器は現在可能な限り多くのサンプルで即座に応答します。応答内のサンプル数は、バッファ内に残っている未取得のサンプル数およびFORMAT:SMAX設定によって制限されます。
Error; -230,”Data corrupt or stale”は、バッファから取得可能な有効なサンプルがまったくない場合に生成されます。
Error -224,”Illegal parameter value”は、バッファ内に残っているサンプル数よりも多くのサンプルを取得しようとした場合に生成されます。これは、すでにバッファの終わりに達している場合に”MAX”パラメータを使用した場合にも該当します。
ABORt
ABORTは、配列測定を中断する際に、既に完了した結果を無効にしなくなりました。
これにより、中断後に部分的な結果を取得できるようになりました。
FORMat:SMAX<number>
「number」は4から10000までの任意の整数です。デフォルト設定は10000(*RSTの影響を受けない)です。このコマンドは、大量のデータの読み取りに問題がある任意のコントローラやアプリケーションプログラムで使用されることを意図していますが、FETC:ARR? MAX機能が必要です。実際の設定を照会するには、次のコマンドを使用します:
FORMat:SMAX?
“MAX”パラメータを使用する際、機器は常に予測可能な時間内に応答する必要があります。実際の応答時間は、応答内のサンプル数および使用されるFORMat設定(ASCIIは特に遅く、REALは速く、PACKEDが最速)に主に依存し、ある程度は実際の測定機能にも依存します。
最新の取得以降、バッファに新しい測定が利用できない場合(バッファの終わりではない場合)、FETC:ARR? MAXは「zero samples」の応答を返します。
つまり、フォーマットがASCIIの場合は空文字列、REALまたはPACKEDフォーマットの場合は空のバイナリデータパケット(”#10″)となります。
ARM:COUNt<number> | INFinity
ARM:COUNt?
「INF」パラメータはCNT-91専用です。これにより、アームループは無限に続きます。
(注意:タイムスタンプカウンターは約107日間の中断のない操作後にオーバーフローします。この点は、連続で3ヶ月以上実行する場合、アプリケーションソフトウェアで対処する必要があります。)
INFinityに設定すると、照会に対して「INF」(引用なし)で応答します。
Talker専用モード
Talker専用モードを切り替えるには:
SYSTem:TALKonly ON
これ以降、CNT-91は「永遠に」Talkerとして動作し、通常のハンドシェイクラインを介してコントローラからのプログラミングコマンドを一切受け付けません。
「SYST:TALK OFF”」というコマンドは存在しません。
一度、カウンターにSYST:TALK ONコマンドを送信すると、CNT-91はGPIBインターフェースのデータラインを通じての通常のコマンドには反応しなくなります。
Talker専用モードを解除するには、前面パネルのCANCELキー(C)を押すか、GPIB経由でInterface Clear(IFC)を送信します。
高速Talker専用転送を成功させるために実施すべき他の設定は以下の通りです。
DISPlay:ENABle OFF.
FORMat REAL or FORMat PACKed.
ARM:COUNt 1
TRIGger:COUNt 1
INIT:CONT ON.
測定機能は以下を除きます。
- Period average (smart calculation)
- Frequency (smart calculation)
- Time Interval (smart calculation)
- Timestamping
- Voltage
- Totalize
つまり、Frequency BtBおよびPeriod BtBは問題ありませんが、複数のタイムスタンプデータ間の回帰直線フィッティングを使用して基本分解能を向上させる「smart frequency」は不可能となります。