Universal Serial Bus USB Hardware Aluno: Frederico Ferlini Pontifícia Universidade Católica do Rio...

Post on 17-Apr-2015

108 views 1 download

Transcript of Universal Serial Bus USB Hardware Aluno: Frederico Ferlini Pontifícia Universidade Católica do Rio...

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