São Luís, MA
29/11/2010
SumárioY
1. IntroduçãoY YY
2. ObjetivoY YY
3. Desenvolvimento TeóricoY YY
3.1 Barramento USBY YY
3.1.1 Visão Geral do FuncionamentoY YY
3.1.2 Estrutura de Software e ProtocoloY YY
3.1.3 Estrutura FísicaY YY
3.1.4 VersõesY YY
3.2 Barramento FireWire YY
3.2.1 Visão GeralY YY
3.2.2 Estrutura de Software e ProtocoloY YY
3.2.3 Estrutura FísicaY YY
3.2.4 VersõesY Y Y
3.3 Comparação entre USB e FireWireY YY
4. ConclusãoY YY
5. Referências BibliográficasY Y
Y
Y
Y
Y Y
j
Para acabar com este transtorno, a indústria foi em busca de um padrão que facilitasse a conexão de
periféricos ao computador. Assim, surgiu em 1995 o Universal Serial Bus (USB), resultado de uma
parceria entre várias companhias de alta tecnologia (Compaq, Hewlett-Packard, Intel, Lucent,
Microsoft, NEC e Philips), e que facilitou a conexão de variados dispositivos ao computador por
parte dos usuários.
Inicialmente, a tecnologia USB foi considerada como um complemento para o padrão FireWire
(interface IEEE 1394); um barramento serial projetado com uma grande largura de banda, ideal para
conectar periféricos que trabalham com altas taxas de transferência de dados e em tempo real, tais
como: HDs, discos ópticos e dispositivos de áudio e vídeo. Este padrão foi idealizado inicialmente
pela Apple em 1986 (e desenvolvido posteriormente com contribuições de engenheiros de empresas
como Texas Instruments, Sony e IBM) como uma alternativa ao barramento paralelo SCSI,
proporcionando menores custos de implementação e conexão simplificada.
Ambos os barramentos seriais foram projetados com altas taxas de transferências de dados, embora o
barramento USB tenha sido utilizado incialmente para conectar dispositivos com menores taxas de
transferência, tais como: mouses, teclados e joysticks. Atualmente, devido às versões mais rápidas, o
padrão USB se tornou uma alternativa viável para aplicações de mídia, apesar de também terem
surgido versões com maior capacidade de transferência de dados para o FireWire. Estes padrões
também vieram acrescidos de novas tecnologias como plug and play (algo como plugar e usar),
conexão de vários dispositivos em uma única porta, além de serem alimentados eletricamente pelo
host e poderem fornecer alimentação aos periféricos (até um certo limite).
ë
X
O Universal Serial Bus (Barramento Serial Universal) foi desenvolvido para ser um padrão
internacional de interface entre um boot host e seus periféricos. É uma alternativa com menores
custos e maior aplicabilidade do que as antigas interfaces paralelas, facilitando as conexões e
possibilitando maior mobilidade, além de suportar a conexão de vários dispositivos em uma única
porta. O padrão USB é uma interface externa multiponto compatível com a maioria dos sistemas
operacionais existentes.
X j j!"
O sistema de USB é composto por um host e por múltiplas portas de fluxo de dados onde a conexão
com um dispositivo periférico pode ser estabelecida. Um host USB pode conter múltiplos
controladores de host, cada um fornecendo inúmeras portas para conexão. Podem-se incluir também
hubs USB para expandir o número de dispositivos conectados ao mesmo tempo ao host; a estrutura
de conexão através de hubs é idealizada na forma de uma ³árvore´ com no máximo cinco níveis,
sendo que no topo dessa árvore,ou seja, no controlador host, fica o root hub (hub raiz). Podem ser
conectados 127 dispositivos (incluindo os hubs) a um mesmo controlador de host. A figura 1 ilustra a
disposição de um sistema USB:
Um pipe é uma conexão entre o controlador de host e uma função lógica ou interface de um
determinado periférico; cada entidade lógica é denominada endpoint (ponto de chegada). Um pipe só
é formado quando o host reconhece a existência de um endpoint. Cada dispositivo USB pode ter no
máximo 32 pipes, sendo que um destes pipes é requisitado para o controle do dispositivo, apesar de
que raramente um dispositivo USB terá todos estes endpoints.
Uma vez estabelecida a comunicação, o host recebe a informação de que tipo de conexão o
dispositivo conectado utiliza. Há quatro possibilidades:
$Y Isochronous: para transmissões em tempo real, alguns dados podem ser perdidos já que não
há mecanismo de detecção de erros. Ex: aparelhos de transmissão áudio ou vídeo;
$Y Bulk: transferência de um grande volume de dados; aqui há a detecção de erros para garantir
a integridade dos dados transmitidos. Ex: impressoras, scanners;
$Y Interrupt: baixa taxa de transferência de dados. Ex: mouses, teclados, joysticks;
$Y Control: parâmetros de controle e de configuração do dispositivo. Ex: requisição de operação,
resposta do estatus do dispositivo;
6Y Stream: pipe unidirecional conectado a um endpoint unidirecinal, que transfere dados a partir
de conexões Isocronous, Bulk e Interrupt;
6Y Menssage: pipe bidirecional ligado a um endpoint bidirecional; é responsável pelo controle
(conexão Control) do fluxo de dados.
O controlador host define as taxas de transferência de dados para os dispositivos. Desta forma,
nenhum dispositivo pode realizar uma transferência de dados sem o consentimento do controlador
host.
Quando um dispositivo USB é conectado pela primeira vez ao controlador host, inicia-se o processo
de enumeração do dispositivo. O endereço do periférico é resetado e a taxa de transferência de dados
é determinada. Então o host lê as informações a respeito do dispositivo e designa um novo endereço
distinto de 7 bits para o dispositivo. Se há compatibilidade entre o host e o dispositivo USB, os
drivers de controle deste último são carregados e um sinal de estado é determinado para o mesmo.
Caso o host seja reiniciado, o processo de numeração será repetido para todos os dispositivos que
forem conectados posteriormente.
É importante observar que o host endereça apenas o dispositivo composto, cada entidade lógica tem
seu endpoint correspondente já determinado pelo fabricante. Quando um host deseja iniciar uma
transferência de dados, ele endereça o endpoint de um pipe da seguinte forma:
<endereço_do_dispositivo> e <número_do_enpoint>. A figura 2 mostra o que ocorre no momento da
conexão de um dispositivo USB:
Fig. 2: Seqüência de eventos após a conexão de um dispositivo USB
A transmissão de dados USB é feita através do envio de pacotes, e acontece da seguinte forma:
Todos os pacotes USB são compostos por um pacote identificador (PID) de um byte e por
informações adicionais de tamanhos variados, conforme o tipo de pacote. A figura 3 mostra o
formato dos pacotes USB:
Fig. 3: Formato dos pacotes USB
O Token Packet identifica o sentido da transmissão, podendo ser do host para o endpoint (Out
Packet), do endpoint para o host (In Packet), de início de frame (quadro) ou bidirecional, que é
próprio de uma transferência de controle (Setup Packet). O PID é seguido de dois bytes, sendo 11
bits usados para o endereçamento e 5 bits para a verificação de CRC (Cyclic Redundancy Check).
Um In Token (sinal de entrada) precisa de uma resposta do dispositivo através de um Handshake
Packet para iniciar a transferência de um frame de dados. Já um Out Token é seguido imediatamente
por um frame de dados, podendo o dispositivo enviar um Handshake Packet se necessário.
Os Handshake Packets são constituídos apenas pelo PID e são enviados como uma resposta a uma
transferência de dados ou para confirmar o sentido da transmissão e o status do dispositivo. Existem
três tipos básicos de Handshake Packets:
Um Data Packet consiste em um PID, seguido por no máximo 1023 bytes de dados e 2 bytes para
verificação de CRC. Existem dois tipos básicos: DATA0 e DATA1, que devem ser precedidos por
um sinal de endereço e seguidos por um sinal de handshake. Cada pacote enviado fornece uma
seqüência numérica de 1 bit. A cada transferência, o dispositivo grava o tipo do último pacote
DATAx recebido. Caso receba um pacote do mesmo tipo do anterior, entende este último como
sendo uma repetição, ignorando-o. Apenas um pacote do tipo oposto ao armazenado será recebido
pelo dispositivo. Isto evita a redundância e perda de dados.
Na verdade, o PID é constituído apenas por 4 bits, o nibble restante é o complemento de um dos
quatro MSB. Este formato ajuda na detecção de erros. É importante observar também que um PID
tem no máximo quatro bits 1 consecutivos. A versão USB 2.0 inclui o sinal PING, o qual pergunta
ao dispositivo se ele está pronto para receber um par de pacotes de dados. O dispositivo deve então
responder com o hanshake apropriado. Isto evita a necessidade de enviar um pacote de dados que
será interpretado como um a repetição para o dispositivo.
X j X
&
O barramento físico USB é composto basicamente por quatro fios, dois para a alimentação e dois
para a transferência de dados, além de uma malha para a redução de ruídos simples. O cabo usa um
padrão de cores para identificar as funções dos fios, como mostra a figura 4:
Os fios VBus e GND são responsáveis pela alimentação do dispositivo, fornecendo no máximo 5V e
500mA para cada porta do root hub do host. Já os fios D+ e D- são responsáveis pela transferência de
dados. Estes fios transmitem os dados usando a lógica de codificação NRZI (No Return to Zero
Inverted), ou seja, os 1s são interpretados como uma transição do sinal de nível alto para baixo, ou
vice-versa, e os 0s são lidos quando não há uma transição do sinal.
Do ponto de vista da alimentação, um dispositivo USB pode trabalhar de duas formas: Bus-Powered
e Self-Powered. No modo Bus-Powered, o dispositivo é alimentado pelo próprio barramento USB,
recebendo no máximo 500mA. Caso o hub que contenha os dispositivos não possuir alimentação
própria, cada dispositivo conectado receberá no máximo 100mA. Estes dispositivos são desligados
involuntariamente quando o controlador de host é desligado, diferentemente dos que operam no
modo Self-Powered, no qual o dispositivo possui alimentação própria e, portanto, não consome
energia do barramento. Flash drives e mouses são exemplos de dispositivos que trabalham no modo
B t l i l
it i ti t B: ti ti B i t
t i i i i t i t ti B :
i : t C t B
l i t t B i i t t l
i iti t t t i t i t it t t
l l i ií i t t
ti i i t i it i ti i ti
ti B i t i iti B t i
t i t i i i B
X
Y
Y Y B Y tlY
Y l
Y tY t
liY Y
ii
t
YY
i
Y
Y Y
i i
Y Y
Y t
Y Y Y
Y Y
Y Y i
iY
Y BY
Y
Y tY Y iY Y Y lY
Y Y Y tiY
tY tY Y
Y t
i
Y
t
YY
it
Y t
íti Yi :Y
Y
YlYYl :YYiitiYjY
Y
YYYtiYY
tY
Y!Y
tYY"tY
Y
YlY
Y
iY
Yi
YYt
Y
íi Y
YY #t$l
:Y iitiY BY
Y
Y
tY Y
tY
Y
Y
jY
iY
liYY
ii iYY"tY
Y
lY
tiili
:Y Y Y BY !Y
tí
lY
Y Y
iiY Y it
Y
iiY
%it
t
Y
Y
BYY&'ll
(Y
X ë
O padrão IEEE 1394 é uma interface externa multiponto de alto desempenho destinada a
comunicações que exigem uma alta taxa de transferência de dados e em tempo real (isochronous).
Criado em 1980 pela Apple, este padrão também conhecido como i.LINK (Sony) ou Lynx (Texas
Instruments), contou com a contribuição de diversas empresas de alta tecnologia até que suas
especificações estivessem bem definidas. A tecnologia FireWire substituiu a interface paralela SCSI
em diversas aplicações, devido aos baixos custos de implementação e esquema de conexão mais
simplificado. O barramento FireWire encontrou aplicação não só em sistemas computacionais, mas
também em produtos eletrônicos para o consumidor como câmeras digitais, aparelhos de DVD e até
televisores.
X ë j!"
O barramento FireWire utiliza a configuração Daisy Chain para conectar no máximo 63 dispositivos
a uma mesma porta. Além disso, pode se usar do recurso das pontes para interconectar até 1022
barramentos FireWire. É importante ressaltar que o FireWire pode não estar estruturado como uma
Daisy chain estrita, podendo usar uma configuração em forma de árvore. O padrão IEEE 1394 define
duas categorias de barramento: backplane (plano de fundo) e cable (cabeamento).
O padrão FireWire faz uso de uma pilha de protocolos com três camadas para controlar as interações
entre o sistema principal e os dispositivos periféricos pelo barramento serial. A figura 6 mostra
abaixo a estrutura dessa pilha de protocolos:
Fig. 6: Pilha de Protocolos FireWire
- Camada de Enlace (Link Layer): define a transmissão de dados na forma de pacotes. Há dois tipos
de transmissão aceitos:
O padrão IEEE 1394 possui um sistema de gerenciamento do barramento que permite uma maior
flexibilidade para a comunicação entre uma grande faixa de dispositivos, sem a necessidade de
adicionar qualquer controlador de barramento. Caso o barramento seja resetado, a estrutura do
barramento é determinada. São atribuídos IDs para cada um dos nós da árvore, o mestre de ciclo
inicia a arbitração e as transferências isócronas e assimétricas ocorrem, respectivamente. A figura 7
ilustra os eventos que ocorrem desde o momento em que o barramento é resetado:
Fig. 7: Gerenciamento do Barramento FireWire
X ë X
&
Os cabos FireWire possuem de 4 a 9 pinos para conexão de dispositivos. Duas vias são direcionadas
para a alimentação enquanto que as outras são separadas em pares e tratam especificamente da
sincronização e transmissão de dados. Nos cabos com 4 fios de conexão, não há fios destinados à
alimentação. As figuras 8 e 9 ilustram a aparência destes cabos, enquanto que a Tabela 2 identifica
cada um dos pinos de conexão:
)
,)
-)
'
1 8 Branco Vcc 30V não regulado
2 6 Preto GND Par trançado B
1 3 1 Laranja TPB- Par trançado B
2 4 2 Azul TOB+ Par trançado A
3 5 3 Vermelho TPA- Par trançado A
4 6 4 Verde TPA+
5 Escudo de A
7
9 Escudo de B
Tabela 2: Pinagem FireWire
X ë !+
A tecnologia FireWire, desde o lançamento da primeira versão (FireWire 400) já contava com as
seguintes características básicas:
X X')
As principais diferenças técnicas entre os dois barramentos seriais são descritas a seguir:
O padrão USB foi idealizado primeiramente como um complemento para o FireWire. USB foi
projetado buscando um baixo custo e simplicidade, enquanto que FireWire procurou fornecer uma
alta performance para aplicações em tempo real. As primeiras versões USB foram largamente
utilizadas em dispositivos de interface humana (HID), como mouses e teclados. Já o padrão FireWire
sempre encontrou aplicação em dispositivos de mídia, como câmeras digitais, scanners e aparelhos
de áudio e vídeo. A velocidade do USB 2.0 supera as primeiras implementações do FireWire
(FireWire 400), porém é bem inferior à do FireWire 800, o qual pode equiparar-se ao USB 3.0. O
chipset e os drivers utilizados para implementar USB e Firewire são de fundamental importância
para que as especificações de largura de banda e a compatibilidade dos periféricos descritas pelo
fabricante sejam totalmente atendidas.
'
Este relatório de pesquisa procurou colocar em linhas gerais as características de cada uma destas
tecnologias. Foram expostas e detalhadas as especificações físicas e de protocolo de cada
barramento, além dos novos recursos tecnológicos incluídos nas diferentes versões destes padrões.
Foi possível tornar mais transparentes os fundamentos que regem as estruturas de barramento serial
desenvolvidas nas últimas décadas.
#.
/0#
[1] STALLINGS, Willian. Arquiterura e Organização de Computadores. 8ª Ed. São Paulo: Pearson
Pratice Hall, 2010.
[2] ANDERSON, Don. FireWire System Architecture. 2ª Ed. Reading, MA: Addison-Wesley, 1999.
http://en.wikipedia.org/wiki/Universal_Serial_Bus
http://en.wikipedia.org/wiki/FireWire
http://www.interfacebus.com/Design_Connector_USB.html
http://www.interfacebus.com/usb-cable-diagram-30.html
http://www.faculty.iubremen.de/birk/lectures/PC1012003/14usb/FINAL%20VERSION/usb_protocol.html
http://www.clubedohardware.com.br/artigos/USB-Estrutura-de-Software/869
http://www.clubedohardware.com.br/artigos/USB-Estrutura-Eletrica/870
http://www.infowester.com/usb.php
http://www.usb.org/docs
http://www.allpinouts.org/index.php/IEEE_1394_Serial_Bus_-_Firewire