Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo...
Transcript of Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo...
Pontifícia Universidade Católica - PUCRS
Programação de Periféricos
Seminário sobre protocolo Firewire
– Palestrantes –
Natan Hoppe
Thiago Ludwig
Porto Alegre, 24 de Outubro de 2007.
História
• Desenvolvido pela Apple
• Substituto do SCSI
• Padronizado em 1995 através da norma IEEE 1394.
• Firewire 400, IEEE 1394a
• Firewire 800, IEEE 1394b
Exemplos de aplicação
Figura 1 – Filmadora
Figura 2 – HD externo
Figura 3 – Equipamento de áudio
Cabo – Firewire 400
• Alimentação: 2 pinos
• Dados: 4 pinos
• Distância máxima: 4,5m
Cabo – Firewire 800
• Alimentação: 2 pinos
• Dados: 4 pinos
• Aterramento: 2 pinos
• Nulo: 1 pino
• Distância máxima: 4,5m
Cabo
Figura 4 – Cabo Firewire 400
VelocidadeFirewire:
• Firewire 400: 400 Mbps = 50 MB/s
• Firewire 800: 800 Mbps = 100 MB/s
USB:
• USB 1.0: 1,5 Mbps = 0,188 MB/s
• USB 1.1: 12 Mbps = 1,5 MB/s
• USB 2.0: 480 Mbps = 60 MB/s
Velocidade
Figura 5 – USB Vs Firewire
Topologia• Até 63 dispositivos na mesma porta
Figura 6 – Exemplo de conexão dos periféricos
Nós e endereçamento
• 1 Firewire – 1024 barramentos
• 1 barramento – 64 nós
• 1 nó – 256 TB
• Endereçamento 64 bits
Nós e endereçamento
Figura 7 – Hierarquia de endereçamento
Nós e endereçamento
Figura 8 – Endereçamento
• 10 bits: Número do barramento
• 6 bits: Número do nó
• 48 bits: Endereçamento de memória
Transferência de dados
• Modo Assíncrono
• Modo Isócrono
• Frequência de operação: 8 KHz
• Pacotes de diferentes modos podem ser transferidos no mesmo ciclo de clock.
Transferência de dados
Figura 9 – Pacotes assíncronos e isócronos no mesmo ciclo.
Transferência de dadosModo Assíncrono:
• Read request
• Write request
• Read response
• Write response
• Lock request
• Lock response
• No Data
Transferência de dadosModo Isócrono:
• Data block
Camadas do protocolo
• Physical Layer
• Link Layer
• Transaction Layer
• Serial Bus Management Layer
Camadas do protocolo
Figura 10 – Diagrama das camadas do protocolo
Physical Layer
• Sinal elétrico, conector e cabo;
• Responsável por transformar a topologia física em árvore lógica;
• Usa Data Strobe Encoding para gerar o clock;
Physical Layer
• Data Strobe Encoding
Figura 11 – Data Strobe Encoding
Physical Layer
• Reset;
• Tree Identification;
• Self Identification;
Physical Layer – Tree Identification
Figura 12 – Antes da identificação
Figura 13 – Depois da identificação
Physical Layer
Tabela 1 – Alguns controladores de camada física
Link Layer
• Gerenciamento de pacotes;
• Verifica o CRC recebido e calcula e anexa o CRC a ser enviado;
• Transferência isócrona;
• Determina que tipo de transferência está em andamento.
Link Layer – Implementação básica
• Interface com a Physical Layer;
• Geração e verificação de CRC;
• Transmissão e recepção de filas (FIFOs);
• Registradores de interrupção;
• Interface hospedeira (Host interface);
• Pelo menos um canal DMA.
Link Layer – Interface PHY
Tabela 2 – Sinais de interface Link Layer/Physical Layer
Link Layer
Tabela 3 – Controladores de camada de link
Transaction Layer
• Usado apenas para transferências assíncronas;
• 5 tipos de transações:
– Simple Quadlet Read;
– Simple Quadlet Write;
– Variable Lenght Read;
– Variable Lenght Write;
– Lock Transactions;
Transaction Layer – Pacote
Figura 14 – Formato típico de um pacote assíncrono
Transaction Layer – Pacote
Tabela 4 – Tabela com a descrição do pacote
Transaction Layer - Transação
1. Nó 1 envia Read Request;
2. Nó 2 responde com Ack;
3. Enquanto o Nó 1 espera o dado, o barramento é usado por outros nós;
4. Nó 2 envia o pacote com os dados;
5. Nó 1 responde com Ack;
Transaction Layer - Transação
Figura 15 – Típica transação dividida
Transaction LayerTipos de Transação
Figura 16 – Tipos de transação
Serial Bus Management Layer
• Topologia lógica;
• Mapa de velocidade;
• Gerenciamento de energia;
• Otimiza o tráfego do barramento.
Curiosidades• A Apple nunca pretendeu cobrar para o uso do nome FireWire. Podia ser usado por
qualquer parte, desde que assinasse um acordo de que usaria o nome para um produto que era compatível com a versão original do padrão IEEE 1394-1995. Porém Steve Jobs estava convencido de que a Apple devia pedir US$ 1.00 por porta.
Os lucros resultantes da cobrança de US$ 1.00 por porta de FireWire era significativo, particularmente os valores cobrados à Intel. A Intel tinha apostado muito na tecnologia do padrão IEEE 1394 com o novo padrão melhorado 1394a-2000. Em virtude disto, um grupo dentro da Intel usou este argumento para abandonar o apoio à tecnologia FireWire e trazer à luz do dia o novo e melhorado USB 2.0.
Simultaneamente, a Sony e os outros partidários da tecnologia fizeram ver à Apple que todos eles tinham igualmente patentes e, conseqüentemente, também tinham direito a parte dos royalties cobrados por porta FireWire. Apple teria que pagar aproximadamente US$ 15.00 por porta aos outros criadores de tecnologia FireWire
O resultado final foi a criação da 'Autoridade de Licenciamento 1394', um organismo que cobra um valor de US$ 0.25 por sistema de usuário final (como um carro ou computador) a qualquer empresa que utilize a tecnologia 1394.
Curiosidades• A implementação do FireWire custa um pouco mais do que a do USB. Isso levou o
USB a ser padrão para a maioria dos periféricos que não necessitam de um barramento de alta velocidade.
• a grande diferença entre o FireWire e o USB 2.0 é que este último é baseado no host, o que significa que o dispositivo tem que estar conectado a um computador para realizar a comunicação. O FireWire é peer-to-peer (ponto a ponto), o que significa que duas câmeras FireWire podem se comunicar entre si sem passar por um computador.
Bibliografia
• http://www.infowester.com/firewire.php
• http://www.guiadohardware.net/tutoriais/usb-firewire-dvi/firewire-ieee-1394.html
• http://www.apple.com/br/firewire/
• http://www.gta.ufrj.br/grad/04_2/firewire/tecnologia.html
Bibliografia
• http://www.pcworld.com/article/id,14371-page,1/article.html
• http://sss-mag.com/newiss10.html#firewire
• http://www.linux1394.org/
• http://public.rz.fh-wolfenbuettel.de/~bermbach/research/firewire/files/basics.pdf
Bibliografia
• http://www.gta.ufrj.br/grad/04_2/firewire/firewire_usb.html
• http://pt.wikipedia.org/wiki/FireWire