Comentários
- Você já olhou a Especificação de barramento serial universal , especialmente o capítulo 9 do USB? Ou leia Jan Axelson ' s USB completo?
- Obrigado por esses recursos, mas o único problema é que eu quase não sei nada sobre eletrônica, então o guia não faz sentido para mim. Sei que compreender todo o protocolo USB requer um conhecimento aprofundado específico, mas só preciso de uma visão geral rápida. (Esta pergunta não é ' t para um projeto. Só perguntei porque estava curioso)
Resposta
Tentarei responder às suas perguntas na ordem em que você as propôs (numeração pode ajudar).
Existem de fato quatro fios (ignorando USB3.x no momento). Dois de fato para alimentação (+ 5V e GND) e dois para sinalização (D + e D -).
A principal coisa a se notar sobre os fios de sinal é o seu nome, observe o + e – (às vezes também P e N ou P e M). Eles normalmente indicam na eletrônica que algo é diferencial. significa que os 1 “se 0” s são indicados pela polaridade da voltagem entre cada cabo. Isso é oposto à terminação simples, onde os 1 “se 0” s são transportados como um voltagem relativa ao GND.
O que quero dizer com polaridade? Bem, imagine que o cabo D + é conduzido a \ $ + 3,3 \ m athrm {V} \ $, e o D- é conduzido para \ $ 0 \ mathrm {V} \ $. A diferença entre os dois é \ $ V_ {D +} – V_ {D-} = 3,3 – 0 = 3,3 \ mathrm {V} \ $. Agora, se em vez disso, o cabo D + foi conduzido para \ $ 0 \ mathrm {V} \ $ e o D- conduzido para \ $ + 3,3 \ mathrm {V} \ $, a diferença torna-se \ $ V_ {D +} – V_ {D- } = 0 – 3,3 = -3,3 \ mathrm {V} \ $. Observe o sinal de menos, indicando a polaridade oposta.
Para que isso funcione então, os dois cabos de dados devem ser complementares (quando um é alto, o outro é baixo) para transferir dados, portanto deve operar na mesma frequência. Você pode pensar por que se preocupar, basta usar um cabo. O problema é que o mundo é um lugar barulhento, um fio de terminação única (modo comum) é muito sujeito a ruídos que em altas velocidades (mesmo em baixas velocidades em ambientes adversos) que podem corromper os dados (faça um 1 a 0). Na sinalização diferencial, os dois cabos estão expostos ao mesmo ruído, então isso é cancelado!
Um exemplo rápido. Digamos que o sinal que você está enviando seja \ $ 2 \ mathrm {V} \ $ ou \ $ 0 \ mathrm {V} \ $. Digamos também que em cada fio você obtenha \ $ 1 \ mathrm {V} \ $ de ruído (irreal, mas um exemplo). Para terminação simples, seus sinais no receptor seriam \ $ 2 + 1 = 3 \ mathrm {V} \ $ que é claramente um 1 lógico, ou \ $ 0 + 1 = 1 \ mathrm {V} \ $ em que ponto você não tenho ideia do que era. Para diferencial, no entanto, seus sinais no receptor seriam \ $ (2 + 1) – (0 + 1) = 2 \ mathrm {V} \ $ ou \ $ (0 + 1) – (2 + 1) = – 2 \ mathrm {V} \ $ que são os mesmos como se não houvesse nenhum ruído!
Existem outras vantagens em ter dois fios. Quando não está enviando dados, a especificação USB usa os dois fios independentemente para sinais de controle, por exemplo, um sinal de sincronização, um comando de reinicialização, etc. Eles podem ser claramente distinguidos dos pacotes de dados por vários truques que provavelmente são muito profundos (tudo estará na especificação USB mencionada nos comentários).
Em USB, os dois dispositivos precisam ter a mesma frequência. Geralmente é algum múltiplo de 12MHz – é por isso que você verá dispositivos USB operando em frequências de clock como 48MHz ou 12MHz, etc. Essas frequências são geradas por uma referência de cristal que geralmente tem precisão de cerca de 20ppm (240Hz para um cristal de 12MHz ) Em geral, isso é próximo o suficiente para que, em virtude dos pulsos de sincronização nas linhas de dados e do fato de os dados serem enviados em rajadas (o que significa que a variação na frequência não aumenta ao longo do tempo), os dois dispositivos podem permanecer sincronizados. Se se você usar acidentalmente, digamos, um cristal de 16 MHz, o dispositivo provavelmente não conseguirá enumerar.
Como o mestre sabe que o dispositivo precisa de energia? Simples, todos os dispositivos USB têm permissão para extrair um quantidade de corrente sem solicitá-la – até \ $ 100 \ mathrm {mA} \ $, pelo que me lembro. Isso dá ao dispositivo energia suficiente para ligar, afirmar sua presença (com um resistor pull up na linha D + – novamente, provavelmente muito aprofundado). Uma vez que o mestre está ciente do dispositivo, ele aloca um subsídio de energia para aquele dispositivo e pergunta se ele precisará de mais (por exemplo, para um dispositivo de alta potência, se deseja o \ $ 500 \ mathrm {mA} \ $ permissão de alta corrente).
O protocolo USB está dentro das especificações. Tentar revisá-lo provavelmente ainda seria muito profundo.Mas, dito isso, você pode querer verificar esta resposta para outra pergunta que fornece alguns detalhes.
Resposta
USB 1.x (1,5 Mbit / se 12 Mbit / s) e 2.0 (480 Mbit / s) usam quatro fios, V \ $ _ {BUS} \ $ ( +5), D +, D- e GND. O D + e D- formam um par diferencial. Há também uma extensão chamada OTG (On-The-Go) que permite que um dispositivo atue como um host ou dispositivo USB, e isso faz uso de um quinto cabo de identificação que podemos ignorar.
Se o a taxa máxima de cada host e dispositivo é diferente, ocorre uma negociação e é utilizada a maior velocidade comum a ambos.
A sinalização diferencial fornece um alto grau de imunidade a ruído. Os sinais de dados são enviados positivos na linha D + e negativos na linha D-. No lado receptor, o lead positivo é enviado para o lead + de um comparador (agindo como um subtrator) e o lead negativo é enviado para o lead – do comparador.
Para pulsos válidos, esses dois somam (uma vez que o pulso negativo foi enviado para a – liderança do comparador, acrescentam). Mas se o ruído for induzido na linha, em geral afetará as linhas D + e D- da mesma forma, e o comparador os subtrairá.
O diagrama mostra os dados indo em apenas uma direção. Isso ocorre porque os sinais USB são half-duplex, os dados vão apenas em uma direção por vez.
USB 3.0 (até 10 Gbit / s) usa nove fios em vez de quatro e fornece operação full-duplex desde existem pares diferenciais em cada direção para transmitir e receber.
Os dispositivos podem consumir até 100 mA sem ter que “perguntar”. Para USB 1.xe 2.0, o dispositivo pode solicitar ao host para fornecer até 500 mA. Para USB 3.0, isso foi aumentado para 900 mA. Existe um protocolo separado usado para o carregamento da bateria (sem troca de dados); isso pode chegar a 5A em alguns casos.
Comentários
- Obrigado pela resposta. O que acontece se os dois dispositivos têm frequências de clock diferentes?
- Uma técnica chamada " recuperação de clock " é usada: arrowdevices.com/blog/beginners-guide-to-clock-data-recovery
Resposta
O USB usa sinalização diferencial para reduzir a interferência e permitir a transmissão em alta velocidade a longa distância. Um barramento diferencial é construído com dois fios, um deles representando os dados transmitidos e o outro seu complemento. A ideia é que a tensão “média” nos fios não transmita nenhuma informação, resultando em menos interferências. Serial mais moderno barramentos (USB, Ethernet, PCIe, SATA, etc.) são diferenciais, pois o custo dos fios extras é muito superado pelas vantagens na redução de ruído. O USB 2 também é chamado de “half duplex”. Isso significa que apenas o link funciona em uma direção a qualquer momento. Digamos, seu computador pode enviar uma mensagem para o seu mouse. Ou o mouse pode enviar uma mensagem para o seu computador. Mas não os dois ao mesmo tempo. O barramento deve ser “virado” cada os dados de tempo devem ser enviados na outra direção.
No que diz respeito ao relógio, o USB aproveita dispositivos chamados serializadores e desserializadores. O serializador é responsável por gerar os dados seriais na extremidade de transmissão, e o desserializador é responsável por recuperar os bits do outro lado d. Parte do trabalho do serializador é codificar os dados de uma maneira que seja fácil decodificar, incluindo informações de enquadramento e sincronização. Parte do trabalho do desserializador é recuperar o sinal do relógio. USB usa uma codificação chamada NRZI, ou non-return-to-zero inverted. No NRZI, o lógico 0 é representado por uma transição e o lógico 1 é representado por nenhuma transição. O USB usa enchimento de bits para limitar o comprimento de 1s sucessivos enviados pelo fio. O resultado disso significa que há transições com freqüência suficiente para recuperar todos os bits, mesmo se os relógios do transmissor e do receptor não marcam exatamente na mesma taxa. Eles precisam estar relativamente próximos, no entanto. Também existem sequências de sincronização explícitas que são enviadas junto com os dados.
No que diz respeito à energia, o dispositivo pode consumir uma certa quantidade de energia sem solicitar ao host. Para desenhar mais do que isso, é necessário negociar para garantir que o host não fique sobrecarregado. O dispositivo deve esperar até obter permissão antes de poder puxar mais corrente.