# IEEE-488

O IEEE-488 é um padrão para barramento de comunicações digitais de curto alcance que tem sido usado por mais de 30 anos. Criada originalmente para uso com equipamentos de teste automatizados, a especificação ainda está amplamente em uso com esta finalidade. O IEEE-488 é também geralmente conhecida como HP-IB (Hewlett-Packard Instrument Bus) e GPIB (General Purpose Interface Bus).
O IEEE-488 permite que até 15 dispositivos compartilhem um único barramento paralelo de 8 bits em cadeia. O dispositivo mais lento participa no controle e no handshake de transferência de dados para determinar a velocidade da transação. A taxa máxima de dados é de cerca de 1 MBps no padrão original e cerca de 8 MBps com aperfeiçoamentos posteriores.
O barramento IEEE-488 emprega 16 linhas de sinal — oito bidirecionais usadas para transferência de dados, três para handshake e cinco para gerenciamento do barramento — mais oito linhas de retorno terra.

## Origem

Nos anos 1960 a Hewlett-Packard (HP) fabricava vários instrumentos de testes e medidas automatizados, como multímetros digitais e analizadores lógicos. Eles desenvolveram o HP Interface Bus (HP-IB) para permitir interconexões mais fáceis entre controladores e instrumentos.
O barramento era relativamente fácil de implementar usando a tecnologia da época, usando um simples barramento paralelo e várias linhas individuais de controle. Por exemplo, a HP 59501 Power Supply Programmer e o HP 59306A Relay Actuator eram simples periféricos HP-IB implementados em uma lógica TTL, sem usar microprocessadores.
A HP licenciou as patentes do HP-IB por uma taxa nominal para outros fabricantes. Ficou conhecido como General Purpose Interface Bus (GPIB), e se tornou um padrão para controle de instrumentos automatizados e industriais. Enquanto GPIB se tornou popular, foi formalizado por várias organizações de padronização.

## Padrões

Em 1975, o IEEE padronizou o barramento como Interface Digital Padrão para Instrumentação Programável, IEEE-488; foi revisado em 1978 (produzindo o IEE-488-1978). O padrão foi revisado novamente em 1987 e designado de IEEE-488.1 (IEEE-488.1-1987). Esses padrões formalizaram os parâmetros mecânicos, elétricos e de protocolo do GPIB, mas não disseram nada sobre o formato dos comandos ou dos dados.
Em 1987, o IEEE introduziu o Códigos Padrões, Formatos, Protocolos e Comandos Comuns, IEEE-488.2. Foi revisado em 1992. O IEEE-488.2 forneceu convenções de sintaxe e formato, assim como comandos independentes de dispositivos, estruturas de dados e protocolos de erro. Equipamentos podem seguir o padrão IEEE-488.1 sem seguirem o IEEE-488.2.
Enquanto o IEEE-488.1 definiu o hardware e o IEEE-488.2 definiu o protocolo, não havia padrão nenhum para comandos de instrumentos específicos. Comandos para controlar a mesma classe de instrumentos, por exemplo, multímetros, iriam variar entre fabricantes e modelos.
A Força Aérea dos Estados Unidos, e mais tarde a HP, reconheceram o problema. Em 1989, a HP desenvolveu sua linguagem TML que foi a precursora do SCPI. O SCPI foi introduzido como um padrão industrial em 1990 e adicionou comandos padrões genéricos e uma série de classes de intrumentos com comandos específicos para classes.
A IEC desenvolveu seus próprios padrões em paralelo com o IEEE, com IEC-60625-1 e IEC-60625-2, mais tarde substituído por IEC-60488.
A National Instruments introduziu uma extensão para o IEEE-488.1 compatível com versões anteriores, originalmente conhecida como HS-488. Ela aumentou a taxa de dados para 8 MBps, embora a taxa diminua quanto mais dispositivos conectados ao barramento. Ela foi incorporada no padrão em 2003 (IEEE-488.1-2003), com objeções da HP.
Em 2004, o IEEE e o IEC combinaram seus padrões em um padrão IEEE/IEC "Dual Logo", IEC-60488-1, Standard for Higher Performance Protocol for the Standard Digital Interface for Programmable Instrumentation - Part 1: General, que substitui o IEEE-488.1/IEC-60625-1, e IEC-60488-2,Part 2: Codes, Formats, Protocols and Common Commands, que substitui o IEEE-488.2/IEC-60625-2.

## Características

IEEE-488 é um barramento paralelo de 8 bits. O barramento emprega 16 linhas de sinal: 8 usadas para transferência de dados bidirecional, 3 para handshake e 5 para gerir o barramento, e mais 8 linhas de retorno de terra.
Todo dispositivo no barramento tem um endereço primário único de 5 bits, que pode ir de 0 a 30 (31 endereços possíveis).
O padrão permite que até 15 dispositivos dividam um único barramento físico com até 20 metros de comprimento total de cabo. A topologia física pode ser linear ou estrela (ramificada). Extensores ativos permitem maiores barramentos, com até 31 dispositivos teoricamente possíveis no barramento lógico.
Controle e transferência de dados estão logicamente separados; um controlador pode endereçar um dispositivo como aquele que "fala" e um ou mais dispositivos como aqueles que "ouvem" sem ter que participar na transferência de dados. É possível múltiplos controladores dividirem o mesmo barramento, mas somente um pode ser o "controlador em comando" no momento.
No protocolo original, transferências usam um handshake interligado de 3 fios ready–valid–accepted. A taxa máxima de dados é de aproximadamente 1 MBps. A última extensão do HS-488 relaxa com os requerimentos de handshake, permitindo até 8 MBps. O dispositivo participante mais devagar determina a velocidade do barramento.

## Conectores

O IEEE-488 especifica um conector de microfita, que tem uma concha de metal em formato de "D", mas é mais largo do que conector DB. É chamado também de "conectores Centronics" devido ao conector de 36 pinos Centronics usado para suas impressoras.
Uma característica incomum dos conectores IEEE-488 é que eles costumam usar um design "duas-cabeças", com macho de um lado e fêmea do outro. Isso permite conectar facilmente os conectores em cascata. Considerações mecânicas limitam o número de conectores em cascata para 4 ou menos, embora uma possível manipulação pode aumentar isso.
Eles são fixados por parafusos, tanto Unified Thread Standard (UTS), agora obsoletos, como roscas M3.5×0.6.
O padrão IEC-60625 permite o uso de conectores DB de 25 pinos (os mesmos usados em portas paralelas nos computadores da IBM). Esse conector não ganhou uma aceitação significante no mercado, comparado com o conector de 24 pinos.

## Uso como interface de computador

Os designers da HP não planejaram especificamente o IEEE-488 para ser uma interface periférica para computadores de propósito geral; o foco estava em instrumentação. Porém, quando os primeiros microcomputadores da HP precisaram de uma interface para periféricos (acionadores de disco, unidades de fita, impressoras, plotters etc.), HP-IB estava prontamente disponível e adaptado para isso.
Os produtos de computadores da HP que usam o HP-IB incluem a série 80, a série 9800, a série 2100 e a série 3000.. Algumas das calculadoras avançadas da HP dos anos 1980, como a HP-41 e a HP-71B também têm capacidades IEEE-488 via um módulo de interface HP-IL/HP-IB opcional.
Outros fabricantes adotaram GPIB para seus computadores, como a linha Tektronix 405x.