400 likes | 610 Views
Técnicas de Programação. E/S - Linguagem C. Uso da Porta Paralela. Prof.: José Eustáquio Rangel de Queiroz rangel@dsc.ufcg.edu.br, rangeldequeiroz@gmail.com. Carga Horária: 60 horas. E/S em C - Porta Paralela I. Motivação da Aula
E N D
Técnicas de Programação E/S - Linguagem C Uso da Porta Paralela Prof.:José Eustáquio Rangel de Queiroz rangel@dsc.ufcg.edu.br, rangeldequeiroz@gmail.com Carga Horária:60 horas
E/S em C - Porta Paralela I • Motivação da Aula • Análise e teste de um programa em C para exemplicação do uso da porta paralela • Realização de alterações do programa analisado e testado visando o controle de um arranjo de 8 diodos emissores de luz (LED) • Reflexão sobre possíveis aplicações do processo estudado
E/S em C - Porta Paralela II • Portas de E/S I • Conexão com diferentes dispositivos • Formas básicas de E/S em um PC típico • E/S mapeada; • E/S mapeada na memória; e • Acesso direto à memória (DMA - Direct Memory Access)
E/S em C - Porta Paralela III • Portas de E/S II • E/S mapeada • Usa instruções especiais para transferir dados entre o PC e o mundo exterior • E/S mapeada na memória • Usa locais especiais da memória no espaço de endereços normal da CPU para se comunicar com dispositivos externos
E/S em C - Porta Paralela IV • Portas de E/S III • DMA • Forma especial da E/S mapeada na memória • Leitura e escrita na memória pelos periféricos, sem passarem pela CPU • Cada mecanismo de E/S possui vantagens e desvantagens
E/S em C - Porta Paralela V • Portas de E/S IV • Fato I • E/S em um PC típico é radicalmentediferente da E/S de uma linguagem de programação de alto nível típica • Raramente são encontradas instruções de máquina que se comportem como writeln, printf ou mesmo como as instruções Get e Put da família x86
E/S em C - Porta Paralela VI • Portas de E/S V • Fato II • E/S em um PC típico é radicalmentediferente da E/S de uma linguagem de programação de alto nível típica • A maioria das instruções de E/S se comportam exatamente como a instrução mov dà família x86. • Envio de dados a um dispositivo de saída Movimentação dos dados pela CPU para um endereço no espaço de endereços de E/S ou no espaço de endereços de memória
E/S em C - Porta Paralela VII • Portas de E/S VI • Fato III • E/S em um PC típico é radicalmentediferente da E/S de uma linguagem de programação de alto nível típica • A maioria das instruções de E/S se comportam exatamente como a instrução mov do x86. • Recepção de dados de um dispositivo de entrada Movimentação dos dados pela CPU do endereço (E/S ou memória) do dispositivo para a CPU.
E/S em C - Porta Paralela VIII • Portas de E/S VII • Fato IV • E/S em um PC típico é radicalmentediferente da E/S de uma linguagem de programação de alto nível típica • Há mais estados de espera associados a dispositivos periféricos típicos do que associados à memória • Semelhança das operações de E/S às operações de leitura ou escrita na memória
E/S em C - Porta Paralela IX • Portas de E/S VIII • Porta E/S I • Dispositivo similar a uma célula de memória conectada ao mundo exterior • Uso típico de um latch para implementar a célula de memória • Escrita pela CPU em um endereço associado ao latch Captura e disponibilização dos dados em um conjunto de fios externos, independentes da CPU e do sistema de memória
E/S em C - Porta Paralela X Linha de controle de escrita da CPU W L a t C h Linha de decodificação de endereços A Barramento de dados da CPU D a d O s Dados para o periférico • Portas de E/S IX • Porta E/S II • Escrita
E/S em C - Porta Paralela XI • Portas de E/S X • Em geral, os dispositivos periféricos usam mais de uma porta E/S • Exemplo: Interface de impressora paralela típica • Uso de 3 portas • Porta para Leitura/Escrita • Porta de Entrada • Porta de Saída
E/S em C - Porta Paralela XII • Portas de E/S XI • Exemplo: Interface de impressora paralela típica • Porta para Leitura/Escrita • Porta de dados • Porta de Entrada • Retorno de sinais de controle da impressora • E.g., indicação de offline, de falta de papel, de condição de pronta para aceitar outro caractere
E/S em C - Porta Paralela XIII • Portas de E/S XII • Exemplo: Interface de impressora paralela típica • Porta de Saída • Transmissão de informação de controle para a impressora • E.g., existência de dados disponíveis para impressão
E/S em C - Porta Paralela XIV • Portas de E/S XIII • Relevância para o PC • Uso no processo de conexão do computador com diferentes dispositivos externos (periféricos) • Ausência de portas Inutilidade do computador • Necessidade de diferentes portas
E/S em C - Porta Paralela XV • Portas de E/S XIV • Diversidade de portas Comunicação do PC com diferentes dispositivos • Porta Serial Modems externos • Porta Paralela Impressora • Porta do Teclado Teclado • Porta PSII Mouse ou Teclado
E/S em C - Porta Paralela XVI • Portas de E/S XV • Porta Serial Universal (USB) I • Atuação do computador como hospedeiro • Possibilidade de conexão de até 127 dispositivos ao hospedeiro, diretamente ou via hubs USB • Comprimento de cabos USB • Individuais 5 m • Com hubs 30 m
E/S em C - Porta Paralela XVII • Portas de E/S XVI • Porta Serial Universal (USB) II • Composição de cabos USB • 2 fios de alimentação +5 V e terra (até 500 mA) • 1 par trançado de fios para a transferência dos dados
E/S em C - Porta Paralela XVIII USB Tipo A 1 2 3 4 Plug Invólucro de PVC Encaixe 4 3 2 1 Cabo USB Malha de Cobre (65%) Capa de Alumínio (Dreno) 28 AWG Trançado Receptáculo D- GND Tipo B V+ D+ Tipo A • Portas de E/S XVII • Porta Serial Universal (USB) III http://www.interfacebus.com/Design_Connector_USB.html
E/S em C - Porta Paralela XIX • Portas de E/S XVIII • Porta Serial Universal (USB) IV • Alimentação direta, a partir da porta, de dispositivos de baixo consumo de energia (e.g. mouse) • Alimentação própria de dispositivos de consumo mais alto de potência (e.g. impressora) Exigência mínima de energia diretamente da porta • Alimentação própria dos hubs Possibilidade de fornecimento de alimentação para os dispositivos a eles conectados
E/S em C - Porta Paralela XX • Portas de E/S XIX • Porta Serial Universal (USB) V • Dispositivos USB Hot-swappable • Possibilidade de conexão à porta e desconexão em qualquer instante • Possibilidade de indução à hibernação pelo computador hospedeiro durante entradas no modo de baixo consumo de energia (power-saving)
E/S em C - Porta Paralela XXI • Portas de E/S XX • Porta Serial Universal (USB) VI • Popularidade • Alta velocidade • Boa imunidade a ruídos • Protocolo complexo
E/S em C - Porta Paralela XXII • Portas de E/S XXI • Porta Serial Universal (USB) VII • USB 1.1 • Baixa velocidade 1,5 Mb/s e 3 m • Velocidade máxima 12 Mb/s e 5 m • USB 2.0 • Compatível com USB 1.1 • Alta velocidade 460 Mb/s
E/S em C - Porta Paralela XXIII • Porta Firewire I • Desenvolvida pela Apple Computer, nos anos 90, para substituição do bus SCSI • Interface serial para computadores pessoais e aparelhos digitais de áudio e vídeo que oferece comunicações de alta velocidade e serviços de dados em tempo real • Também conhecido como i.Link, IEEE 1394 ou High Performance Serial Bus/HPSB
E/S em C - Porta Paralela XXIV • Porta Firewire II • Velocidade elevada • Boa imunidade a ruídos • Peer-to-peer
E/S em C - Porta Paralela XXV • Porta Firewire III • IEEE 1394 • Velocidade 100, 200 e 400 Mb/s • Distância 4,5 m • IEEE 1394b • Velocidade 800 Mb/s • Especificação completa 3,2 Gb/s e 100 m (conexão óptica)
E/S em C - Porta Paralela XXVI • Porta Paralela I • Interface de comunicação entre o computador e um periférico • Intenção da IBM ao criar o primeiro computador pessoal (PC) Conexão com uma impressora • Popularidade crescente da porta USB Uso ainda expressivo da porta paralela como interface para impressoras
E/S em C - Porta Paralela XXVII • Porta Paralela II • Refere-se ao fato de conduzir sinais via oito fios separados – um para cada bit de um Byte de dados - e em um único cabo • Além dos fios de sinais, há fios adicionais para aterramento e sinais de controle.
E/S em C - Porta Paralela XXVIII • Porta Paralela III • Velocidade operacional máxima • Porta paralela padrão (SPP) 0,15 Mbps • Portas ECP e EPP Cerca de 3 Mbps • Velocidade Função da velocidade do microprocessador do PC • Transferências de dados via DMA (sem intervenção do processador) Melhoramento do desempenho geral do sistema
E/S em C - Porta Paralela XXIX • Porta Paralela IV • Endereços e Interrupções
E/S em C - Porta Paralela XXX • Porta Paralela V • Utilização atual desta interface por vários periféricos para o envio e a recepção de dados • Impressoras • Scanners • Câmaras digitais • HD Externos • Drives de discos Zip • Adaptadores de redes • Drives de fita
E/S em C - Porta Paralela XXXI • Porta Paralela VI • Velocidade limitada • Distância razoável (8 m) • Simplicidade • Versatilidade • Baixa imunidade a ruídos
E/S em C - Porta Paralela XXXII • Endereços da Porta Paralela • O computador nomeia as portas paralelas como LPT1, LPT2, LPT3, etc • Porta física padrão LPT1 • Registradores
E/S em C - Porta Paralela XXXIII • Conector DB25 I • Localização Parte posterior do computador • Possibilidade de envio e recepção de dados via conexão do cabo paralelo ao computador • Dotado de 25 pinos DB25 (conectado ao computador) Centronics DB36 (conectado à impressora) CABO PARALELO
E/S em C - Porta Paralela XXXIV • Conector DB25 II • Podem ser usados como E/S • Pinos de dados D0-D7 • Pinos de controle STROBE,AUTO FEED,INITeSELECT IN
E/S em C - Porta Paralela XXXV D0 13 D1 25 Pino 2 D2 Pino 3 D3 Pino 4 Pino 5 D4 Pino 6 D5 Pino 7 Pino 8 D6 Pino 9 D7 14 GND (-) 1 Pinos 18 ~ 25 • Conector DB25 II DB25 (conectado ao computador)
E/S em C - Porta Paralela XXXVI • Pontos negativos • Uso limitado à simplicidade • Possibilidade de interferência de sinais espúrios nos sinais de dados • Desempenho insatisfatório a distâncias superiores a cerca de 3 metros
E/S em C - Porta Paralela XXXVII • Cuidados com o Uso da Porta Paralela • Conexão direta com a placa-mãe do computador • Descargas elétricas ou conexões de componentes com polaridades invertidas Danos irreparáveis ao computador
E/S em C - Porta Paralela XXXVIII • Uso da Porta Paralela - Exemplo O que faz o código abaixo? #include <dos.h> #define PORTA 0x378 /* Definicao do endereco de LPT1 */ void main(void){ int i, cont=0, shift; outportb(PORTA,0xFF); delay(2000); do{ shift=0x01; for(i=0;i<8;i++){ outportb(PORTA,shift); delay(1000); shift<<=1;} outportb(PORTA,0x00); cont++;}while(cont<3); }
José Eustáquio Rangel de Queiroz UNIVERSIDADE FEDERAL DE CAMPINA GRANDE CENTRO DE CIÊNCIAS E TECNOLOGIA DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO rangel@dsc.ufcg.edu.br, rangeldequeiroz@gmail.com