# IEC-625-Bus

IEC-625-Bus ist die internationale Normbezeichnung für einen externen parallelen Datenbus, der vorrangig zur Verbindung von Messgeräten und Peripheriegeräten wie Plottern und Druckern mit einem Computer eingesetzt wird, wobei bis zu 15 Geräte angeschlossen werden können. Die maximale Geschwindigkeit der Standardausführung beträgt 1 MByte/s.

## Andere Bezeichnungen
### GPIB, GP-IB

    General Purpose Interface Bus, auch General Purpose Instrumentation Bus

### HP-IB

    Hewlett-Packard Interface Bus

### IEEE-488, IEEE488, IEEE-60488, (paralleler) IEC-Bus

    IEEE Standard 488
    IEEE Standard 60488

### ANSI MC 1.1

    ANSI Standard MC 1.1

## Geschichte

Der Bus wurde in den 1960er Jahren vom Unternehmen Hewlett-Packard (HP) als HP-IB entwickelt und von diesem in den 1970er Jahren zur IEEE-Standardisierung eingereicht. 1975 erfolgte die Standardisierung als IEEE-488-1975. 1978 wurde der Standard überarbeitet und als IEEE-488-1978 veröffentlicht (später umbenannt zu IEEE 488.1, 2004 umbenannt zu IEEE 60488.1:2004). HP-IB entspricht diesem Standard. ANSI übernahm den Standard als ANSI Standard MC 1.1. Die IEC übernahm den Standard als IEC-625.
1987 verabschiedete das IEEE eine Ergänzung, IEEE 488.2 (alias IEEE 60488.2:2004), die den Originalstandard erweitert, nicht ersetzt. Der Originalstandard definierte keine Datenübertragungsprotokolle oder Gerätekommandos. Um den Wildwuchs von Herstellerlösungen einzudämmen, wurde 1990 IEEE 488.2 um die standardisierte Kommandosprache SCPI erweitert. Viele Geräte erfüllen auch heute noch nicht den IEEE488.2-Standard.
Schnellere Varianten sind z. B. als HS488 bekannt, der 2003 als IEEE 488.1-2003 standardisiert wurde. Ältere Geräte sind jedoch teilweise nicht in der Lage, das HS488-Protokoll zu verarbeiten. Bei einer Mischbestückung muss das daher entsprechend berücksichtigt werden.

## Grundsätzlicher Aufbau

Der Bus ist ein paralleler 8-Bit-Bus, mit dem bis zu 15 Geräte verbunden werden können. Zwar können 30 Geräte adressiert werden, die physische Spezifikation gestattet jedoch nur den Anschluss von 15 Geräten pro Bus. Der Bus enthält 16 Signalleitungen, davon acht Datenleitungen, drei zur Steuerung der Datenübertragung (handshake), und fünf Signale zum Bus-Management.
Jedem angeschlossenen Gerät muss einmal von Hand eine der 30 möglichen Adressen zugewiesen werden. Klassischerweise erfolgt das am Gerät mit einem DIP-Schalter. Manche Geräte erlauben es auch, die Adresse in der Firmware des Gerätes einzustellen.
Von den angeschlossenen Geräten darf zu einem Zeitpunkt maximal eines Daten senden (das Gerät, das zuvor als talker definiert wurde), allerdings können die Daten zu mehreren der anderen angeschlossenen Geräte gesendet werden, da alle nicht-sendenden Geräte gleichzeitig vom Bus lesen dürfen (genaugenommen müssen aktiv lesende Geräte zuvor als listener definiert werden).
Durch ein 3-Phasen-Handshake (Bereit/Daten gültig/Daten akzeptiert) bestimmt das langsamste Gerät am Bus die Geschwindigkeit der Übertragung. Daher ist es ungünstig, Geräte mit deutlich unterschiedlichen Geschwindigkeiten an einem Bus zu mischen, es sei denn, der Geschwindigkeitsverlust kann toleriert werden.
Der Standard definiert verschiedene logische Funktionen von Geräten, z. B. Source Handshake (SH), Acceptor Handshake (AH), Service Request (SR), oder Control (C), wobei eine nachgestellte Ziffer die implementierte (Sub-)Funktionalität angibt (0 = keine Funktion). Auf Geräten bzw. in Handbüchern sind diese „Fähigkeiten“ (capabilities) der Schnittstelle in zusammengefasster Form angegeben, z. B. SH1 AH1 T6 L4 SR0 RL1 PP0 DC1 DT0 C0. Der Bus benötigt im Gegensatz zu Standards wie Universal Serial Bus (USB) nicht unbedingt einen Controller. So kann z. B. ein auf talk only eingestelltes Messgerät direkt mit einem auf listen only eingestellten Drucker zur Protokollierung verbunden werden.
IEEE-488-1 definiert nur die Übertragung von Daten, nicht die Kommandos zum Steuern von Peripheriegeräten. Dafür wird ein zusätzliches Protokoll benötigt, z. B. verwendet HP ein Protokoll names CS-80 (Command Set 80) für die eigene Peripherie.

## Bus-Signale

| Gruppe | Signalname | Bezeichnung | Beschreibung |
| Daten | DIO1–DIO8 | Daten | |
| Handshake | NRFD | Not Ready for Data | Listeners teilen mit diesem Signal mit, dass sie das Datenbyte auf DIO1-8 noch nicht verarbeitet haben. |
| Handshake | DAV | Data Valid | Die Daten auf DIO1-DIO8 sind gültig. Dieses Signal wird vom Talker eine kurze Zeit nach dem Anlegen der Daten aktiviert. |
| Handshake | NDAC | Not Data Accepted | Mit NDAC teilen die Listener mit, dass sie das Datenbyte auf den DIO-Leitungen nicht akzeptiert haben. |
| Protokoll | ATN | Attention | ATN zeigt an, dass die Datenleitungen ein Kommandobyte (z. B. Adresse) enthalten. Wird zusammen mit EOI für Parallelabfragen (parallel poll) verwendet. |
| Protokoll | EOI | End or Identify | Wird zusammen mit dem letzten Byte einer Nachricht aktiviert, um deren Ende anzuzeigen. |
| Protokoll | IFC | Interface Clear | Der Systemcontroller kann mit dieser Leitung den Bus zurücksetzen und sich als aktiver Controller etablieren. |
| Protokoll | REN | Remote Enable | Wird vom Controller aktiviert, um den Remote-Modus der Busteilnehmer freizugeben. Wird REN deaktiviert, gehen alle Teilnehmer zurück in den Lokalmodus. |
| Protokoll | SRQ | Service Request | Busteilnehmer können über dieses Signal dem aktiven Controller mitteilen, dass sie bedient werden wollen – etwa die Funktion einer Interrupt-Leitung bei einem Mikroprozessor. |

## Steckverbindungen
### IEEE-488

IEEE-488 verwendet 24-polige Centronics-Stecker (offizieller Name: „Micro Ribbon Connector“), vielfach als Stecker-Buchse-Kombination an beiden Kabelenden ausgeführt. Der komplette Bus ist bei diesen Kombinationen zur Buchse durchgeschleift. Dort kann dann wiederum ein identischer Stecker angeschraubt werden. Die Stecker sind somit „stapelbar“, wobei die Anzahl der aufeinander gesteckten Steckverbinder aus mechanischen Gründen üblicherweise auf vier beschränkt ist. Zur Fixierung der Stecker existieren sowohl metrische (M3,5×0,6) als auch zöllige Halteschrauben (UTS), die untereinander nicht zusammenpassen. Gemäß Konvention wird die (heute überwiegend anzutreffende) metrische Variante schwarz, die zöllige dagegen silberfarben ausgeführt. In der Praxis ermöglicht dieses Stecksystem eine flexible Busverkabelung. Sowohl eine sternförmig, als auch eine linear angeordnete Verkabelung, sowie Mischformen dieser sind möglich und zulässig.
    Kontaktbelegung:

### IEC-625

Der IEC-625-Bus verwendet 25-polige D-Sub-Stecker. Diese Variante wurde erst durch den IEC-Standard eingeführt und konnte sich gegen den etablierten 24-poligen Stecker nach IEEE-488 am Markt nicht durchsetzen.

### Platinensteckverbindung

Commodore führte die Steckverbindung am Computer vielfach als kostengünstige, aber auf Grund der fehlenden Verschraubungsmöglichkeit unpraktische Platinensteckverbindung aus. Diese ist so belegt, dass ein 24-poliger Standardstecker per Flachbandkabel direkt angeschlossen werden kann:

### DIN-Stecker nach DIN 41524

Ebenfalls von Commodore gab es eine proprietäre serielle Variante des Busses unter der Bezeichnung CBM-Bus, bei der runde DIN-Stecker nach DIN 41524 verwendet wurden.

## Anbindung an den PC

Schon früh wurden Steckkarten für die Verbindung des GBIP mit IBM-kompatiblen PC produziert. Bereits für den XT-Bus sind GPIB-Controller als Steckkarten verfügbar. Später wurden Steckkarten für den ISA-Bus und den PCI-Bus produziert. Mittlerweile sind auch GPIB-USB-Adapterkabel mit integrierter Elektronik verfügbar, womit die Abhängigkeit von entsprechenden Steckplätzen im PC entfällt und nur noch ein USB-Anschluss erforderlich ist. Damit wird der GPIB auch für moderne Computer ohne PCI-Steckplätze und das Mobile Computing zugänglich.

## Anwendung

* GPIB-Schnittstelle an einem Datenerfassungsgerät
* GPIB-Schnittstelle an einem 5,25-Zoll-Floppylaufwerk Commodore SFD1001
* Anschlüsse eines Digitalen Oszilloskops von Tektronix mit Buchsen für RS-232, IEEE 1284 und GPIB
* Externes 3,5 Zoll-Laufwerk für den IEC-625-Bus
* USB GPIB Converter
Der Bus ist heute in Laboratorien zur Steuerung und Kontrolle von Messgeräten noch weit verbreitet. Jedoch ist er nicht auf diese Verwendung beschränkt, er ist ein general purpose (für allgemeine Verwendung vorgesehener) Bus, der lange Zeit auch als Standard-Anschluss für Plotter und Drucker diente. Auch Massenspeicher, von Diskettenlaufwerken über Bandlaufwerke bis hin zu Festplatten, wurden über IEEE-488 angeschlossen, z. B. bei HP-Workstations der 1970er und 1980er Jahre.
Der Commodore PET/CBM besaß diesen Bus ebenfalls und nutzte ihn vor allem für Diskettenlaufwerke und Drucker. Die späteren Commodore-8-Bit-Modelle vom VC-20 bis zum C128 verwendeten die proprietäre serielle Variante CBM-Bus.