GPIB
The Hewlett-Packard Instrument Bus (HP-IB), is a short-range digital communications standard developed by Hewlett-Packard (HP) in the 1970s for connecting electronic test and measurement devices (e.g. digital multimeters and logic analyzers) to controllers such as computers. The bus is still in wide use for this purpose.
Other manufacturers copied HP-IB, calling their implementation the General Purpose Interface Bus (GPIB). In 1978 the bus was standardized by the Institute of Electrical and Electronics Engineers as the IEEE Standard Digital Interface for Programmable Instrumentation, IEEE-488-1978 (now 488.1).
Design
IEEE-488 allows up to 15 devices to share a single parallel bus by daisy-chaining, with the slowest device participating in the control and data transfer handshakes to determine the speed of the transaction. The maximum data rate is about one megabyte per second. Paraphrasing the 1989 HP Test & Measurement Catalog: HP-IB has a party-line structure wherein all devices on the bus are connected in parallel. The 16 signal lines within the passive interconnecting HP-IB cable are grouped into three clusters according to their functions: Data Bus, Data Byte Transfer Control Bus, and General Interface Management Bus.
History
In addition to the IEEE several other standards committees have adopted HP-IB. The American National Standards Institute's corresponding standard is known as ANSI Standard MC 1.1, and the International Electrotechnical Commission has its IEC Publication 625-1. In June 1987 the IEEE approved a revised standard for programmable instruments called IEEE-488-1987 (now 488.2): Codes, Formats, Protocols, and Common Commands. Hewlett-Packard's HP-IB implementation, however, still concurs to the aforementioned IEEE-488.1 version.
In an attempt to limit the large number of proprietary command sets in use for instrumentation, a standard for device commands named SCPI was introduced in the 1990s. Due to the late introduction, it was not universally implemented.
Applications
Not specifically planned for at the outset by HP-IB's designers was the use of IEEE-488 as a standard peripheral interface by general-purpose computers. Such applications of the bus were made by the Commodore PET/CBM range of educational/home/personal computers, whose disk drives, printers, modems, etc, were daisy-chain connected to the (host) computer, 'talking' and 'listening' on the designated bus lines to perform their jobs. All of Commodore's post-PET/CBM 8-bit machines, from the VIC-20 to the C128, utilized a proprietary 'serial IEEE-488' for peripherals, with round DIN connectors instead of the heavy-duty HP-IB plugs.
Several manufacturers such as Hewlett-Packard and Tektronix also used IEEE-488 as a peripheral interface to connect disk drives, tape drives, printers, plotters etc. to their workstation products. While the bus speed was increased to 10 MByte/s for such applications, the lack of command protocol standards limited third-party offerings and interoperability, and later (as well as faster) standards such as SCSI eventually superseded IEEE-488 for peripheral access.
Additionally, some of HP's advanced pocket calculators/computers of the 1980s, such as the HP-41 and HP-71 series, could work with various instrumentation via an optional HB-IB interface. The interface would connect to the calculator via an HP-IL module (Hewlett-Packard Instrument Loop, also optional).
Signals
bus line | description |
DIO1–DIO8 | Data input/output bits. These 8 lines are used to read and write the 8 bits of a data or command byte that is being sent over the bus. |
NRFD | Not ready for data. NRFD is a handshaking line asserted by listeners to indicate they are not ready to receive a new data byte. |
DAV | Data valid. This is a handshaking line, used to signal that the value being sent with DIO1-DIO8 is valid. During transfers the DIO1-DIO8 lines are set, then the DAV line is asserted after a delay called the 'T1 delay'. The T1 delay lets the data lines settle to stable values before they are read. |
NDAC | Not data accepted. NDAC is a handshaking line asserted by listeners to indicate they have not yet read the byte contained on the DIO lines. |
ATN | Attention. ATN is asserted to indicate that the DIO lines contain a command byte (as opposed to a data byte). Also, it is asserted with EOI when conducting parallel polls. |
EOI | End-or-identify. This line is asserted with the last byte of data during a write, to indicate the end of the message. It can also be asserted along with the ATN line to conduct a parallel poll. |
IFC | Interface clear. The system controller can assert this line (it should be asserted for at least 100 microseconds) to reset the bus and make itself controller-in-charge. |
REN | Remote enable. Asserted by the system controller, it enables devices to enter remote mode. When REN is asserted, a device will enter remote mode when it is addressed by the controller. When REN is false, all devices will immediately return to local mode. |
SRQ | Service request. Devices on the bus can assert this line to request service from the controller-in-charge. The controller can then poll the devices until it finds the device requesting service, and perform whatever action is necessary. |
Connectors
- IEEE-488 uses 24-pin Amphenol Micro ribbon connectors (often incorrectly termed Centronics-type), most commonly in a stackable male/female combination that allows for easy daisy-chaining by stacking cables. Mechanical considerations limit the number of stacked connectors to four or less. They are held in place by screws, which come in imperial (now largely obsolete) or metric (M3.5×0,6) threads; the latter are colored black by convention as the two threads do not mate. Total cable length is limited to 20 metres without the use of extenders.
- Pin-out:
+\ | ---\ | ---+ DIO1 | 1 13 | DIO5 DIO2 | 2 14 | DIO6 DIO3 | 3 15 | DIO7 DIO4 | 4 16 | DIO8 EOI | 5 17 | REN DAV | 6 18 | GND (wire twisted with DAV) NRFD | 7 19 | GND (wire twisted with NRFD) NDAC | 8 20 | GND (wire twisted with NDAC) IFC | 9 21 | GND (wire twisted with IFC) SRQ | 10 22 | GND (wire twisted with SRQ) ATN | 11 23 | GND (wire twisted with ATN) SHIELD | 12 24 | Signal GND | ---+ | ---/ +/
- The IEC-625 standard prescribes the use of 25-pin "Sub-D" connectors like they are used for parallel ports on PCs. This standard did not gain significant market acceptance against the established 24-pin connector.
External links
- A GPIB tutorial (mirror) – From TransEra Corporation
- A GPIB tutorial, Application notes, and Programs – From ICS Electronics (index page in HTML; tutorial, notes, and programs in PDF)
- History of GPIB, GPIB Resources – From National Instruments' website
- More resources – From eg3.com
- GPIB - What is it? – a free GPIB tutorial
- Linux GPIB free software drivers and user libraries. The documentation explains the standard and multi-device GPIB APIs in details.
- KE5FX GPIB Toolkit, several freeware GPIB applications for Windows
- Tutorial Description of HP-IB (5Mb)
- Subset/80 (8Mb) of CS/80 (5Mb) (SS/80)
- Python GPIB
This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.