• Controlar a troca de dados
• Troca de dados na forma de carga útil real
Campos de pacote USB
No USB, o LSB do pacote é transmitido primeiro. Um pacote USB contém campos diferentes. Eles são:
• Sincronizar: É um campo obrigatório que ocorre no início do pacote. Este campo sincroniza o relógio do receptor com o transmissor. Para modo de velocidade baixa e máxima, este campo tem 8 bytes e para modo de alta velocidade tem 32 bytes.
• PID: PID significa ID do pacote. Indica o tipo de pacote que está sendo enviado. Este campo tem 8 bits de comprimento. Os quatro bits superiores identificam o tipo de pacote e os quatro bits inferiores são um complemento bit a bit dos quatro bits superiores. Os quatro bits inferiores ajudam na detecção de erros.

Fig. 1: Tabela listando campos de pacotes USB
• ADDR: Este campo contém o endereço de designação do dispositivo USB. É de 7 bits, o que significa que pode suportar 27 ¬ = 127 dispositivos.
• PEND: Este campo especifica o número do terminal. É de 4 bits, o que significa que pode indicar 2¬¬4¬¬ ¬¬= 16 pontos finais possíveis.
Para pacotes de token, é usado CRC de 5 bits e para pacotes de dados é usado CRC de 16 bits.
• POE: EOP significa Fim do Pacote. Este campo sinaliza as linhas de dados para Single Ended Zero (SE0) por aproximadamente 2 tempos de bit, seguido pelo estado J (estado ocioso) por 1 tempo de bit
Tipos de pacotes USB
Basicamente, existem quatro tipos de pacotes de dados:
1. Pacotes de tokens: Esses pacotes são enviados apenas pelo host. A estrutura do pacote contém um byte PID, 11 bits de endereço e um CRC de 5 bits. Tipos de pacotes de tokens:

Fig. 2: Imagem mostrando o formato de dados dos pacotes de token
2. Pacotes de dados: Existem dois tipos de pacotes de dados, Data0 e Data1. A estrutura do pacote contém um byte PID, campo de dados e CRC de 16 bits. O campo de dados pode transportar de 0 a 1023 bytes de dados. Os dados devem ser sempre enviados em múltiplos de bytes.

Fig. 3: Imagem mostrando o formato dos dados dos pacotes de dados
Após o USB2.0, mais dois tipos foram adicionados, Data2 e MData. Eles só são usados em transferência de alta velocidade e transferência isócrona de alta largura de banda quando há necessidade de transferir mais de 1.024 bytes a 8.192 kB/s.
3. Pacotes de aperto de mão: Esses pacotes são enviados principalmente em resposta a pacotes de dados. Eles consistem simplesmente em um byte PID. Existem três tipos de pacotes de handshake:

Fig. 4: Imagem mostrando o formato de dados dos pacotes de handshake

Transações
Uma transação bem-sucedida consiste em até três fases que ocorrem em sequência. Eles são fase de token, fase de dados e fase de handshake.

Fig. 6: Diagrama de blocos de transação USB
Essas fases garantiram a transferência segura de dados. Existem três tipos de transações:

Fig. 7: Tabela listando tipos de transações USB
Tipos de transferência USB
Tipos de transferências USB

Fig. 8: Tabela listando tipos de transferências USB
Atualmente, o USB oferece suporte a quatro tipos de modos de transferência. Cada um deles é projetado para resolver propósitos diferentes. Eles são :
1. Transferências de controle
As transferências de controle são utilizadas para transportar informações relacionadas à configuração do dispositivo periférico. O anfitrião aprende sobre o periférico através desta transferência. Ele também suporta fluxo de comunicação de tipo de comando e status. O ponto final de controle padrão é sempre zero. É o endpoint de controle que responde às consultas do host, como Descrição do Dispositivo, por meio de transferência de controle.
Existem três etapas na transferência de controle e cada etapa é composta por uma ou mais transações. Eles são:
• Estágio de configuração – A transferência de controle sempre começa nesta etapa. Neste, o host envia a consulta/solicitação para o dispositivo USB (periférico).
• Estágio de dados – Nesta fase são realizadas diversas transações IN ou OUT. O pacote de Dados contém as informações relacionadas à solicitação realizada na etapa anterior.
As transferências de controle são suportadas por todos os modos de velocidade. O tamanho máximo da carga útil de dados para pacotes de dados no estágio de dados é diferente para cada modo de velocidade. Para dispositivos de baixa velocidade, são 8 bytes. Para dispositivos de velocidade máxima, pode ter 8, 16, 32 ou 64 bytes. Para dispositivos de alta velocidade, são 64 bytes. Esses bytes não incluem bits PID e CRC.
As transferências em massa são usadas para transferir grandes quantidades de dados sequencialmente. Eles não têm largura de banda garantida. A transferência ocorre quando resta alguma largura de banda após a alocação de largura de banda para controle, interrupção e transferência isócrona. Se não houver largura de banda disponível ou o barramento estiver ocupado, a transferência poderá demorar muito para ser concluída.
3. Transferências isócronas
Eles são unidirecionais e usam transações IN ou OUT. Uma característica especial da Transferência Isócrona é que não há pacote de handshake na transação. Eles são suportados apenas por dispositivos Full e High Speed.
4. Interromper transferências
Neste tipo de transferência, as transações IN e OUT são realizadas regularmente. O tamanho máximo da carga útil de dados para transferência de interrupção é diferente para cada modo de velocidade. Para dispositivos de baixa velocidade, é de até 8 bytes. Para dispositivos de velocidade total, é de até 64 bytes. Para dispositivos de alta velocidade, é de até 1.024 bytes. Esses bytes não incluem bits PID e CRC.

Fig. 9: Tabela comparando tipos de transferências USB

Fig. 10: Tabela comparando tipos de transferências USB

Fig. 11: Tabela listando transações de diferentes transferências USB