Archived: バーストモードのデータ転送の、仕組みと構成

This document has been archived and is no longer updated by National Instruments



ハードウェア: Digital I/O (DIO)>>High-Speed Digital I/O, Digital I/O (DIO)>>High-Speed Digital I/O>>PCI-6534, Digital I/O (DIO)>>High-Speed Digital I/O>>PXI-6533

問題: NI-653x を使用して、バーストモードのハンドシェイク I/O を実装しようとしています。使用するライン名とデータ転送の仕組みや設定方法は、どのように行うのですか。

解決策: バーストモードは、6533/6534デバイスで使用できる、ハードウェア・クロックで同期せるデータ転送プロトコルです。電子回路のロジックテストや、ボード、チップのテストなどに使用します。バーストモードではデータ転送ライン(ポート)以外に以下のような、3本のコントロールラインを使用して同期をとります。

  • Pause Trigger (従来型では REQ)
  • Ready for Transfer Event (従来型では ACK)
  • sample clock (従来型では PCLK)
    ※NI-6534はDAQmx7.4以降でサポートされています。

    Ready for Transfer Event(ACK) はデータを送る側のデバイスが、データを送る準備ができたときに有効になります。デバイスは適切に構成され、プログラムがデータをボードのアウトプットバッファに転送した時に「ready」 (準備ができた)状態になります(入力のの場合は、バッファに読み取る空き領域ができた時)。すなわち、書き込まれるべきデータがすでにバッファ上に存在し、転送待ちのときにReady for Transfer Event(ACK)ラインは有効になります。
    Ready for Transfer Event(ACK)が有効になると、相手側(受け取り側)のデバイスにデータを転送する準備ができたことを伝えます。相手側のデバイスがデータを受け取る準備ができているのであれば、Pause Trigger (REQ)ラインを有効にします。

    データの転送はReady for Transfer(ACK)、Pause Trigger(REQ)の両方のラインが有効になってから、最初のSample Clock(PCLK)のエッジで始まります(立ち上がり立下りはプログラムで設定可)。転送はどちらかのラインが無効になるまで続きます。また、すべてのデータが転送し終わると、アウトプットバッファが空になるのでReady for Transfer(ACK)ラインは無効になります。転送レートやバッファサイズはプログラムで、アプリケーションに合わせて設定します。

    データの転送レートは Sample Clock (PCLK)で、指定されます。Sample Clockは、送り側、受け側どちらのデバイスでも生成可能です。データ転送の速度が速すぎた場合、受け側のデバイスはPause Trigger (REQ)ラインを無効にし、データ転送を中断(ポーズ)します。受け側の準備ができると、デバイスはPause Trigger (REQ)ラインを有効に戻し、再びデータ転送を開始します。

    以下のテーブルにそれぞれのピンの名前があります。配線時のピン番号は添付のJPGファイルをご覧ください。





    Device Pause Trigger Default Ready for Transfer Event Default
    NI PCI-6533 (DIO-32HS) PFI 2 (Timing Engine 0), PFI3 (Timing Engine 1)     PFI 6 (Timing Engine 0), PFI 7 (Timing Engine 1)
    NI PCI-6534 PFI2 (Timing Engine 0), PFI 3 (Timing Engine 1) PFI 6 (Timing Engine 0), PFI 7 (Timing Engine 1)
    NI PXI-6533 PFI 2 (Timing Engine 0), PFI 3 (Timing Engine 1) PFI 6 (Timing Engine 0), PFI 7 (Timing Engine 1)
    NI PXI-6534 PFI 2 (Timing Engine 0), PFI 3 (Timing Engine 1) PFI 6 (Timing Engine 0), PFI 7 (Timing Engine 1)

    ※Timing Engineはハンドシェークを行うときの構成グループです。
    ハンドシェークの動作を2つの異なった設定で構成したい場合、2つの8ビットのポートとして、もしくは2つの16ビットのポートとして構成することが可能です。
    LabVIEWでは2つの8ビットのポートとして構成する場合、ポート0がグループ0として、ポート2がグループ1として割り当てれます。
    また、2つの16ビットのポートとして構成する場合、ポート0とポート1がグループ0として、ポート2とポート3がグループ1として割り当てられます。
    一つの32ビットのポートとして構成する場合、LabVIEWでは常にグループ0として割り当てられます。

    サンプルはLabVIEWのヘルプから「サンプルを検索」を選択して、表示されるウインドウで、ハードウエアの入力と出力>DAQmx>デジタル信号生成フォルダの下にあるCont Write Dig Chan-Burst.viが、書き込み(送り側)、デジタル信号測定フォルダの下にあるCont Read Dig Chan-Burst.viが、読み取り(受け側)となります。

    ボード1枚で、ポート0とポート2を使用して、上記のサンプルを使い、バーストモードのハンドシェイクを行うことができます。配線方法は、送り側と受け側を、それぞれポート0 と 2 とした場合、PFI2(ピン2番)とPFI7(ピン8番)、PFI6(ピン3番)とPFI3(ピン9番)、さらにPFI4(ピン5番)とPFI5(ピン6番)を、それぞれ配線します。

    ※このサンプルを使用するときは、サンプルの片方のプログラムのDAQmxタイミング関数のモードをバースト(インポート)に変更して、クロックを共有するようにしてください。
    受け側のPause Trigger PorarityはLowに、送り側は high に変更してください。


  • 関連リンク:
    National Instruments Data Acquisition SupportHomepage
    Product Manuals: NI 6533/6534 for NI-DAQmx Help
    KnowledgeBase 1SSFQR00. Configuring the Handshaking Lines of a 653xBoard
    application note デジタルI/Oアプリケーションについて(英語)
    LabVIEWのバーストモードサンプルプログラムでPCLKを変更する方法(日本語)

    添付:


    dio.JPG - dio.JPG


    報告日時: 01/21/2004
    最終更新日: 04/03/2009
    ドキュメントID: 35KDQAKD