Protocolo USB: Tipos de pacotes USB e transferências USB (Parte 2/6)

Depois de discutir os recursos e a arquitetura do USB, vamos passar ao seu protocolo. Uma interface USB possui várias camadas de protocolo. Na maioria das vezes, as camadas de nível inferior são tratadas individualmente pelo IC do controlador host, enquanto o designer final precisa trabalhar nas camadas de nível superior. Todo protocolo de comunicação envolve a troca de pacotes. O mesmo acontece com o USB. Esses pacotes encapsulam informações de maneira organizada e definida por padrão. Esses pacotes geralmente contêm informações relacionadas a:

• Controlar a troca de dados

• Troca de dados na forma de carga útil real

• Detecção e correção de erros através de verificação de status

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.

Tabela listando campos de pacotes USB

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.

CRC: CRC significa Verificação de redundância cíclica. Este campo é usado para verificar se há algum erro nos dados do pacote usando o processo CRC

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:

Imagem mostrando o formato dos dados dos pacotes de token

Fig. 2: Imagem mostrando o formato de dados dos pacotes de token

• In – Este pacote notifica o dispositivo USB que o host deseja ler informações.
• Out – Este pacote notifica o dispositivo USB que o host deseja gravar informações.
• Setup – Este pacote é usado para iniciar a transferência de controle
Com USB2.0, mais dois pacotes foram adicionados:
• Ping – Antes de enviar o par de pacotes OUT/DATA, este token pergunta ao dispositivo USB se ele está pronto para receber o par de pacotes OUT/DATA.
Split – Este token é usado para se comunicar com um dispositivo de velocidade baixa/máxima em um barramento de alta velocidade

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.

Imagem mostrando o formato dos pacotes de dados

Fig. 3: Imagem mostrando o formato dos dados dos pacotes de dados

• Para dispositivos de baixa velocidade, o campo de dados máximo é de 8 bytes.
• Para dispositivos de velocidade máxima, o campo de dados máximo é de 1023 bytes.
• Para dispositivos de alta velocidade, o campo de dados máximo é de 1024 bytes

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:

Imagem mostrando o formato de dados dos pacotes de handshake

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

• ACK – Reconhecimento do pacote recebido
• NAK – indicando que os pacotes não podem ser recebidos ou enviados temporariamente. Também usado para indicar que não há dados para enviar
• STALL – indicando que o dispositivo está em estado de erro e precisa de intervenção do host
Com USB2.0, mais dois pacotes foram adicionados:
• NYET – indicando que a transação de Split ainda não foi concluída.
ERR – indicando falha na transação de divisão
4. Pacotes de início de quadro (SOF): O pacote SOF consiste em um número de quadro incremental de 11 bits. Em um barramento de alta velocidade, esse pacote é enviado pelo host a cada 1 ms e em um barramento de alta velocidade a cada 125 nós. Este pacote é usado para sincronizar a transferência isócrona.
Imagem mostrando o formato de dados dos pacotes de início de quadro (SOF)
Fig. 5: Imagem mostrando o formato dos dados dos pacotes de início de quadro (SOF)

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.

Diagrama de blocos de transação USB

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:

Tabela listando tipos de transações USB

Fig. 7: Tabela listando tipos de transações USB

Tipos de transferência USB

Tipos de transferências USB

Tabela listando tipos de transações 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.

• Estágio de status – Esta etapa utiliza transações IN ou OUT. Esta etapa ocorre sempre para fornecer o status/resultado da solicitação feita pelo host.

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.

2. Transferências em massa

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.

As transferências em massa são unidirecionais. Eles são suportados apenas por dispositivos Full Speed ​​e High Speed. O tamanho máximo da carga útil de dados para pacotes de dados é diferente para cada modo de velocidade. Para dispositivos de velocidade máxima são 8, 16, 32 ou 64 bytes. Para dispositivos de alta velocidade, é de até 512 bytes. Esses bytes não incluem bits PID e CRC.

3. Transferências isócronas

A transferência isócrona é usada onde a entrega de dados em taxa constante é importante, mesmo se alguns dados forem perdidos ou corrompidos. A largura de banda garantida existe para transferência isócrona, mas não há garantia de entrega sem erros. Eles normalmente são usados ​​para transmitir informações urgentes, como áudio ou vídeo. Não deve haver atraso na transmissão de dados para streaming de áudio ou vídeo em tempo real; caso contrário, resultará em falhas na saída.

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.

O tamanho máximo da carga útil de dados para pacotes de dados é diferente para cada modo de velocidade. Para dispositivos de velocidade total, é de até 1023 bytes. Para dispositivos de alta velocidade, é de até 1.024 bytes. Esses bytes não incluem bits PID e CRC.

4. Interromper transferências

Interrupt Transfer usa polling para verificar se há algum dispositivo que deseja transferir dados. Se o dispositivo não tiver dados para enviar, ele responde com NAK. A votação é feita regularmente. A transferência de interrupção também é usada para transmitir dados para um dispositivo de forma programada. O dispositivo responde com NAK se não estiver pronto para aceitar dados.

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.

Tabela comparando tipos de transferências USB

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

Tabela comparando tipos de transferências USB

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

Tabela listando transações de diferentes transferências USB

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

O próximo artigo da série fala sobre os vários tipos de descritores USB

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.