universal serial bus usb hardware aluno: frederico ferlini pontifícia universidade católica do rio...
TRANSCRIPT
Universal Serial BusUSB
Hardware
Aluno:
Frederico Ferlini
Pontifícia Universidade Católica do Rio Grande do SulFaculdade de Engenharia\InformáticaSeminário de Programação de Periféricos
Sumário
• Introdução• Barramento Físico• Comunicação Serial• Tipos de Pacotes• Codificação CRC• Tipos de Transações• Processo de Enumeração• Descritores• USBN 9603• Referências
Introdução• Comunicação serial:
– lenta– número de portas limitadas por máquina
• USB:– 480Mbps(FullSpeed) v2.0 – rápido– suporta conexões mais lentas (ex.:1,5Mbps)– permite até 127 periféricos conectados– fiação e pinagem menos complexa– plug and play– hubs + functions = usb (Próximo Slide)
Introdução
• Estrutura de árvore
Controlador Host
pontehub
embutido(hub raiz)
FSB da CPU,PCI ou PCMCIA
funções e/ou hubs
Barramento Físico• Especificações técnicas:
– cabo blindado(irradiações eletromagnéticas)– 4 fios(Vbus,D+,D-,GND)– até 5 metros– impedância diferencial de 90Ω– dois tipos e tamanhos padronizados
Pino Sinal Cor1 Vbus(+5V) Vermelho
2 D+ Branco
3 D- Verde
4 GND Preto
Barramento Físico• Funcionamento:
– diferença de tensão entre D+ e D- (cancela o possível ruído)
– resistores R1(pull-down) e R2(pull-up)– a posição do resistor R2 indica a velocidade de
operação– R2 D+ (12Mbps) | R2 D- (1,5Mbps)– valores típicos : R1 = 15kΩ e R2 = 1,5kΩ
Esquema Físico de Conexão do Barramento
Comunicação Serial• Estados Lógicos
– barramento ocioso (“idle”) = J• D+ = Vbus x R2/(R1+R2) ; R1 >> R2• D- = GND pelo “pull-down”
– dispositivo desconectado = SE0• D+ e D- = GND pelos resistores de “pull-down”
estado D+ D-
J alto baixo
K baixo alto
SE0 baixo baixo
Comunicação Serial• Codificação NRZI(Non Return to Zero Inverted)
– transformação de J’s e K’s para 1’s e 0’s
– exemplos:• seqüência de sincronismo:
KJKJKJKK 10000001
• seqüência de PID: KJJJKKKJ 10110110
– bit redundante (“stuff”):• evitar a permanência do estado J• bit_extra = 0; desprezado na recepção• a cada 6 bits 1’s
J Kmudança de estado
bit =0bit =1 bit =1
Comunicação Serial (Pacotes)• Campos (no mín. 3):
– SYNC : sincronismo• seqüência : KJKJKJKK
– PID : identificação do tipo do pacote• primeiros estados : KJJJJKKK• KJJJ 1011 = DATA1• os seguintes são opcionais: dados...• até 1024 bytes
– Fim do pacote• dois estados SE0 consecutivos• barramento ocioso
• se ficar 3 períodos de relógio (12MHz), ou seja, 2,5us em SE0 o periférico é considerado desconectado fisicamente
Tipos de Pacotes• 3 tipos(token, data, handshake)
– subdivididos em até 15 subtipos (tabela)
PID Nome Tipo
0101 SOF
Token1101 SETUP
1001 IN
0001 OUT
0011 DATA0 Data
1011 DATA1
0010 ACK
Handshake1010 NAK
1110 STALL
... RESERVED ...
9
Tipos de Pacotes• Token
– SOF – Start Of Frame• 1000 pacotes/segundo (um a cada 1ms)• 11bits – até 2048 frames.
– Setup, IN e OUT• IN – indica início de um ciclo de leitura• OUT e Setup – indica início de um ciclo de escrita
*Setup – não pode ser rejeitado; é sempre para ENDP0
ADDR – endereço do dispositivo (7bits - até 127)
END – endereço do endpoint (subdispositivo) (4bits – até 16)
KJKJKJKK
SYNC
8 bits
PID
11 bits
contador de SOFs
5 bits
CRC5
2xSE0
fim
KJKJKJKK
SYNC
8 bits
PID
7 bits
ADDR
5 bits
CRC5
2xSE0
fim
4 bits
ENDP
Tipos de Pacotes• Data
– DATA1 e DATA0• Após um token IN (upstream) ; da função para o hub• Após um token OUT ou Setup (downstram); do hub para o função
• Handshake (sempre contrário ao fluxo dos dados)
– ACK, NAK e STALL• ACK – último pacote do tipo data/token foi recebido com sucesso• NAK – receptor ocupado/inapto• STALL – erros de comunicação (ex.: endpoint inválido)
KJKJKJKK
SYNC
8 bits
PID
2xSE0
fim
KJKJKJKK
SYNC
8 bits
PID
0 a 1023 x 8 bits
PAYLOAD
16 bits
CRC16
2xSE0
fim
Codificação CRC• CRC – Cyclic Redundancy Check
– método de detecção de erro – altamente eficiente– implementado em HW (velocidade)– fluxo:
• transmissor calcula o CRC dos dados e o envia• receptor calcula CRC dos dados recebidos• receptor compara o CRC recebido e calculado• 99,9969% probabilidade de estar correto, se igual
– probabilidades de correção de erro:• erro em um único bit: 100%• dois bits errados: 100%• número par de bits errados: 100%• blocos de bits errados com tamanho inferior a 16bits: 100%• blocos de bits errados com tamanho inferior a 17bits: 99,9969%• outra condições de erros: 99,9984%
Tipos de Transações• Transação:
é a completa comunicação entre o host e o dispositivo, dentro de um quadro de 1ms
• Tipos:
– Interrupt(interrupção):• transações rápidas e de pouca freqüência
• ex.: teclado, mouse...
– Bulk(volumosa):• transações de grande volume de dados
• sem restrição de tempo
• ex.: impressoras, scanners...
Tipos de Transações• Tipos:
– Isochronous(Isócrona):• tolerância a erros (sem Handshake)
• transação mais rápida
• ex.: monitores, sistemas de áudio...
– Control(Controle):• mais complexa
• ex.: processo de enumeração...
Processo de Enumeração• Designação:
– mecanismo de configuração que permite que host aprenda e se “adapte” as novas funções ou hubs conectados a ele
• Objetivo:– atribuir identificadores aos dispositivos
(endereços)– receber as características de operação do
periférico e de seu fabricante– saber os tipos de transações que serão
utilizados para este dispositivo
Processo de Enumeração• Basicamente:
– após o periférico ser conectada ao barramento e o hub ter informado o host temos:
• hub detecta a velocidade (Low/High)
• hub reseta o dispositivo
• host pede descritor (8bytes)
• host seta endereço
• host pede descritor completo (com o novo endereço)
• host pede o descritor de configuração
• host carrega o driver adequado
• host configura dispositivo de acordo com o driver
• host pede descritor da classe (HID)
• ...
Descritores (exemplo)Dispositivo Configuração
nº bytes Campo nº bytes
1 comprimento comprimento 1
1 tipo tipo 1
2 versão USB índice da interface 1
1 classe alternativo 1
1 subclasse endpoints 1
1 protocolo classe 1
1 tamanho EP0 subclasse 1
2 ID fabricante protocolo 1
2 ID produto nome da interface 1
2 versão
1 nome fabricante
1 nome do produto
1 número serial
1 número de config.
Descritores• Outros possíveis descritores:
– de interface• quais e os tipos de interfaces que serão utilizados
– de HID (“Human Interface Descritpor”)• só relacionado a protótipos específicos
• não é preciso desenvolver um device-driver
• classe embutida ao SO com funções de básicas de I/O HID
– de endpoint• quais e como serão usados os endpoints
USBN 9603• Características:
– foi lançado em 2000– é a ponte oferecida pela National– funcionamento controlado pela programação
dos diversos registradores, mapeados internamente em memória
– acesso de forma convencional (CS, WR, RD)– pode gerar interrupções ou requisições de
DMA– estados operacionais:
• operacional (configurado e pronto para uso)
• suspenso (sem atividade)
• acordado (detecção de atividade)
• apagado (USBN sem configuração)
USBN 9603• Diagrama de blocos
USBN 9603• Pinagem:
XIN e XOUT : conexão de um cristal de 24MHz
CLKOUT: oferece um relógio de 4 a 12MHz, pode ser usado junto a um uC8051
Vcc, GND, D+ e D- : padrão USB
CS, WR, RD: leitura e escrita dos registradores internos
INTR, DRQ: interrupção e requisição DMA
MODOx : modo do barramento (multiplex, ou não)
D[7..0]: barramento de dados e/ou de endereços (multiplexado)
...
Referências• PC: Um Guia Prático de Hardware e
Interfaceamento• USBN 9603 – Data Sheet• www.usb.org• Apresentação Ricardo Zelenovsky• http://www.bpiropo.com.br/tt20060706.htm• http://www.infowester.com/usb20.php
FIM
Obrigado!
Lixo