IEEE 488

IEEE 488とは、短距離デジタル通信バス仕様である。元々は自動テスト設備に用いられることを目的として作られたが、現在でもその分野では広い範囲で使われている。IEEE 488はまたHP-IB  やGPIB  としてよく知られている。

1. 設計
-----

IEEE 488は、デイジーチェーン接続により、1つの8bitパラレル電気バスを15個までのデバイスで共有できるものである。最も低速のデバイスが制御に参加するので、データ転送速度を決定するためにデータをハンドシェイクして送る。最初の標準では最大データ速度は約1MByte/sであったが、IEEE 488.1-2003  では8MByte/secになっている。

IEEE 488バスは16本の信号線を使っていて、8本を双方向データ通信用に、3本をハンドシェイクに、そして5本をバス管理に用いている。さらに8本をグランドとしている。

2. 歴史
-----

1960年代後半、Hewlett-Packard  は、デジタルマルチメーターやロジックアナライザのような試験および測定装置メーカーであった。HPはコンピュータのような試験装置や制御装置をより簡単に相互接続できるようにするために、HP Interface Bus  を開発した。このバスはその当時の技術を用いて比較的簡単に実装できた。このバスは単純なパラレルの電気バスといくつかの独立した制御線を用いていた。

他のメーカーはHP-IBをコピーして、General Purpose Interface Bus  を作った。

1975年、このバスはIEEEによって IEEE Standard Digital Interface for Programmable Instrumentation, IEEE 488-1975として標準化された。IEEE 488.1は、GPIBのメカニカル仕様、電気仕様、基本的なプロトコルなどのパラメータは形式化したが、コマンドやデータのフォーマットについては何も触れなかった。IEEE 488.2 標準、つまり Codes, Formats, Protocols, and Common Commands for IEEE 488.1では、基本的な文法とフォーマット規約を提供し、同様にデバイス独立コマンドやデータ構造、エラープロトコルなども定めた。IEEE 488.1の上に立っているIEEE 488.2はIEEE 488.1に取り込まれていない。各種装置は488.2に従わなくても488.1の仕様を満足することができる。

IEEE 488.1がハードウェアを定義しIEEE 488.2が文法を定義したが、そこには装置固有のコマンドの標準はなかった。同じ装置のクラスを制御するコマンドは、メーカー同士、また種々のモデル間でさえ様々であった。デバイスコマンドの標準であるSCPIは1990年代に導入された。ただ導入が遅かったため、広く実装されることはなかった。

National Instrumentsは、元々HS-488として知られたIEEE 488.1の上位互換規格を導入した。これはデータ速度を最大8MByte/secにまで増やした。ただ、バスにより多くのデバイスを接続するとこの速度は減少した。この規格は2003年に標準として加えられ、IEEE 488.1-2003になった。

IEEEに加えて、他のいくつかの標準化団体はHP-IBを採用していた。ANSIでの相当する規格はANSI Standard MC 1.1。IECではIEEEからの提案を受け、IEEE/IEC 60488-1-2004 Ed.1 として国際規格になっている。

3. 適用分野
-------

最初、HP-IBの設計者らはIEEE 488を汎用コンピュータの標準周辺機器インタフェースとして特別に計画したのではなかった。1977年までには、教育・家庭・個人用コンピュータであるCommodore PET/CBMが、IEEE 488バスを使ってディスクドライブやプリンタ、モデムなどを接続した。CommodoreのPET/CBM後継の8bitマシンは、VIC-20からC128まで周辺機器用に独自の「シリアルのIEEE 488」を利用していた。これは大きくて重いHP-IBのプラグやマザーボードに指すカード型コネクタの代わりに、丸いDINコネクタを用いていた。

Hewlett-PackardとTektronixもまたIEEE 488をディスクドライブやテープドライブ、プリンタ、プロッタなどを接続する周辺機器用インタフェースとして使用していた。これらは彼らのワークステーション製品や、HPのミニコンピュータであるHP3000に利用していた。このような用途のために10MBytes/sまでバス速度を増やしたが、コマンドプロトコルの標準がないために、サードパーティからの製品供給は少なく、互換性も限られていた。最終的には、周辺機器アクセスには、SCSIのようなより速くオープンな規格が使われるようになった。

加えて、HPの1980年代の高機能電卓・ポケットコンピュータのいくつか、例えばHP-41やHP-71のようなものはオプションであるHP-IBインタフェースを通して様々な計測を行うことができた。インタフェースはオプションであるHP-ILモジュールを通して計算機に接続した。

4. 信号
-----

データ・ハンドシェーク・管理用のすべての信号は、0 がHighレベル 、1がLowレベルとなる。



5. 通信方法
-------

5.1. トーカとリスナの決定
---------------

コントローラは、データを送信するトーカを1つと、データを受信するリスナを1つ以上選択する。コントローラは ATN=L とし、 UNL  コマンドを発行後、トーカアドレスとリスナアドレスを送信し、 ATN を H に戻すと、トーカとリスナが決定することができる。

5.2. データの送受信
------------

トーカが 8bitデータをデータバスに設定後に DAV=L とすると、リスナは まず NRFD=H としてビジー状態とし、データ受信が完了すると NDAC=H とする。データ受信完了後にトーカが DAV=H とすると、リスナは NDAC=L とし、リスナが次のデータを受信できる状態になると NRFD を L に戻す。これにより1byteのデータ送受信が完了する。

複数byteのデータの送受信では、最終のデータであることを示すデリミタをトーカからリスナに対して送信する必要がある。一般的には、バイナリデータの場合には EOI=L とし、文字列データの場合には CR+LF, CR, LF をデリミタとする場合が多い。

5.3. サービスリクエスト
--------------

デバイスからコントローラに対して割り込みをかける場合、デバイスはSRQ信号を1としてサービス要求を行う。その後、コントローラはどのデバイスから要求が来ているかを調べる必要があるが、調べる方法として、パラレルポールとシリアルポールの手法がある。

6. コネクタ
-------

6.1. IEEE 488
-------------

IEEE 488はアンフェノール社が設計した24ピンのマイクロリボンコネクタを採用している。オス／メスのコネクタが対になっているので積み重ねて簡単にデイジーチェインが可能である。スタック可能なコネクタの数の機械的な限界は4つ以下となっている。これらはUTSやメートル  ねじによって固定される。慣例的によりメートルねじは黒く塗られ、UTSねじとは合わないようになっている。総ケーブル長は20mが限界になっているが、非標準の「バスエクステンダ」デバイスも使える。

6.1.1. ピン配列
-----------

6.2. IEC-625
------------

IEC-625標準では25pin D-subコネクタの使用を規定している。この標準は24pinコネクタの採用に反して市場の多くの支持を得られなかった。

7. 脚注
-----

8. 外部リンク
--------

IEEE Standards
[1]
[2]
[3]
解説ページ
[4]
[5]