8 CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA A porta paralela, também conhecida por printer port ou Centronics e a porta serial (RS-232) são interfaces bastante comuns que, apesar de estarem praticamente extintas nos computadores pessoais ainda estão presentes em equipamentos para automação comercial (máquinas registradoras, terminais de pontos de venda, impressoras fiscais, etc.) e automação industrial. Além disso, seu estudo é importante como base de entendimento para interfaces mais modernas. Estas interfaces, assim como outras, possuem tipo de endereçamento e método (ou mecanismo) de E/S (entrada/saída) que podem ser categorizados como segue: Tipos de Endereçamento de E/S (entrada e saída): a) E/S mapeada em porta (Espaços de memória e E/S separados) b) E/S mapeada na memória c) Híbrido a) E/S mapeada em porta (Espaços de memória e E/S separados) Utilizam-se instruções específicas na programação para enviar e receber dados para a porta. Exemplos em Assembly: Leitura de dados da porta (entrada): IN registrador, [endereço] Lê o valor contido no endereço da porta para o registrador. Escrita de dados na porta (saída): OUT [endereço], registrador Escreve o valor contido no registrador no endereço da porta. b) E/S mapeada em memória As portas são operadas como posições de memória. Determinados endereços de memória correspondem fisicamente a dispositivos de E/S. Neste caso, as instruções para acessar os dispositivos são as mesmas para acessar a memória principal.
9 c) Híbrido As duas formas de endereçamento anteriores são possíveis. A figura mostra o tipo (a), onde os dispositivos de E/S (portas) estão mapeadas na sua memória específica (área hachurada), completamente independente da memória principal (memória RAM). No tipo (b) há somente um espaço de endereçamento compartilhado entre a memória principal e os dispositivos de E/S. No tipo (c) híbrido, os dois esquemas podem ser usados. Método (ou mecanismo) de E/S (entrada/saída): a) Polling b) Interrupção c) DMA (Direct Memory Access) a) E/S programada (ou polling) Não existe uma controladora dedicada, a CPU realiza a operação de E/S. Entrada: Processador fica em loop lendo registrador de status do dispositivo até que um bit de status DISPONÍVEL seja ligado pelo dispositivo. Quando esse bit é ligado significa que o dispositivo acaba de escrever um novo caractere em um registrador (buffer) de saída de dados. Quando isso ocorre, o programa lê o caractere do registrador de dados do, desligando o bit de status DISPONÍVEL. Saída: Processador fica em loop lendo registrador de status do dispositivo até que um bit de status PRONTO seja ligado pelo dispositivo. Quando esse bit é ligado significa que o dispositivo está pronto para enviar um novo byte. Quando isso ocorre, o programa coloca o byte no registrador (buffer) de entrada de dados, desligando o bit PRONTO.
10 b) E/S por interrupção: Um programa qualquer está em execução na CPU e a seguinte sequencia de eventos ocorre: O dispositivo E/S solicita o serviço de transferência apenas quando este estiver pronto para enviar/receber o(s) dado(s). A interrupção causa um desvio no fluxo do programa via hardware. A interrupção pár a o programa que está rodando e desvia o fluxo para a Rotina de Tratamento da Interrupção Quando finaliza a rotina de tratamento da interrupção, o processador retoma a execução do programa interrompido. Rotina de Tratamento da Interrupção: Função especial que realiza o serviço de transferência daquele dispositivo externo que solicitou a interrupção e verifica a ocorrência de possíveis erros na transferência de dados. Requer hardware especial (Controlador de interrupções), que identifica o dispositivo que gerou a interrupção e define a prioridade das interrupções e quais serão atendidas. Observe que a E/S por interrupção é muito mais eficiente que a E/S programada (ou polling), pois evita que a CPU tenha que ficar em um loop testando bits que indiquem o status do dispositivo. Com a interrupção a CPU pode se dedicar inteiramente ao programa principal, sendo interrompida só quando necessário.
11 c) Acesso direto à memória (DMA - Direct Memory Access) Uma controladora lê dados da memória principal ou escreve dados na memória principal sem que seja necessária intervenção direta do processador. Observações: Libera a CPU da intermediação entre dispositivo periférico e memória. Uma transferência por DMA essencialmente copia um bloco de memória de um dispositivo para outro. A CPU inicia a transferência, mas não executa a transferência. Atenção Como a CPU não participa durante a fase de transferência não é possível realizar nenhum tipo de verificação de erro ou processamento, assim, o DMA é bastante utilizado para a comunicação com dispositivos de armazenamento (CD-ROM, HD, etc) onde grandes blocos de dados são transferidos por vez, sem necessidade de processamento durante a transferência.
12 A Porta paralela Quando a IBM criou seu primeiro PC (Personal Computer) ou Computador Pessoal, a ideia era conectar a essa porta uma impressora, mas na realidade existem vários os periféricos que se utilizam desta para enviar e receber dados para o computador (exemplos: Scanners, Câmeras de vídeo, Unidade de disco removível e outros). Modelos de porta paralela: a) Porta SPP A porta paralela SPP (Standard Parallel Port) pode chegar a uma taxa de transmissão de dados de 150KB/s. Comunica-se com a CPU utilizando linhas de dados de 8 bits, além de outros sinais de status e controle. Esta porta é unidirecional, pode somente enviar dados para o periférico através do barramento de dados de 8 bits. b) Porta EPP A porta avançada EPP (Enhanced Parallel Port) chega a atingir uma taxa de transferência de 2 MB/s. Comunica-se com a CPU utilizando linhas de dados de 8 bits, além de outros sinais de status e controle. Esta porta é bidirecional, pode enviar e receber dados de e para o periférico através do barramento de dados de 8 bits. c) Porta ECP A porta avançada ECP (Enhanced Capabilities Port) tem as mesmas características que a EPP, porém, utiliza DMA (acesso direto à memória), sem a necessidade do uso do processador, para a transferência de dados. Extensão do cabo paralelo A extensão do cabo para interligar um computador a um periférico, é de no máximo 8m. Na prática, utiliza-se um cabo com extensão menor. Quanto maior a extensão do cabo, maior é a interferência na transmissão dos dados. Endereços da porta paralela: O seu computador nomeia as Portas Paralelas, chamando-as de LPT1, LPT2, LPT3 etc, mas, a Porta física padrão de seu computador é a LPT1, e seus endereços são: 378h ( para enviar um byte de dados pela Porta), 378+1h (para receber um valor através da Porta) e, 378+2h (para enviar dados). Às vezes pode está disponível a LPT2, e seus endereços são: 278h, 278+1h e 278+2h, com as mesmas funções dos endereços da porta LPT1 respectivamente.
13 Nome da Porta Endereço de memória Endereço da Porta Descrição LPT1 0000:0408 378 hexadecimal 888 decimal Endereço base LPT2 0000:040A 278 hexadecimal 632 decimal Endereço base Registradores: Utilizando a Porta Paralela conectada a uma impressora, os endereços terão nomes sugestivos, como segue abaixo: Nome Endereços LPT1 Endereços LPT2 Descrição Registro de Dados 378h 278h Envia um byte para a impressora Registro de Status 379h 279h Ler o Status da impressora Registro de Controle 37Ah 27Ah Envia dados de controle para a impressora Conector da porta paralela - DB25 No DB25, um pino está em nível lógico 0 quando a tensão elétrica no mesmo está entre 0 à 0,4v. Um pino se encontra em nível lógico 1 quando a tensão elétrica no mesmo está acima de 3.1 e até 5v. A figura abaixo mostra o conector padrão DB25, com 25 pinos, onde cada pino tem um nome que o identifica: DB25 que fica atrás do Micro Conector Macho do Cabo Paralelo