Componentes:

Adriano César Machado Pereira
Bruno Augusto Vivas e Pôssas
Eduardo Kraemer Góes
Renato Mangini
Thiago Augusto Leite Quadros


Introdução 

    Definindo de forma bastante simplificada, USB é um protocolo de comunicação que suporta transferência de dados entre computadores e periféricos.

    Esse protocolo está sendo desenvolvido por grandes líderes industriais com o intuito de torná-lo um padrão definitivo para comunicação de periféricos.


Motivação 

    A partir dessa definição, a primeira pergunta que nos vem a cabeça é:
 

  •   Qual é a motivação de se estudar um novo barramento de interconexão de periféricos?
  •     A resposta provém do seguinte fato: com o aumento da variedade de periféricos disponíveis para microcomputadores tem aumentado também a complexidade envolvida na instalação e troca de periféricos (novas placas a serem acopladas a placa-mãe, emaranhado de cabos atrás das CPUs, assim como a grande quantidade de drivers que precisam ser instalados com os novos dispositivos). Um outro problema que se tenta solucionar é a inexistência de um formato padrão de conexão de periféricos.

        Outra pergunta que pode surgir é:
     

  •   Qual a relação entre USB e arquitetura/organização de computadores?
  •     A resposta para essa outra pergunta baseia-se no fato de que com o aumento das tecnologias envolvidas na área da informática torna-se necessário que os projetistas de arquiteturas adquiram novos conhecimentos a respeito de barramentos internos e externos.

     

    Conceitos Importantes

        Antes de caracterizarmos melhor esse protocolo seria interessante definir alguns conceitos fundamentais relativos a USB:
     

                Cadeia: ligação de dispositivos em série.
                Estrela: ligação de dispositivos de forma que um dispositivo específico(HUB) compartilha a
                            largura de banda com os demais periféricos.
     
     
     

    Definição
     

  •    Definição Comercial: USB é um protocolo de comunicação de periféricos, desenvolvido por líderes de indústrias de telecomunicações e PC’s que proporciona plug and play real a alta velocidade, baixo custo e fácil uso.

  •  
  •    Definição: Protocolo que regulamenta meios físicos, software do host, firmware dos dispositivos, plugs e hubs para ligação de periféricos em computadores
  •  

    Características

    - Bus Master/Slave

     O USB se comportam como um bus Master/Slave onde o Master é o USB Host que toma conhecimento da insercao e do desligamento dos devices, inicia o processo de enumeracao e comanda todas as transações subsequentes no bus. É de sua responsabilidade também coletar os status e as estatísticas de cada periférico. Os periféricos são slaves do barramento podendo ser de dois tipos:
     1) Funcionais - como teclado, mouse, joysticks,...
     2) Hubs - que funcionam para conectar outros dispositivos

     - 127 dispositivos

     As especificações do USB preveem a conexão de até 127 dispositivos ao mesmo tempo.

     - Conexão via Hubs

     Uma vez que a itenção é eliminar as placas e cabos, o USB trabalha com hubs que fazem as transferências de dados entre os periféricos. Os hubs podem ser conectados de diversas formas permitindo que os dispositivos se organizem em cascata ou estrela.

     - Hot Swap

     O USB foi desenvolvido para que a instalação e desinstalação de dispositivos possam ser feitas com o computador em funcionamento, não sendo necessário nova configuração ou boot do sistema.

     - Taxas de Transferência

     O USB pode operar em dois modos que variam a velocidade com que os dados são transmitidos:
     1) full-speed que permite uma velocidade de 12Mbps
     2) low-speed que permite uma velocidade de 1.5 Mbps
     
     - Bidirecional

     Permite o tráfego de dados em duas direções:
     1) Downstream (Host -> Device ou Host -> Hub; Hub -> Device)
     2) Upstream (Device -> Host)

     - Cabo USB

     O cabo USB consiste de 4 fios. Dois deles, D+ e D- são usados para transmissão de dados através de variações de sinais. O D+ é usado para transferência de dados a 12 Mbps e o D- para transferência de dados a 1,5 Mbps. Os outros dois são para transmissão de energia (Vbus) e aterramento (Gnd). Normalmente, cabos desprotegidos (unshielded) são usados para transmissão a baixas velocidades, enquantos que cabos protegidos (shielded) são usados para altas velocidades de transmissão.
     Um fato interessante é que as duas extremidade do cabo são diferentes, e consequentemente, não comutáveis. Isto permite a transmissão bidirecional e evita confusões nas conexões dos cabos.

     

    Aplicações
     

  •     Cameras de video e fotograficas, scanners, teclados, mouses, monitores, adaptadores para

  •       rede ethernet, adaptadores para porta paralela (impressoras), cartões flash memory, joysticks,
          modems, telefones (central telefônica no computador), caixas de som.
     

    Outras Informações sobre USB

        USB HOST

        Estrutura do software :

       - Host Controler driver : Camada que "linka" as diferentes implementações do host ao resto da estrutura USB.
       - USB System software : Camada que atua entre o Controlador e o software cliente (parte do sistema operacional).
       - Client software: Permite ao cliente comunicar com um device USB através de abstrações da camada USB System.

        Só pode existir um USB Host, e este é o master do barramento. Ele toma conhecimento da inserção e do desligamento dos devices, inicia o processo de enumeração e comanda todas as transações subsequentes no bus. É de sua responsabilidade também coletar os status e as estatísticas de cada device.

        O Protocolo USB

        O host USB envia constantemente, a cada 1 milisegundo, um pacote de início de frame (SOF - start of frame). Todos os devices estao continuamente "ouvindo" o barramento. Quando o host envia um token cujo endereço "casa" com o do device, este decodifica o pacote, verifica o tipo do mesmo (veja abaixo) e, de acordo com o tipo, toma as devidas atitudes.

        O escalonamento de envio pela banda compartilhada é feito trocando o device-alvo nos SOF.

    A figura abaixo mostra como são os formatos dos pacotes:

            Cada pacote tem um PID que especifica o tipo. A transação inicia quando o host controller envia um pacote token com o endereço do periférico, endpoint number (porto), a direção de transferência de dados e o tipo de canal de transferência. O endereço do periférico é selecionado de acordo com o endereço passado pelo token. Se o host estiver pedindo dados, então o pacote de dados é enviado pelo periférico. Geralmente, depois que o dado é enviado, o destinatário(host ou periférico) envia um pacote handshake, que pode ser ACK, NAK ou STALL (para maiores informações referir a www.usb.org).

        Acoplamento e desligamento de devices

        O protocolo USB preve hot-swap dos devices, ou seja, eles podem ser plugados e desplugados sem necessidade
    de desligá-los nem de desligar ou reinicializar o host. O cabo do device possui quatro fios. Desses, dois (D+ e D-)
    são usados para transmissão de informações e os outros dois são de alimentação e terra. Os periféricos que usam alta velocidade (12MB) devem ter um resistor no cabo D+, e os de baixa velocidade (1,5 MB) devem ter um resistor no D-.
    O host usa a diferença de voltagem causada pela inclusão destes resistores no barramento para saber que um novo device
    foi acoplado e qual a sua velocidade.

        Categorias de Transferência de Dados

        As transferências entre host e device podem ser de quatro tipos :

       - Control : é usada pelo host para solicitar informações e configurar devices.

       - Interrupt : é usada pelo device para causar uma interrupção no host. Como o host é o bus master e nenhum slave pode interrompê-lo, o que acontece na realidade é que, de tempos em tempos, o host envia um pacote do tipo Interrupt para cada
    device. Se o device tiver alguma interrupção na fila, ele envia os dados dela.

       - Isochronous : É uma transferencia sem "handshakes" ou reenvio de pacotes. Se um pacote chegar com erro no destino (que pode ser tanto o host quanto o device), ele é simplesmente descartado. Usado para transferências em que a integridade
    é menos importante do que a velocidade dos dados. Exemplo: transferência de som.

       - Bulk : Consiste de protocolos de "handshaking", para verificação de erros e eventual reenvio do pacote. É usado em devices cuja confiabilidade dos dados é crítica.
     
     

    Vantagens

     

    Desvantagens

    Mercado

            Nenhum custo adicional foi imposto pelos desenvolvedores do USB, o que faz com que os preços de periféricos USB sejam compatíveis com os preços de periféricos existentes no mercado, não havendo um custo extra pela tecnologia. 


    Suporte

              Drivers Versao 0.9 (segundo a propria Microsoft).  Nao foram 100% testados; faltam algumas classes.
            Suporte total a USB, testado em mais de 100 produtos, segundo a Microsoft.
            Está em fase final de desenvolvimento
            Idem Linux (a pessoa que está desenvolvendo é a mesma para ambos)
            Não suportado. Segundo a Sun, está sendo estudado para uma proxima versão do Solaris.
            Não suportado
     

     Simplificação

        A figura acima mostra como o USB pode simplificar a vida do usuário.

     

     Conclusão

        O USB acaba por apresentar-se uma boa solução para o problema de conectividade de periféricos em PC’s, apresentando um bom desempenho, e apesar das desvantagens atuais que o mercado apresenta.

     

     Bibliografia