| |
| Year created | 1972[1] |
|---|---|
| Speed | 8 Mbyte/s |
| Style | Parallel |
| Website | standards |

General Purpose Interface Bus (GPIB) orHewlett-Packard Interface Bus (HP-IB) is a short-range digital communications8-bitparallelmulti-masterinterface bus specification originally developed byHewlett-Packard and standardized inIEEE 488.1-2003. It subsequently became the subject of several standards. Although the bus was originally created to connect togetherautomated test equipment, it also had some success as aperipheral bus for earlymicrocomputers, notably theCommodore PET. Newer standards have largely replaced IEEE 488 for computer use, but it is still used by test equipment.
In the 1960s,Hewlett-Packard (HP) manufactured various automated test and measurement instruments, such as digitalmultimeters andlogic analyzers. They developed theHP Interface Bus (HP-IB) to enable easier interconnection between instruments and controllers (computers and other instruments).[2] This part of HP was later (c. 1999) spun off asAgilent Technologies, and in 2014 Agilent's test and measurement division was spun off asKeysight Technologies.[3][4]
The bus was relatively easy to implement using the technology at the time, using a simple parallelbus and several individual control lines. For example, the HP 59501 Power Supply Programmer and HP 59306A Relay Actuator were both relatively simple HP-IB peripherals implemented inTTL, without the need for a microprocessor.
HP licensed the HP-IB patents for a nominal fee to other manufacturers. It became known as the General Purpose Interface Bus (GPIB), and became ade facto standard for automated and industrial instrument control. As GPIB became popular, it was formalized by variousstandards organizations.
In 1975, theIEEE standardized the bus asStandard Digital Interface for Programmable Instrumentation, IEEE 488; it was revised in 1978 (producing IEEE 488-1978).[5] The standard was revised in 1987, and redesignated as IEEE 488.1 (IEEE 488.1-1987). These standards formalized the mechanical, electrical, and basic protocol parameters of GPIB, but said nothing about the format of commands or data.
In 1987, IEEE introducedStandard Codes, Formats, Protocols, and Common Commands, IEEE 488.2. It was revised in 1992.[6] IEEE 488.2 provided for basic syntax and format conventions, as well as device-independent commands, data structures, error protocols, and the like. IEEE 488.2 built on IEEE 488.1 without superseding it; equipment can conform to IEEE 488.1 without following IEEE 488.2.
While IEEE 488.1 defined the hardware and IEEE 488.2 defined the protocol, there was still no standard for instrument-specific commands. Commands to control the same class of instrument,e.g., multimeters, varied between manufacturers and even models.
The United States Air Force,[7] and later Hewlett-Packard, recognized this as a problem. In 1989, HP developed their Test Measurement Language (TML)[8] or Test and Measurement Systems Language (TMSL)[9] which was the forerunner toStandard Commands for Programmable Instrumentation (SCPI), introduced as an industry standard in 1990.[10] SCPI added standard generic commands, and a series of instrument classes with corresponding class-specific commands. SCPI mandated the IEEE 488.2 syntax, but allowed other (non-IEEE 488.1) physical transports.
TheIEC developed their own standards in parallel with the IEEE, with IEC 60625-1 and IEC 60625-2 (IEC 625), later replaced byIEC 60488-2.
National Instruments introduced a backward-compatible extension to IEEE 488.1, originally known as HS-488. It increased the maximum data rate to 8Mbyte/s, although the rate decreases as more devices are connected to the bus. This was incorporated into the standard in 2003 (IEEE 488.1-2003),[11] over HP's objections.[12][13]
In 2004, the IEEE and IEC combined their respective standards into a "Dual Logo" IEEE/IEC standard IEC 60488-1,Standard for Higher Performance Protocol for the Standard Digital Interface for Programmable Instrumentation - Part 1: General,[14] replaces IEEE 488.1/IEC 60625-1, and IEC 60488-2,Part 2: Codes, Formats, Protocols and Common Commands,[15] replaces IEEE 488.2/IEC 60625-2.[16]
IEEE 488 is an8-bit, electricallyparallel bus which employs sixteen signal lines — eight used for bi-directional data transfer, three forhandshake, and five for bus management — plus eight ground return lines.
The bus supports 31 five-bit primary device addresses numbered from 0 to 30, allocating a unique address to each device on the bus.[17][18]
The standard allows up to 15 devices to share a single physical bus of up to 20 metres (66 ft) total cable length. The physical topology can be linear or star (forked).[19] Active extenders allow longer buses, with up to 31 devices theoretically possible on a logical bus.
Control and data transfer functions are logically separated; a controller can address one device as a "talker" and one or more devices as "listeners" without having to participate in the data transfer. It is possible for multiple controllers to share the same bus, but only one can be the "Controller In Charge" at a time.[20]
In the original protocol, transfers use an interlocked, three-wireready–valid–accepted handshake.[21] The maximum data rate is about one megabyte per second. The later HS-488 extension relaxes the handshake requirements, allowing up to 8 Mbyte/s. The slowest participating device determines the speed of the bus.[22]
IEEE 488 specifies a 24-pinAmphenol-designedmicro ribbon connector. Micro ribbon connectors have a D-shaped metal shell, but are larger thanD-subminiature connectors. They are sometimes called "Centronics connectors" after the36-pin micro ribbon connectorCentronics used for their printers.
One unusual feature of IEEE 488 connectors is they commonly use a "double-headed" design, with male on one side, and female on the other. This allows stacking connectors for easydaisy-chaining. Mechanical considerations limit the number of stacked connectors to four or fewer, although a workaround involving physically supporting the connectors may be able to get around this.
They are held in place by screws, either 6-32 UNK[23] (now largely obsolete) ormetric M3.5×0.6threads. Early versions of the standard suggested that metric screws should be blackened to avoid confusion with the incompatible UTS threads. However, by the 1987 revision this was no longer considered necessary because of the prevalence of metric threads.[24]
The IEC 60625 standard prescribes the use of 25-pinD-subminiature connectors (the same as used for theparallel port onIBM PC compatibles). This connector did not gain significant market acceptance against the established 24-pin connector.

| Function | Abbreviation | Description and examples | |
|---|---|---|---|
| Source Handshake | SH | 1 | Complete |
| Acceptor Handshake | AH | 1 | Complete |
| Basic Talker | T | 5 | Responds to serial poll; untalks when listen address received; talk only capability |
| 6 | Untalks when listen address received; no talk only | ||
| 7 | No serial poll; untalks when listen address received; talk only capability | ||
| Extended Talker | TE | 0 | No extended talker |
| Basic Listener | L | 3 | Listen only mode; unlistens if talk address received |
| 4 | Unlistens if talk address received | ||
| Extended Listener | LE | 0 | No extended listener |
| Service Request | SR | 0 | No service request capability |
| 1 | Complete | ||
| Remote-Local | RL | 0 | No local lockout |
| 1 | Complete | ||
| Parallel Poll | PP | 0 | Does not respond to Parallel Poll |
| Device Clear | DC | 1 | complete |
| Device Trigger | DT | 0 | No device trigger capability |
| 1 | Complete | ||
| Controller | C | 0 | No controller function |
| E | 1 | Open collector drive electronics | |
| 2 | Three state drivers | ||

HP's designers did not specifically plan for IEEE 488 to be a peripheral interface for general-purpose computers; the focus was on instrumentation. But when HP's earlymicrocomputers needed an interface for peripherals (disk drives,tape drives,printers,plotters, etc.), HP-IB was readily available and easily adapted to the purpose.
HP computer products which used HP-IB included theHP Series 80,HP 9800 series,[26] theHP 2100 series,[27] and theHP 3000 series.[28] HP computer peripherals which did not utilize the RS-232 communication interface often used HP-IB including disc systems like theHP 7935. Some of HP's advanced pocket calculators of the 1980s, such as theHP-41 andHP-71B series, also had IEEE 488 capabilities, via an optionalHP-IL/HP-IB interface module.
Other manufacturers adopted GPIB for their computers as well, such as with theTektronix 405x line.
TheCommodore PET (introduced 1977) range of personal computers connected their peripherals using the IEEE 488 bus, but with a non-standard card edge connector. Commodore's following 8-bit machines utilized aserial bus whose protocol was based on IEEE 488.[29] Commodore marketed an IEEE 488 cartridge for the VIC-20[30] and the Commodore 64.[31] Several third party suppliers ofCommodore 64 peripherals made a cartridge for the C64 that provided an IEEE 488-derived interface on a card edge connector similar to that of the PET series.[32]
Eventually, faster, more complete standards such asSCSI superseded IEEE 488 for peripheral access.
This sectiondoes notcite anysources. Please helpimprove this section byadding citations to reliable sources. Unsourced material may be challenged andremoved.(February 2010) (Learn how and when to remove this message) |
Electrically, IEEE 488 used a hardware interface that could be implemented with some discrete logic or with a microcontroller. The hardware interface enabled devices made by different manufacturers to communicate with a single host. Since each device generated the asynchronous handshaking signals required by the bus protocol, slow and fast devices could be mixed on one bus. The data transfer is relatively slow, sotransmission line issues such as impedance matching and line termination are ignored. There was no requirement forgalvanic isolation between the bus and devices, which created the possibility ofground loops causing extra noise and loss of data.
Physically, the IEEE 488 connectors and cabling were rugged and held in place by screws. While physically large and sturdy connectors were an advantage in industrial or laboratory set ups, the size and cost of the connectors was a liability in applications such as personal computers.
Although the electrical and physical interfaces were well defined, there was not an initial standard command set. Devices from different manufacturers might use different commands for the same function.[33] Some aspects of the command protocol standards were not standardized untilStandard Commands for Programmable Instruments (SCPI) in 1990. Implementation options (e.g. end of transmission handling) can complicate interoperability in pre-IEEE 488.2 devices.
More recent standards such asUSB,FireWire, andEthernet take advantage of declining costs of interface electronics to implement more complex standards providing higher bandwidth. The multi-conductor (parallel data) connectors and shielded cable were inherently more costly than the connectors and cabling that could be used with serial data transfer standards such asRS-232,RS-485, USB, FireWire or Ethernet. Very few mass-market personal computers or peripherals (such as printers or scanners) implemented IEEE 488.
Controllers: 3260A Marked Card Reader;9820A Calculator (with 11144A Interface Kit)
In 1990, the IEEE 488.2 specification included the Standard Commands for Programmable Instrumentation (SCPI) document.
The primary address is a number in the range 0 to 30.
any address in the range 0 - 30, inclusive, may be used
connected in either a daisy-chain or star topology
Some existing cables use English threads (6-32UNK).
The "helpful note" on metric threads found in previous editions has been deleted since metric thread use is common IEEE 488 practice. Consequently, the recommendation to coat such parts in black material to call attention to metric threads is also considered unnecessary.
{{citation}}:Cite uses generic title (help)HP-IB interface for HP1000 and HP2000 computers
CIO HP-IB interface for 3000 Series 900
ID command with an identification string; later standards had devices respond to the*ID command.