Capítulo Interfaces -...

48
Capítulo 14 Interfaces Vamos discutir neste capítulo uma pequena miscelânea de interfaces encontradas nos PCs: paralela, serial, IRDA, teclado e mouse. Porta paralela A porta paralela, também conhecida informalmente como interface paralela ou interface de impressora, está presente no PCs desde o início dos anos 80. A impressora é o dispositivo mais comum neste tipo de interface, mas atualmente podemos conectar outros periféricos, como scanners, câmeras digitais, Zip drives e até gravadores de CDs. Originalmente era uma interface bem simples, capaz de transmitir dados em uma única direção (ou seja, é unidirecional), com taxas entre 100 kB/s e 200 kB/s, dependendo do caso. No início dos anos 90 a porta paralela sofreu melhoramentos, passando a suportar novos modos de operação capazes de transmitir e receber dados (bidirecional), com taxas em torno de 2 MB/s. Todas as portas paralelas modernas obedecem ao padrão IEEE-1284, criado em 1994. Circuito de uma porta paralela A figura 1 mostra o circuito simplificado de uma porta paralela. As portas paralelas no PC podem assumir 3 endereços base: 278h, 378h e 3BCh. No exemplo estamos considerando o endereço 278h. A interface ocupa um grupo de endereços consecudivos de E/S, a começar pelo endereço 278h. O primeiro endereço é a porta de dados. Dados escritos neste endereço ficam travados nos registradores de saída e são enviados aos pinos Data0-Data7 do cabo que vai até a impressora. A porta seguinte (279h) é usada como Status, e serve para checar sinais de controle que a impressora envia para o computador. A outra porta (27Ah) é de saída, e também memoriza os dados

Transcript of Capítulo Interfaces -...

Capítulo 14 Interfaces Vamos discutir neste capítulo uma pequena miscelânea de interfacesencontradas nos PCs: paralela, serial, IRDA, teclado e mouse.

Porta paralelaA porta paralela, também conhecida informalmente como interface paralelaou interface de impressora, está presente no PCs desde o início dos anos 80.A impressora é o dispositivo mais comum neste tipo de interface, masatualmente podemos conectar outros periféricos, como scanners, câmerasdigitais, Zip drives e até gravadores de CDs. Originalmente era uma interfacebem simples, capaz de transmitir dados em uma única direção (ou seja, éunidirecional), com taxas entre 100 kB/s e 200 kB/s, dependendo do caso.

No início dos anos 90 a porta paralela sofreu melhoramentos, passando asuportar novos modos de operação capazes de transmitir e receber dados(bidirecional), com taxas em torno de 2 MB/s. Todas as portas paralelasmodernas obedecem ao padrão IEEE-1284, criado em 1994.

Circuito de uma porta paralela

A figura 1 mostra o circuito simplificado de uma porta paralela. As portasparalelas no PC podem assumir 3 endereços base: 278h, 378h e 3BCh. Noexemplo estamos considerando o endereço 278h. A interface ocupa umgrupo de endereços consecudivos de E/S, a começar pelo endereço 278h. Oprimeiro endereço é a porta de dados. Dados escritos neste endereço ficamtravados nos registradores de saída e são enviados aos pinos Data0-Data7 docabo que vai até a impressora. A porta seguinte (279h) é usada como Status,e serve para checar sinais de controle que a impressora envia para ocomputador. A outra porta (27Ah) é de saída, e também memoriza os dados

14-2 Hardware Total

que nela são escritos, ou seja, são registradores. Esta porta é usada paraenviar comandos para a impressora.

*** 35% ***Figura 14.1

Circuito simplificado de uma porta paralela.

Esta é a porta paralela padrão do PC, usada durante os anos 80, chamada deSPP (Standard Parallel Port). As portas paralelas atuais são mais avançadas ecomplexas, e operam em modos mais rápidos, chamados EPP e ECP. Nessesmodos, a porta de dados é bidirecional e possui um circuito chamado FIFO(first in, first out), que nada mais é que uma espécie de “cache” para osdados que são transmitidos e recebidos. Os demais sinais de controletambém estão presentes, mas suas funções são um pouco diferentes.

A tabela a seguir mostra os sinais da porta paralela do PC. Para conectaruma impressora, é usado um cabo que possui no lado do computador, umconector DB-25, e no lado da impressora, um conector de 36 pinos, padrão“Centronics”. A tabela abaixo mostra os nomes desses sinais e a sua direção.

Sinal DB-25 Centronics 36Strobe 1 1Data Bit 0 2 2Data Bit 1 3 3Data Bit 2 4 4Data Bit 3 5 5Data Bit 4 6 6Data Bit 5 7 7Data Bit 6 8 8Data Bit 7 9 9Acknowledge 10 10Busy 11 11Paper Out 12 12Select 13 13Autofeed 14 14Error 15 32

Capítulo 14 – Interfaces 14-3

Reset 16 31Select 17 36Signal Ground 18 33Signal Ground 19 19,20Signal Ground 20 21,22Signal Ground 21 23,24Signal Ground 22 25,26Signal Ground 23 27Signal Ground 24 28,29Signal Ground 25 30,16Shield Shield Shield+17

Modo SPP

O modo SPP (standard parallel port, ou compatibility mode) foi o utilizadopelas interfaces paralelas e impressoras dos anos 80. As interfaces atuais sãomais versáteis e velozes, mas o modo SPP continua sendo suportado.

A transmissão de dados pela porta paralela envolve três sinais principais:Busy, Strobe e Ack. A operação está ilustrada na figura 2.

Figura 14.2

Transmissão de um byte pela portaparalela.

1) O dado a ser enviado é colocado no registrador de dados, e aparece naslinhas Data0-Data7 da interface.

2) Agurada-se que a linha Busy esteja desativada, ou seja, indicando que aimpressora não está ocupada.

3) Envia-se um pulso de Strobe, ativo em 0, e depois de um curto período(na faixa de alguns microssegundos) retorna-se esta linha ao valor 1.

4) Aguarda-se pelo recebimento do sinal ACK, indicando que o dispositivorecebeu o dado com sucesso.

Portanto os sinais de Strobe (enviado pelo computador), ACK e Busy(recebidos do dispositivo) são os mais importantes envolvidos na operaçãoda porta paralela.

14-4 Hardware Total

A seqüência de eventos envolvidos em uma transmissão como a da figura 2 éo que chamamos de handshake. Trata-se de um protocolo de hardware quedeve ser obedecido pelos dispositivos que seguem um determinado padrão.

Existem entretanto vários outros sinais de inicialização, modo de operação eindicação de erros. A tabela que se segue descreve esses sinais:

Sinal Descrição

Strobe O PC envia para a interface um pulso que indica que o dado que

está no barramento D0-D7 pode ser lido.D0 – D7 Barramento de dados.

ACK O dispositivo informa à interface que o dado foi recebido com

sucesso.

Busy O dispositivo informa que ainda não está pronto para receber o

próximo dado. Paper Out A impressora informa que está sem papel. Select A impressora indica que está selecionada e on-line.

Autofeed Indica à impressora que deve usar um Line Feed

automaticamente após cada fim de linha.Error A impressora indica que ocorreram erros. Reset O PC inicializa a impressora. Select O PC seleciona a impressora.

Vejamos a seguir como é feita a programação de uma transmissão de dadospela porta paralela no modo SPP. Usaremos o assembly de processadoresx86:

PRINT: OUT AL,278h ; Envia para a porta de dados, o caracter a ser impresso PR1: IN AL,279h ; Lê o status da porta

AND AL,80h ; Testa a linha de BUSYJNZ PR1 ; Aguarda até a linha BUSY ficar em 0IN AL,27Ah ; Pega os bits de controle atuaisAND AL,7Eh ; Faz bit de Strobe igual a zeroOUT 27Ah,AL ; Envia bit de Strobe para a impressoraNOPNOPNOP ; Aguarda largura mínima do pulsoOR AL,1 ; Faz novamente bit de Strobe igual a 1OUT 27Ah,AL ; Desativa Strobe

PR2: IN AL,279H ; Lê statusAND AL,0DFh ; Checa linha ACKJNZ PR2 ; Aguarda ACK ficar em 0

PR3: IN AL,279h : Lê novamente statusAND AL,0DFh ; Checa linha ACKJZ PR3 ; Aguarda ACK voltar a 1RET ; FIM

Esta rotina faz com que os sinais da interface paralela executem as açõesmostradas na figura 2. Nos processadores antigos, o tempo de execução erarelativamente grande. Durando em torno de 20s no XT, a taxa detransferência resultante era de cerca de 50 kB/s. No IBM AT, com instruções

Capítulo 14 – Interfaces 14-5

mais rápidas, era obtido um desempenho melhor. Este tempo poderia serreduzido com o uso de processadores mais velozes. O problema é que asinstruções de entrada e saída (IN e OUT) no barramento ISA devem durardois ciclos a 8 MHz, o que equivale a 0,25s. Mesmo fazendo otimizaçõespara reduzir ao mínimo o número de instruções de E/S, a taxa obtidadificilmente fica acima de 150 kB/s.

Modo Nibble

O modo Nibble é uma utilização especial da porta paralela no modo SPPque permite realizar leitura de dados. O barramento de dados da portaparalela padrão é unidirecional, portanto não pode receber dados.Entretanto existem 5 linhas de status que podem ser lidas pelo processador(veja o diagrama da figura 1). No modo Nibble, a entrada ACK continuacom sua utilização normal, e as demais 4 linhas são usadas para leitura dedados. Como 4 bits formam o que chamamos de nibble, este é o nome dadoa este modo. Sendo apenas 4 bits é preciso fazer duas leituras para recebercada byte. Isto torna a leitura no modo Nibble/SPP duas vezes mais lenta quea escrita, que opera com 8 bits. A descrição dos sinais da interface paralela,ao operar no modo Nibble, é mostrada na tabela abaixo.

SinalSPP

NomeNibble

Descrição

ACK PtrClk O dispositivo informa à interface que o nibble está

pronto para ser lido. Busy PtrBusy Data In 3 / 7. Paper Out AckData Req Data In 2 / 6.Select Xflag Data In 1 / 5.Error NdataAvail Data In 0 / 4.

Autofeed HostBusy A interface avisa que está pronta para receber o

nibble, depois indica que terminou a recepção.

Figura 14.3

Leitura de dados na porta paralela pelomodo Nibble.

A figura 3 mostra a recepção de um byte no modo Nibble. Os eventos queocorrem são os seguintes:

1) A interface coloca HostBusy em 0, indicando que está pronta para receberdados.

14-6 Hardware Total

2) O dispositivo coloca nas linhas de status (dados de entrada no modoNibble) os 4 primeiros bits do byte a ser enviado.

3) O dispositivo coloca em 0 a linha PtrClk. Assim a interface é avisada queo primeir nibble está pronto.

4) A interface coloca HostBusy em 1, indicando que recebeu o nibble.

5) O dispositivo coloca PrtClk em 1, reconhecendo que a interface recebeu onibble.

6) As etapas são repetidas para o segundo nibble.

Um ZIP Drive ligado na porta paralela, operando no modo SPP/Nibble,apresenta as seguintes taxas de transferência, medida na prática:

Operação TaxaLeitura 54 kB/sGravação 93 kB/s

Como vemos a leitura é cerca de duas vezes mais lenta que a gravação,devido ao fato de ser feita de 4 em 4 bits, enquanto a gravação é feita emgrupos de 8 bits.

Modo bidirecional

Algumas interfaces paralelas possuem uma porta de dados bidirecional,apesar de operarem com velocidade similar à do modo SPP. Tratam-se deinterfaces SPP comuns, com a simples substituição dos registradoresunidirecionais que formam a porta de dados, por registradores bidirecionais.Graças a este recurso a porta pode receber dados de 8 em 8 bits, fazendocom que a leitura se dê na mesma velocidade da escrita, apesar da taxacontinuar limitada à faixa de 150 kB/s. A tabela a seguir mostra o uso dossinais da interface no modo bidirecional, também chamado de IEEE-1284Byte mode, Extended mode e de PS/2 Mode, já que esta interfacebidirecional foi criada pela IBM para seus computadores PS/2.

SinalSPP

NomeBi-Dir

Descrição

Strobe HostClk O PC envia para a interface um pulso que indica que o

dado foi recebido.D0 – D7 D0 – D7 Barramento de dados, bidirecional.

ACK PtrClk O dispositivo informa à interface que o dado está no

barramento e pode ser lido.

Capítulo 14 – Interfaces 14-7

Busy PtrBusy O dispositivo informa que ainda não está pronto para

enviar o próximo dado.

Autofeed HostBusy A interface indica à impressora que ainda não pode

receber dados.

Error DataAvail O dispositivo indica à interface que o dado está disponível

para leitura.

A figura 4 mostra o recebimento de dados por uma interface paralelaoperando no modo bidirecional.

Figura 14.4

Leitura no modo bidirecional.

1) A interface deve enviar um 0 pela linha HostBusy, indicando que está aptaa receber dados.

2) O dispositivo envia o dado por D0-D7.

3) O dispositivo indica que o dado está pronto para ser lido, enviando um bit0 em PtrClk.

4) A interface coloca a linha HostBusy em 1, indicando que não podereceber um segundo dado agora, e indicando ao dispositivo que o dado estárecebido.

5) O dispositivo desativa a linha PtrClk, indicando o fim da transmissão dobyte.

6) A interface envia um pulso em HostClk, finalizando o ciclo.

Modo EPP

O modo EPP (Enhanced Parallel Port) foi criado no início dos anos 90 porum comitê formado por diversas empresas. Tem a característica de sertotalmente compatível com o modo SPP e operar com taxas de transferênciamais elevadas, chegando a 2 MB/s. A lentidão do modo SPP é resultadoprincipalmente do uso de diversas instruções de E/S (IN, OUT) no

14-8 Hardware Total

barramento ISA. Cada uma dessas instruções dura 0,25s, o que é necessáriopelo padrão ISA. Como são usadas várias dessas instruções para enviar umdado por uma interface SPP, a taxa de transferência não pode ser muitoelevada.

A implementação da interface EPP é baseada no uso de uma porta de dadosinteligente, que gera sozinha todos os sinais de uma porta paralela padrão,implementando todo o handshake em uma única instrução. No modo SPP épreciso utilizar várias instruções IN e OUT que consomem muito tempo pelofato de estarem atreladas ao padrão ISA, por questões de compatibilidade.No modo EPP é usada uma única instrução OUT na porta de dados EPP.Esta instrução pode ser de 8, 16 ou 32 bits, portanto pode comandar o enviode 1, 2 ou 4 bytes. A porta EPP encarrega-se de dividir o dado recebido doprocessador em grupos de 8 bits e transmiti-los em seqüência para odispositivo. Os circuitos ligados a esta porta irão gerar sozinhos o sinal Strobee aguardar pelas respostas do dispositivo, vinda pelos sinais Busy e ACK. Aoser usada uma impressora ou outro dispositivo compatível com o padrãoEPP, é obtida uma taxa de transferência da ordem de 2 MB/s. Ao ligarmosem uma porta paralela EPP, um dispositivo paralelo comum (SPP), ofuncionamente se dará sem problemas, já que os sinais do EPP são idênticosaos do SPP. No caso, um dispositivo lento fará a porta EPP esperar atravésdo sinal Busy, o que resultará em uma temporização típica de dispositivosSPP.

Sinal SPP Sinal EPP Descrição

Strobe Write Indica que a interface está realizando uma operação de escrita, transmitindo

um dado para o dispositivo. Deve permanecer em nível 1 para as operaçõesde leitura.

D0 – D7 D0 – D7 Barramento de dados bidirecional. ACK INTR Usado para o dispositivo gerar uma interrupção.

Busy WAIT Usado para o dispositivo controlar o fluxo de dados vindo da interface, de

forma compatível com a sua velocidade. O ciclo só termina quando esta linhavolta a 0.

Select Select A impressora indica que está selecionada e on-line.

Autofeed DATASTB A interface indica que está realizando uma transferência, que pode ser uma

leitura ou escrita, de acordo com o sinal Write.INIT Reset Com esta linha a interface reseta o dispositivo.

Capítulo 14 – Interfaces 14-9

Figura 14.5

Transmissão no modo EPP.

O potocolo de transmissão no modo EPP é o seguinte (figura 5).

1) É executada uma escrita na porta EPP, através de uma instrução OUT.

2) O sinal Write é enviado ao dispositivo pela interface, juntamente com osdados.

3) O sinal DataStrobe é ativado, indicando para a interface que o dado estápresente.

4) O dispositivo ativa o sinal Wait para indicar que está recebendo o dado.

5) A interface desativa o sinal DataStrobe.

6) Termina o ciclo de escrita.

7) A interface desativa o sinal Wait quando estiver pronta para receber outrodado.

Dispositivos SPP (como impressoras antigas) podem ser ligadas em portasparalelas EPP, graças à compatibilidade entre os sinais. A figura 6 comparaas formas de onda de transferências SPP e EPP. Como podemos ver, asformas de onda têm funções semelhantes, garantindo a compatiblidade total.A chave desta compatibilidade é o sinal Busy (chamado de Wait no modoEPP), que faz com que a interface aguarde quando o dispositivo ligado élento.

14-10 Hardware Total

Figura 14.6

Transferências em SPP e EPP.

Uma porta paralela SPP utiliza 3 endereços de E/S (Data, Status e Control).Já uma porta EPP utiliza 8 endereços consecutivos. As faixas permitidas são278-27F e 378-37F. O endereço 3BC não pode ser usado por uma porta EPP,pois só dispõe de 4 bytes consecutivos: 3BC, 3BD, 3BE e 3BF. O byteseguinte, 3C0, é reservado para a placa de vídeo, portanto não pode serusado por uma porta EPP. O mapa completo de endereços de uma portaEPP é o seguinte:

Endereço DescriçãoBASE+0 Porta de dados no modo SPPBASE+1 Porta de StatusBASE+2 Porta de ControleBASE+3 Porta de endereço – permite endereçar os

dispositivos EPP ligados à porta, bem comoacessar os registradores internos dessesdispositivos.

BASE+4 Dado EPP – bits 0 a 7BASE+5 Dado EPP – bits 8 a 15BASE+6 Dado EPP – bits 16 a 23BASE+7 Dado EPP – bits 24 a 31

Quando o driver de uma interface EPP determina que um dispositivo sópode operar no modo SPP, as operações de dados serão feitas pela porta deendereço BASE+0 (BASE pode ser 278h ou 378h). Quando determina que odispositivo pode operar em modo EPP, faz operações de E/S a partir daporta de endereço BASE+4 (27Ch ou 37Ch). Instruções de E/S de 16 bitsusarão automaticamente as portas de endereços BASE+4 e BASE+5, einstruções de E/S de 32 bits usarão as portas de endereços BASE+4 aBASE+7.

Modo ECP

Capítulo 14 – Interfaces 14-11

O modo ECP (Extended Capability Port) é também suportado pelasinterfaces e dispositivos modernos. Apresenta desempenho sensivelmentemelhor que o EPP. Eis suas principais características:

Portas de dados com bufferes (FIFO) de entrada e saída Operação por DMA ou E/S programada Permite endereçar até 127 dispositivos Oferece taxas de transeferência da ordem de 2 a 4 MB/s Realiza compressão de dados

O FIFO é um buffer de dados (First In, First Out) que serve para que oprocessador não espere pela interface. Ao realizar uma instrução OUT, porexemplo, o dado não vai diretamente para o dispositivo ligado na interface.Este byte é imediatamente colocado em uma fila de bytes, e o processador éliberado. A interface é encarregada de enviar os bytes para o dispositivo,obedecendo a ordem de chegada. O tamanho desta fila pode variar deacordo com o chip Super I/O usado, mas normalmente encontramos versõesde 8, 16 e 32 bytes.

Figura 14.7

FIFOs de entrada e saída em uma portaECP.

Os bytes enviados para a porta de dados da interface ECP vão diretamentepara o final da fila do FIFO de saída. Essa transmissão de dados pode serfeita por DMA ou por E/S programada. No recebimento de dados, estes vãopara o FIFO de saída, podendo então ser lidos pelo processador, tambémpor DMA ou por E/S programada. O fluxo de dados nesses dois FIFOs écomandado por interrupções. Apesar da porta ECP fazer transferências deapenas 8 bits de cada vez (a porta EPP pode operar com 8, 16 e 32 bits), ouso de FIFOs compensa esta limitação.

Os dados que são transmitidos e recebidos por uma interface ECP podemser codificados pelo método RLE (Run Lenght Encoding). Por exemlo, paraenviar para uma impressora, 30 bytes com o valor 00, basta enviar 00,seguindo de um comando indicador de comprimento 30. Assim são enviadosapenas 2 bytes, ao invés de 30.

Os bytes enviados para o dispositivo representam dados e comandos.Existem dois tipos de comandos: RLE e número de dispositivo. No byte de

14-12 Hardware Total

comando, um bit é usado para diferenciar entre RLE e dispositivo. Os 7 bitsseguintes especificam o número RLE (número de vezes que um byte vai serrepetir) ou um identificador de dispositivo, que pode ser de 1 a 127. Usandoo método RLE é obtida uma compressão de dados de até 64:1. Estacompressão extrema é obtida quando é preciso transmitir 128 bytes iguais(situação comum em impressoras e scanners, quando onde as imagens têmmuitos trechos repetitivos), e são transmitidos apenas 2 (valor e número debytes).

A tabela abaixo mostra o uso dos sinais da interface paralela quandooperando no modo ECP.

SinalSPP

Sinal EPP Descrição

Strobe HostClk Usado para indicar transferênicas da interface para o dispositivo.D0 – D7 D0 – D7 Barramento de dados, bidirecional. ACK PeriphClk Usado pelo dispostivo para sincronizar a transferência para a interface.Busy PeriphAck O periférico sincroniza o recebimento de dados. Paper Out AckReverse O periférico reconhece uma requisição de leitura. Select 1284Active A interface indica que está operando em modo IEEE-1284.Autofeed HostAck A interface indica se está transmitindo um comando ou um dado.

Error PeriphRequest O periférico indica que tem dado pronto para transmitir para a

interface. Reset ReverseRequest A interface pede para reverter a direção para entrada de dados.

Select Xflag Usado na identificação dos modos suportados pelo periférico, na fase

de inicialização.

As transferências no modo ECP envolvem dados e comandos. O comando,como explicado, pode ser um número de bytes a ser usado no código RLE,ou então um identificador de dispositivo (1 a 127). O sinal HostAck é usadopara indicar se o valor transmitido é um comando (HostAck=0) ou um dado(HostAck=1). O sinal HostClk funciona como strobe, e serve para a interfaceindicar ao dispositovo que tem um dado disponível para ser lido. A linhaPeriphAck é usada para o dispositivo responder à interface que recebeu odado. Na figura 8, o valor DATA1 é um dado, e DATA2 é um comando,conforme indicado pelo sinal HostAck.

Figura 14.8

Transferência de dados no modo ECP.

Note que a linha PeriphAck é na verdade o sinal Busy, enquanto HostClk éo sinal Strobe. Isso faz com que o handshake do modo ECP seja similar ao

Capítulo 14 – Interfaces 14-13

do modo SPP. Por isso antigos dispositivos SPP podem funcionar no modoECP.

As interfaces ECP utilizam duas faixas de endereços de E/S. O endereçobase pode ser 278h, 378h ou 3BCh. Entretanto, as interfaces paralelas atuaistambém precisam operar no modo EPP, que não permite o endereço, 3BCh,portanto os endereços permitidos ficam restritos às bases 278h e 378h.

Endereço DescriçãoBASE+0 Porta de dados no modo SPPBASE+1 Porta de Status no modo SPPBASE+2 Porta de Controle no modo SPPBASE+400 FIFOBASE+401 Porta de configuração ECPBASE+402 Porta de controle ECP

Quando uma porta ECP utiliza o endereço base 278h, utiliza as faixas 278h-27Ah e 678h-67Ah. Ao usar o endereço base 378h, as faixas são 378h-37Ah e778h-77Ah. Como as portas atuais precisam ser capazes de operar nosmodos EPP e ECP, as faixas ficam ampliadas para:

Base 278h: 278h-27Fh e 678h-67AhBase 378h: 378h-37Fh e 778h-77Ah

O padrão IEEE-1284

Modo SPP, modo bidirecional, modo EPP, modo ECP. Vários padrões parainterfaces e dispositivos resultavam em sérios problemas de compatibilidade.Apeasar dos modos EPP e ECP permitirem o uso de dispositivos SPP, nãoexiste compatibilidade de sinais entre EPP e ECP. Para resolver essesproblemas, o IEEE (Institute of Electrical and Electronic Engineers) criou umcomitê para organizar todos esses “padrões” em um só. A união de todoseles deu origem ao padrão IEEE-1284. Todas as interfaces paralelas usadasnos PCs produzidos nos últimos anos (a partir de 1995) são compatíveis comeste padrão e podem ser utilizadas com qualquer dispositivo paralelo.Durante a inicialização, o driver interroga todos os dispositivos ligados àporta paralela e determina os modos suportados por cada um deles. A partirdaí passa a se comunicar com cada um deles, de acordo com o máximomodo suportado.

No CMOS Setup podemos escolher o modo a ser utilizado pela portaparalela: SPP, EPP ou ECP. Ao escolhermos o modo SPP, o Windows usaráum driver padrão SPP e usará este modo para se comunicar com osdispositivos ligados na porta paralela. Se escolhermos no CMOS Setup os

14-14 Hardware Total

modos EPP ou ECP, o Windows usará o seu driver ECP, que é compatíveltambém com os padrões EPP e SPP.

Ligação em daisy chain

Um dispositivo compatível com o padrão IEEE-1284, ao ser interrogado,fornece uma string de identificação. A partir desta identificação, o driveratribui um número para o dispositivo. Desta forma são enviados comandosespecíficos para cada um dos dispositivos ligados em uma interface, quepodem estar conectados em cascata (daisy chain).

Figura 14.9

Ligação de dispositivos em cascata.

No padrão IEEE-1284, cada interface pode ser conectada a até 5 dispositivos,sendo 4 deles do tipo multiporta e um não multiporta. Os dispositivosmultiporta possuem dois conectores, muitas vezes indicados como “Host” e“Printer”. Na verdade o indicado como Host não é ligado necessariamenteno computador, mas em outro dispositivo que esteja conectado de formamais próxima ao PC. No conector indicado como “Printer” podemos ligardispositivos posteriores da cadeia. A comunicação entre os periféricos e ainterface é feita pelo protocolo CPP (Command Packet Protocol).

O número de dispositivos pode ser ainda maior se utilizarmosmultiplexadores. Cada multiplexador possui uma conexão indicada comoHost, e 4 “saídas”. Cada uma dessas “saídas” se comporta como uma outraporta paralela.

A ligação de vários dispositivos na mesma porta paralela é possível graças aosistema de endereçamento e identificação de dispositivos. Tanto os modosEPP como ECP têm comandos de identificação e endereçamento. Paraselecionar um dispostivo, basta enviar pela porta paralela, um comando deendereço. A partir daí apenas o dispositivo endereçado ficará selecionado, eos demais ficarão inativos, até que seja usado um outro comando deendereçamento. Cada dispositivo multiporta tem circuitso especiais quetransmitem os sinais de controle e status de si próprios (caso estejam

Capítulo 14 – Interfaces 14-15

selecionados) ou simplesmente os retransmitem para o próximo dispositivo,caso não estejam selecionados.

Figura 14.10

Diagrama interno de um dispositivomultiporta.

A figura 10 mostra o diagrama interno de um dispositivo multiporta. Existemdois conectores, um para fazer o encadeamento na direção da interface (HostPort – muitas vezes indicado apenas como Host ou PC), e outro para fazer oencadeamento no sentido oposto (Pass Through Port – muitas vezes indicadocomo Printer). Um circuito detector de endereço (recebe os comandos deendereçamento que chegam da interface) indica se o dispostivo estáselecionado ou não. Quando o dispositivo está selecionado, ativa doismultiplexadores que fazem o seguinte:

a) Enviam seus próprios sinais de status na direção do Hostb) Desativam o envio de sinais de controle para os dispositivos seguintes dacadeia.

Quando um dispostivo não está selecionado, limita-se a apenas passar adiante os sinais de status e controle, ignorando os comandos recebidos. Oúltimo elemento da cadeia pode ser um dispositivo não multiporta, já quenão precisará passar comandos e status adiante. Este último dispositivoreceberá os controles e dados que são passados adiante pelos demaisdispositivos. Seus sinais de status também serão passados adiante na direçãodo host. Portanto para todos os efeitos, quando um dispositivo estáselecionado, tudo se passa como se fosse o único dispositivo fisicamenteligado à interface. Note que para esse esquema funcionar é preciso que todosos dispositivos estejam ligados.

14-16 Hardware Total

Cabos IEEE-1284 e conectores

O uso de um cabo inadequado pode trazer grandes dores de cabeça aousuário, pelos diversos problemas que a impressora pode apresentar. Os trêstipos de cabo que encontramos no comércio são:

Cabo paralelo comum Cabo paralelo “bidirecional” Cabo IEEE 1284

O cabo paralelo comum, o mais simples e barato de todos, é umasimplificação daquele utilizado pela IBM nos seus primeiros PCs. Possui emuma extremidade um conector DB-25 macho e na outra um conectorCentronics de 36 pinos. Dos 25 fios utilizados, 17 são sinais digitais usados nacomunicação entre a impressora e o PC, e 8 deles são fios de terra. O cabooriginal da IBM possuía 8 fios de terra independentes. Este tipo de ligaçãoexige o uso de um cabo de 26 fios (o número de fios é sempre par nos cabosproduzidos pela indústria). Muitos fabricantes, visando tornar o cabo maisbarato, passaram a utilizar cabos mais finos, com apenas 18 fios. Desses, 17são os sinais digitais e um deles é o terra. A ligação de todos os terras usandoum único fio não traz problema para impressoras comuns, mas pode serproblemático para as impressoras mais sofisticadas.

O cabo paralelo conhecido como “bidirecional” nada mais é que um caboidêntico ao original usado nos primeiros PCs, com 8 terras independentes.Cada um desses terras é trançado com um sinal digital correspondente. Estetrançamento reduz a distorção dos sinais digitais ao longo do cabo,permitindo assim a transmissão de dados em velocidades mais elevadas.Ainda assim este não é o cabo de melhor qualidade.

O mais avançado cabo de impressora paralelo é o chamado IEEE 1284. Estecabo tem características elétricas que permitem a transmissão de dados emaltas velocidades. Além de alguns sinais serem trançados com fios de terraindependentes, o cabo possui uma blindagem dupla que o torna ainda maisimune a distorções e interferências.

Capítulo 14 – Interfaces 14-17

Figura 14.11

Seção de um cabo IEEE 1284.

Na figura 11 vemos uma seção deste cabo. Note que os 8 bits de dados ficamdispostos em uma camada interna, separada da camada externa por umablindagem. Desta forma os bits de dados não sofrem interferência elétricaprovocada pelos demais sinais digitais do cabo. Cada um desses sinais porsua vez são trançados com fios de terra, o que reduz a interferência mútuaentre eles. Este tipo de cabo é o indicado para comunicação nos modos EPPe ECP.

Cabos paralelos comuns (um só fio terra) e cabos “bidirecionais” (8 terrasindependentes) podem transferir dados nos modos EPP e ECP, porém combaixa confiabilidade. A distorção e a interferência que ocorre nos seus sinaisdigitais tem grande chance de causar erros que resultam no maufuncionamento da impressora e de outros dispositivos paralelos.

Realmente o melhor tipo de cabo para as impressoras modernas é o IEEE1284. Muitas impressoras e dispositivos paralelos já são fornecidoa com estecabo, mas em outros casos o usuário precisa comprá-lo separadamente. Oproblema é que a maioria das lojas só oferece o cabo paralelo comum e obidirecional. Uma solução para o problema é tentar utilizar o cabobidirecional, que tem chances de suportar transmissões nos modos EPP eECP. Caso esses modos apresentem problemas podemos reconfigurar a portaparalela para operar no modo SPP. A taxa de transmissão será reduzida, emesmo os cabos mais simples poderão funcionar. Resumindo então:

Use o cabo que acompanha a sua impressora, provavelmente IEEE 1284, econfigure a sua porta paralela para o modo ECP.

14-18 Hardware Total

Se sua impressora não é acompanhada de cabo próprio, compre um caboIEEE 1284 e configure sua porta paralela para o modo ECP.

Se você não encontrar um cabo IEEE 1284, compre um cabo paralelo“bidirecional”, encontrado com facilidade nas revendas de informática.Deixe sua porta paralela configurada no modo ECP. Se a impressoraapresentar problemas com o cabo bidirecional, reconfigure a sua portaparalela para operar no modo SPP. A impressora passará a utilizar estemodo, e o cabo paralelo bidirecional (e também o comum) suportará a taxade transmissão.

*** 75%***Figura14.12

Conectores dasinterfaces edispositivosparalelos.

A figura 12 mostra os três tipos de conectores usados nas interfaces edispostivos paralelos. Os indicados como “receptáculos” são os conectoresexistentes nos dispositivos e na interface, e os indicados como “plugs” são osexistentes nos cabos. São três os conectores:

Tipo A – Conector DB-25 fêmea, encontrado nas interfaces dos PCsTipo B – Conector de 36 pinos, padrão Centronics, o mais usado nosdispositivos paralelosTipo C – Conector miniatura de 36 pinos (mini-Centronics), recomendadopara projetos novos.

O cabo tipo AB (DB-25 / Centronics-36) é o mais comum, mas além deleexistem ainda modelos AA, AC, BC e CC. Os cabos são produzidos com 4medidas padronizadas: 1,80, 3, 6 e 9 metros.

Capítulo 14 – Interfaces 14-19

*** 35% ***Figura 14.13

Conectores tipos A, B e C.

Configurando a porta paralela

As portas paralelas dos PCs podem ser configuradas no CMOS Setup paraoperar de quatro modos diferentes:

SPP - Standard Parallel Port (Nibble ou Compatible)EPP - Enhanced Parallel PortECP - Extended Capabilities PortBidirecional

A figura 14 mostra o Gerenciador de Dispositivos, no qual vemos na seçãoPortas, o item Porta de impressora (LPT1). A outra configuração possível éPorta de impressora ECP. Note que uma porta ECP pode operar nos modosECP, EPP, Bidirecional ou SPP, dependendo do modelo de impressora e dosdemais dispositivos paralelos instalados. O driver da impressora identifica osmodos suportados e configura a porta ECP para o modo de transferênciaadequado.

Figura 14.14

A porta de impressora declarada no Gerenciador deDispositivos.

Digamos que nossa intenção seja mudar a configuração da porta paralela.Podemos configurá-la como ECP para obter o melhor desempenho possível(é claro, se o cabo permitir e a impressora for capaz de operar neste modo),ou como SPP para resolver problemas de comunicação, incompatibilidade e

14-20 Hardware Total

falhas gerais na impressão. A primeira coisa a fazer para alterar o modo defuncionamento da impressora é selecioná-la no Gerenciador de Dispositivos(figura 14) e usar o botão Remover. Devemos agora reiniciar o computadorpara ter acesso ao CMOS Setup, onde vamos alterar o modo da porta para-lela.

Figura 14.15

Indicando no CMOS Setup o modo defuncionamento da porta paralela.

No CMOS Setup encontramos uma seção chamada Integrated Peripherals,ou Peripheral Configuration, ou similar. Encontrarmos então o item ParallelPort Mode. As opções apresentadas são SPP (ou Standard, ou Nibble ouCompatible), Bidirectional, EPP e ECP. A figura 15 mostra um exemplo deCMOS Setup no qual fazemos esta configuração.

Da próxima vez que o Windows for reiniciado, a porta paralela serádetectada, já no modo programado pelo CMOS Setup. Se esta detecção nãoocorrer, podemos fazer a instalação manualmente pelo comando AdicionarNovo Hardware do Painel de Controle. Entrará em ação o Assistente paraadicionar novo hardware. É fácil definir manualmente a porta de impressora.Marcamos no quadro do assistente a opção Não e clicamos em Avançar. Aseguir será apresentada uma lista de tipos de hardware. Marcamos o itemPortas (COM e LPT).

Capítulo 14 – Interfaces 14-21

Figura 14.16

Indicando o tipo de porta paralela.

Será apresentado então o quadro da figura 16. Selecionamos na lista daesquerda o item Tipos de porta padrão. Na lista da direita selecionamos:

Porta de impressora: para operação no modo SPPPorta de impressora ECP: para operação no modo ECP

Depois disso a porta de impressora passará a constar no Gerenciador deDispositivos da forma como programamos. Podemos agora fazer a instalaçãoda impressora e de outros dispositivos paralelos.

Instalando uma segunda porta paralela

Muitas vezes pode ser conveniente instalar uma segunda porta paralela emum PC, que ficaria então com duas portas, LPT1 e LPT2. No caso dos PCsmodernos, a porta paralela original é aquela localizada na placa mãe. Asegunda porta paralela está localizada em uma placa de expansão, em geraluma do tipo IDEPLUS (figura 17). Você pode fazer este tipo de instalaçãocasao tenha uma placa IDEPLUS disponível, bem como um slot apropriado,livre na placa de CPU.

14-22 Hardware Total

Figura 14.17

Uma placa IDEPLUS ISA.

A placa IDEPLUS foi muito utilizada nos PCs entre 1991 e 1994. Atualmentecaiu em desuso, mas ainda é a forma mais simples para adicionar novasportas seriais e paralelas a um PC. Mesmo tendo caído em desuso, aindapodemos encontrar placas IDEPLUS à venda no mercado de peças desegunda mão e em sucatas.

Uma placa IDEPLUS possui duas interfaces seriais, uma interface paralela,uma interface para drives de disquetes, uma interface IDE e uma interfacepara joystick. Como queremos apenas adicionar uma segunda porta paralelaao PC, devemos deixar todas as interfaces da placa IDEPLUS desabilitadas,exceto a porta paralela. Esta desabilitação é feita através dos seus jumpers, eseguindo as instruções do seu manual.

Como no caso de placas antigas, normalmente não possuímos o manual,termos que descobrir experimentalmente qual é a função de cada jumper.Para fazer este jogo de adivinhação, desabilite inicialmente as interfacesserial, paralela, de drives e IDE, existentes na placa de CPU. Ligue ocomputador usando a placa IDEPLUS, mas não conecte dispositivos IDE,ligue apenas o drive de disquetes. A tela de abertura após o boot indicará aconfiguração do computador, mostrando as interfaces seriais, paralela, dedisquetes e IDE, existentes no computador. Atue sobre os jumpers da placaIDEPLUS, tentando desabilitar as interfaces. Na tela de configuraçãomostrada no início do boot podemos verificar quando as interfaces seriais sãoremovidas. Ao remover a interface de drive de disquetes, o boot não serámais feito, anote então o jumper relativo a esta interface, para desabilitá-lapor último. Fazendo um boot com um disquete e usando um programa de

Capítulo 14 – Interfaces 14-23

diagnóstico (use por exemplo, o IOVIEW), podemos monitorar a existênciade interfaces nos endereços:

200-207: Interface de joystick1F0-1F7: Interface IDE primária170-177: Interface IDE secundária3F8-3FF, 2F8-2FF, 3E8-3EF, 2E8-2EF: Usados pelas interfaces seriais278-27F, 378-37F, 3BC-3BF: Usados pela porta paralela

Quando todas essas áreas forem indicadas com “FF” no mapa de E/S,significa que as portas estão desabilitadas. Procure também identificar quaissão os jumpers que atuam sobre o endereço da porta paralela. Habilite agoraa porta paralela da placa IDEPLUS e desabilite a interface de drives. A partirdaí a placa IDEPLUS terá apenas a porta paralela habilitada. Pode agorahabilitar novamente as interfaces existentes na placa de CPU e realizar umboot normal no PC.

É preciso também configurar as portas paralelas, tanto da placa IDEPLUScomo da placa de CPU, para que não entrem em conflito. Os endereços queuma porta paralela podem utilizar são 278, 378 e 3BC. Em geral podemosescolher entre um deles através do CMOS Setup, definindo então oendereço da porta paralela existente na placa de CPU. Na placa IDEPLUS, aescolha é feita por jumpers. Em geral as configurações possíveis são:

Endereço 378, IRQ7Endereço 278, IRQ5Endereço 3BC, IRQ7

Podemos por exemplo configurar a porta paralela da placa de CPU como378/IRQ7 e a da placa IDEPLUS como 278/IRQ5. Note que a numeraçãoLPT1/LPT2/LPT3 não possui uma correspondência fixa entre os endereçosdas portas paralelas. Se um PC possui apenas uma porta paralela, esta será aLPT1, não importa o seu endereço. Se um PC possui duas ou mais portasparalelas, a numeração é dada a partir do maior endereço. Por exemplo, seuma porta tem endereço 378 e outra tem o endereço 278, seus nomes serãorespectivamente LPT1 e LPT2. Se a porta 378 for desabilitada, a porta deendereço 278 passará a ser LPT1.

Uma vez tendo ambas as portas paralelas configuradas, ambas serãoindicadas no quadro de configuração exibido durante o boot (figura 18).Observe a indicação:

14-24 Hardware Total

Parallel Port (s) : 378, 278Figura 14.18

Este PC está com 2 portas paralelasinstaladas.

Depois de declarar a nova porta paralela no CMOS Setup, precisamos fazera mesma coisa no Windows. Para isto usamos o comando Adicionar NovoHardware no Painel de Controle. Usamos a configuração manual, emarcamos na lista de dispositivos de hardware, “Portas COM/LPT”. Na listade marcas e modelos marcamos as opções “Tipos de porta padrão” e “Portade impressora”. Note que não podemos usar a opção ECP, já que essasantigas placas IDEPLUS são restritas ao modo SPP.

Terminada a instalação, a segunda porta paralela passará a constar noGerenciador de Dispositivos (figura 19).

Figura 14.19

A nova porta paralela já consta no Gerenciador deDispositivos.

Capítulo 14 – Interfaces 14-25

Será preciso também clicar sobre a nova porta paralela no Gerenciador deDispositivos, usar a guia Recursos e definir seus endereços de E/S e IRQ.

Curiosa é a utilização de interrupções pelas portas paralelas sob o Windows.Uma porta paralela padrão (SPP), quando conectada a uma impressora,pode operar sem usar interrupções. Isso é vantajoso, já que assim teremosmais uma IRQ livre para ser usada em outras instalações.

Figura 14.20

Configurando a porta paralela SPP para operar semIRQ.

Para fazer a nova porta paralela operar sem usar IRQ, aplique-lhe um cliqueduplo no Gerenciador de Dispostivos e selecione a guia Recursos (figura 20).Desmarque o quadro “Usar configurações automáticas” e no campo “Configbaseada em”, escolha uma configuração básica que não use IRQ, comomostra a figura.

Porta serialOs PCs possuem portas seriais assíncronas (UARTs) no padrão RS-232. Noteque este é um tipo particular de porta serial. Existem vários outros tipos deportas seriais, portanto falemos rapidamente sobre eles.

Os vários padrões seriais

Ao contrário da transmissão paralela, que transmite um grupo de bitssimultaneamente, cada um por seu próprio fio, a transmissão serial utiliza umúnico fio de dados para transmitir um bit de cada vez. Podemos ter

14-26 Hardware Total

transmissões síncronas e assíncronas. Nas transmissões síncronas, o último bitde um dado é imediatamente seguido pelo primeiro bit do dado posterior. Épreciso que o transmissor e o receptor estejam perfeitamente sincronizadospara operarem no modo síncrono. Entre blocos de dados consecutivos, sãorealizados procedimentos de sincronização. Na transmissão síncrona tambémpodem ser utilizados sinais de clock, a melhor forma de sincronizar otransmissor com o receptor.

A transmissão assíncrona não requer procedimentos especiais parasincronização. A cada dado transmitido (normalmente cada dado é umbyte), são adicionados bits de sincronização e deteção de erros, chamados destart bit, paridade (opcional) e stop bit.

O chip capaz de transmitir e receber dados seriais no modo síncrono échamado USART (Universal Synchronous-Assyncrhonous Receiver andTransmitter). Este chip receber um dado do processador (até 8 bits) e o enviana forma serial. Também recebe dados seriais e os monta em grupos de até8 bits, para então enviá-los ao processador. Uma USART também é capaz deoperar no modo assíncrono. Quando o PC foi lançado, a USART maisutilizada era a 8251, fabricada pela Intel.

O chip capaz de transmitir e receber dados no formato assíncrono échamado de UART (Universal Assyncrhonous Receiver and Transmitter).Realiza a mesma função da USART, porém não opera no modo síncrono.No tempo em que o PC foi criado, foi escohida a UART INS8250, produzidapela National Semiconductor.

Muitas vezes é feita confusão entre os termos “interface serial” e “interfaceRS-232”. O padrão RS-232 especifica um conector de 25 pinos (DB-25) paraconexão com dispositivos seriais. Também especifica uma versão reduzida,com 9 pinos. São os conectores DB-9 e DB-25 usados pelas portas seriais dosPCs. O padrão RS-232 também especifica o uso de níveis de tensão pararepresentar os valores 0 e 1. Tipicamente são usados os valores de +12 e –12volts para representar os bits 0 e 1, entretanto tais valores não sãoobrigatórios. Podem ser usados valores em uma ampla faixa, entre 6 e 15volts. Existem outros padrões para o nível físico de uma interface serial,como o RS-422 e o RS-485, que especificam velocidades e tensões diferentes,entretanto não são usados nas interfaces seriais dos PCs.

Portanto as interfaces seriais utilizadas nos PCs são restritas a uma pequenafração do universo das portas seriais. São interfaces do tipo UART (ou seja,

Capítulo 14 – Interfaces 14-27

operam apenas no modo assíncrono) e com meio físico seguindo o padrãoRS-232.

Formato dos dados transmitidos

Uma UART transmite dados de acordo com o diagrama mostrado na figura21. Quando está em repouso, a UART fornece uma tensão correspondenteao bit 1. A seguir é enviado um bit 0, o que indica ao receptor que seráenviado um dado. Portanto a transição de 1 para 0 indica o início datransmissão. Este primeiro bit 0, que é sempre enviado no início datransmissão de cada dado, é chamado de start bit. A segiur o dado étransmitido, um bit de cada vez. Podem ser transmitidos 5, 6, 7 ou 8 bits,dependendo de como a UART está programada. Terminados os bits dedados, é enviado um bit opcional de paridade, e por último, um bitfinalizador chamado de stop bit, que tem sempre o valor 1. Imediatamenteapós o stop bit, pode ser enviado o start bit do dado seguinte.

Figura 14.21

Transmissão em uma UART.

Na figura 21 são indicados os bits que estão sendo transmitidos, começandocom o Start bit. A seguir são enviados os bits 1, 0, 1, 1, 0, 0, 1 e 0, seguindosdos bits 1 de paridade e 1 de stop bit. Os bits de dados são sempretransmitidos na ondem inversa, começando pelo menos significativo eterminando com o mais significativo, portanto o dado transmitido na figura21 é 01001101, o mesmo que 4D em hexadecimal.

O bit de paridade é opcional, e quando utilizado pode formar paridade parou ímpar. No exemplo da figura 21, está sendo utilizada a paridade ímpar,ou seja, o bit de paridade é determinado de forma que o número total debits, considerando dado e paridade, seja sempre ímpar. Após o bit deparidade temos o stop bit, que é sempre 1, e depois do qual já pode seriniciada a transmissão do próximo dado.

As interfaces seriais são capazes de operar com vários formatos detransmissão. O número de bits pode ser 5, 6, 7 ou 8. A paridade pode serpar, ímpar ou nenhuma (O, E ou N). O número de stop bits pode ser 1, 1.5ou 2. Esses três parâmetros definem o formato da transmissão, por exemplo,

14-28 Hardware Total

7N2, 8E2, 8E1, etc. O primeiro valor é o número de bits, o segundo indica aparidade, e o terceiro indica o número de stop bits. Para que a comunicaçãoseja feita de forma correta, ambos os dispositivos devem utilizar o mesmopadrão.

Os chips 1488 e 1489

Os dados transmitidos pela UART assumem valores digitais representadospor tensões no padrão TTL, com o bit 0 representado por uma tensão baixa,em torno de 0,2 volts, e o bit 1 representado por uma tensão mais elevada,na faixa de 2,4 a 3,5 volts. Esses níveis de tensão não são apropriados paratrafegarem ao longo de um cabo, devido à alta sensibilidade a ruídos. Osdados enviados pela UART passam antes por um circuito chamado linedriver. A função deste circuito é transformar os bits 0 e 1 em tensões na faixade +12 volts e –12 volts (lembre-se que podem ser usados outros valores,entre 6 e 15 volts). Os line drivers mais utilizados são os chips 1488 ou 75188,ou equivalentes. Da mesma forma, os dados recebidos através do cabopassam por um circuito chamado de line receiver, que converte as tensõesde +12 e –12 volts do padrão RS-232 para níveis de tensão TTL, compatíveiscom os utilizados pela UART. Os line receivers mais utilizados são os chips1489, 75189 ou equivalentes.

A figura 42 mostra formas de onda reais, medidas com um osciloscópiodigital. No gráfico superior temos a tensão na linha, usando tensões de +10 e–10 volts. No gráfico inferior temos os níveis TTL correspondentes, medidosnos pinos da UART, onde as tensões variam entre 0 e 3 volts. Note nestegráfico que o bit 0 no gráfico inferior resulta na tensão de +10 volts nográfico superior, e o bit 1 no gráfico inferior corresponde à tensão de –10volts no gráfico superior. Os pontos indicados como “1” e “2” à esquerda dográfico são os níveis de terra (0 volts).

Capítulo 14 – Interfaces 14-29

Figura 14.22

Tensões medidas em uma UART e nalinha.

As figuras 23 e 24 mostram os circuitos dos chips 1488 e 1489. Cada umdeles possui 4 portas. As figuras mostram a constituição interna de cadaporta. Toda interface serial é acompanhada desses chips ou equivalentes.Inclusive quando ocorre algum problema elétrico, são esses os chips que“queimam”, protegendo assim a UART, que é muito mais cara. Nas placasantigas o 1488 e o 1489 eram instalados em soquetes, o que tornava fácil asua substituição em caso de queima. Atualmente esses chips são soldadosdiretamente nas placas, e são do tipo SMD de reduzido tamanho, o quedificulta muito e chega a inviabilizar uma eventual substituição.

Figura 14.23

Line driver 1488.

14-30 Hardware Total

Figura 14.24

Line Receiver 1489.

As UARTs 8250, 16450 e 16550

Os primeiros PCs utilizavam para suas interfaces seriais, a UART 8250, daNational. Essas UARTs ficavam em placas de expansão ISA de 8 bits. Noinício eram placas contendo apenas duas interfaces seriais. Depois surgiramas placas Multi I/O, contendo duas interfaces seriais, uma interface paralelaum relógio permanente (essa placas eram usadas no XT), interface paradrives de disquetes e em alguns casos, uma expansão de memória. Já na erados ATs, encontrávamos as placas conhecidas informalmente como IOSA,nas quais existiam duas portas seriais, uma porta paralela e uma interface dejogos. Mais tarde as portas paralelas eram encontradas na placa IDEPLUS, efinalmente em meados dos anos 90, passaram a ser integradas na placa deCPU.

Ao mesmo tempo em que as UARTs eram produzidas em diferentes placas,sofreram uma evolução. No início eram usados os chips 8250, que deramlugar ao 16450 e finalmente ao 16550. Atualmente as UARTs fazem parte dochip conhecido como Super I/O, mas seus circuitos são inteiramentecompatíveis com o 16550.

O 8250 podia operar com uma velocidade máxima de 19.200 bits porsegundo e era adequado ao barramento do XT, que operava com cerca de 5MHz. O 16450 era um chip mais veloz. Além de ser compatível com obarramento do AT, de 8 MHz, atigia velocidades mais elevadas, chegando a38.400 bits por segundo. O chip 16550 é ainda mais avançado. Possuicircuitos FIFO de entrada e saída, cada um deles com 16 bytes. Graças aoFIFO, o processador ficava menos sobrecarregado nas comunicações seriais,já que a cada interrupção podia enviar ou receber vários bytes. Atingevelocidades de até 115.200 bits por segundo. Essas UARTs foram produzidascom encapsulamento DIP de 40 pinos, mas deram lugar a outrosencapsulamentos mais compactos, como o PLCC e o SQFP.

Capítulo 14 – Interfaces 14-31

Figura 14.25

UARTs usadas nos PCs.

A tabela que se segue resume as principais características dessas três UARTs:

UART Taxa FIFO8250 19.200 bps -16450 38.400 bps -16550 115.200 bps 16 bytes

Outras UARTs mais avançadas foram criadas, como a 16650, 16750 e 16850.Essas UARTs são compatíveis com a 16550, têm FIFOs maiores (porexemplo, a 16750 tem FIFOs de 64 bytes) e suportam taxas de transmissãomais elevadas, chegando em torno de 1 Mbit/s. Os chips Super I/Omodernos também possuem UARTs compatíveis com a 16550, mas muitospossuem FIFOs maiores e suportam taxas de transmissão mais elevadas.Uma outra UART comum é a 16552. No seu interior existem duas UARTscompatíveis com a 16550.

Baud Rate

Esta é uma característica muito importante das comunicações seriais. Muitosa confundem com taxa de transferência, não é a mesma coisa. O baud rate éuma medida com dimensão de bits/segundo, mas não representa exatamenteo número de bits de dados transmistidos a cada segundo pela interface. Suaunidade é o baud, e seu valor é o inverso do período de transmissão de 1bit. Por exemplo, se tomarmos um baud rate de 4.800 bauds, significa quecada bit é transmitido em um tempo de:

1 s / 4800 = 0,00020833 s

Ou seja, 208,33s.

É errado obter a taxa de transferência de uma porta serial fazendo a divisãodo baud rate por 8. Por exemplo, 4800 bauds não é o mesmo que 4800 bitspor segundo, nem é o mesmo que 600 bytes por segundo.

14-32 Hardware Total

Figura 14.26

Tempo total de transmissão de um byte.

Considere que na figura 26 o baud rate é 4800 bauds. A largura de cada bité portanto 208,33s. Nesta comunicação, cada byte está utilizando ao todo11 bits, sendo 8 de dados, 1 start bit, 1 bit de paridade e 1 stop bit. O tempototal gasto com cada byte é de 11 x 208,33s, ou seja, 2.281,66s. Dividindo1 segundo por este valor, chegamos ao número de bytes transmitidos porsegundo, ou seja, 436 bytes por segundo. Como vemos, é errado dividir obaud rate por 8 para obter a taxa de transferência. Um método aceitável édividir o baud rate pelo número total de bits. Temos portanto 4800/11 = 436.Se a comunicação for feita com 8 bits, sem paridade e 1 stop bit, termos umtotal de 10 bits, portanto a taxa de transferência será de 4800 / 10 = 480 bytespor segundo.

É errado usar a unidade bps (bits por segundo) nas comunicações seriais,tanto é que os fabricantes das UARTs sempre especificam as velocidades embauds. Ocorre que o público informata já está acostumado a usar de formaerrada, o termo bps ao invés de baud. O próprio Windows utiliza a unidadebps ao invés do baud nas configurações das portas serial. Este erro éportanto tolerado no meio técnico, da mesma forma como muitos fazemconfusão entre 1 MB e 1 milhão de bytes.

O baud rate de uma UART é gerado a partir da freqüência de um cristalexterno e de um divisor interno. O divisor pode ser programado comqualquer número inteiro, de 1 até o seu valor máximo. Sendo assim épossível operar com um grande número de valores para o baud rate.Entretanto não são usados na prática, valores quaisquer. Dispositivos seriaisoperam apenas com alguns valores padronizados de baud rate, como:

50 2400 * 3360075 4800 * 38400 *110 * 7200 57600 *150 9600 * 115200 *300 * 14400 230400 *600 19200 * 460800 *1200 * 28800 921600 *

Capítulo 14 – Interfaces 14-33

OBS: Os valores indicados com (*) são os empregados pelo Windows.

Cabos e conectores

Interfaces seriais utilizam conectores de 9 ou 25 pinos (DB-9 e DB-25). Nocomputador, o conector é do tipo macho, e no cabo são usados conectoresfêmea. Tome cuidado pois existem cabos seriais de vários tipos. Os cabos deextensão, nos quais cada pino de um conector é ligado ao pinocorrespondente no outro conector, são os mais usados. Esses cabos podemser do tipo fêmea-macho ou fêmea-fêmea. Seu comprimento máximopermitido, de acordo com o padrão RS-232, é de 15 a 20 metros.

Figura 14.27

Cabo serial e conectores.

Existem cabos que possuem conexões internas próprias para fazer ligaçãodireta entre dois micros (null modem), cabos conversores de 9 para 25 pinos,e assim por diante. Normalmente esses cabos são curtos, porém o padrãoRS-232 permite cabos mais longos, chegando até 20 metros. Você encontraráportanto os seguintes tipos de cabos seriais:

Direto (straight) Null modem Laplink Cabos para impressoras seriais

Cada um desses cabos é encontrado nas versões DB9-DB9, DB9-DB25 eDB25-DB25. A grande variedade de tipos de cabos seriais é conseqüência deexistirem inúmeras formas de conectar dispositivos através de interfaces

14-34 Hardware Total

seriais. O tipo padrão de cabo é o direto, no qual existem ligações diretaspino a pino (ex: 1-1, 2-2, 3-3, 4-4, etc.). Esses cabos podem ser usados comoextensões ou então para ligar a interface serial a um modem externo. Oscabos chamados de null modem servem para ligar dois computadores pelasinterfaces seriais, sem utilizar modems. O funcionamento desses cabosconsiste em fazer cada um dos computadores a ele ligados, “pensar” queexiste realmente um modem ligado, o que pode ser feito de várias formas.Por exemplo, os sinais RTS (Request to Send – requisição para transmitir) eCTS (Clear to Send, ou permitido transmitir) são usados como um protocolode hardware para controlar o fluxo de dados entre a interface e um modemexterno. Existem várias formas de fazer a interface “pensar” que existe ummodem pronto para receber. Uma delas é ligar o pino RTS no pino CTS dainterface receptora, e vice-versa. Outra forma é ligar entre si os sinais CTS eRTS em ambos os conectores do cabo. A figura 28 mostra os diagramas dedois cabos “null modem” com conectores DB9.

Figura 14.28

Dois tipos de cabos “null modem” usandoconectores DB9.

Os pinos RTS e CTS formam um protocolo de hardware que é executadoautomaticamente pelas UARTs, sem intervenção do processador. Antes detransmitir um dado, a UART checa por conta própria, a linha CTS, e sóenvia o dado quando esta linha está ativa. Já a linha RTS estará ativa quandouma UART estiver pronta para receber dados. O mesmo dipo de protocolopode ser implementado pelas linhas DTR e DSR (Data Terminal Ready eData Set Ready). A diferença é que esses sinais são controlados por softwarepelo processador, que pode ativar o DTR e checar o DSR através deinstruções IN e OUT. O método utilizado depende do programa decomunicação. Portanto cada programa de comunicação utiliza um cabo nullmodem apropriado.

Um dos padrões de null modem é o chamado “cabo Laplink”. É o padrãomais usado por programas de comunicação entre dois PCs. Era o caboutilizado pelo famoso programa LapLink para conexão entre dois PCs, daívem o seu nome. Este mesmo padrão de cabo foi também adotado pelaMicrosoft para os programas Interlink/Interserver (comunicação de PCs noMS-DOS 6) e pela Conexão direta via cabo (DCC – Direct CableConnection), introduzida no Windows 95. Este tipo de cabo tornou-se tãopopular que muitos confundem os termos “cabo de null-modem” e “cabo de

Capítulo 14 – Interfaces 14-35

Laplink”. Se a sua intenção é ligar dois PCs através da porta serial paracomunicação de dados, usando o software DCD do Windows, compre umcabo “Laplink serial”, encontrado no comércio com este nome, ou chamadode “null modem”. Escolha o cabo com o tipo de conector adequado ao seucaso. Note entretanto que a comunicação pela interface paralela é maisveloz, portanto dê preferência ao uso da DCC por cabo Laplink paralelo.

Se sua intenção é ligar a interface serial a um modem, você deverá comprarum cabo “straight” (direto), também conhecido como “cabo serial paramodem”. A situação fica difícil se sua intenção é ligar uma impressora serialno PC. O problema aqui é que os cabos seriais de impressora não sãopadronizados, ou seja, cada fabricante adota uma pinagem diferente. Serápreciso consultar o manual da sua impressora para checar a pinagem correta,ou então utilizar um cabo serial que seja fornecido com a própria impressora.

Endereços e IRQs

Uma porta serial 8250 e compatíveis, usadas nos PCs, utilizam uma linha deIRQ e 8 endereços de E/S. Os endereços e IRQs padronizados para essasportas são:

Porta Endereços InterrupçãoCOM1 3F8-3FF IRQ4COM2 2F8-2FF IRQ3COM3 3E8-3EF IRQ4COM4 2E8-2EF IRQ3

Note que apesar de serem permitidos 4 endereços de E/S, não existem linhasde IRQ exclusivas para a COM3 e a COM4. Elas devem compartilhar asinterrupções que eram destinadas à COM1 e à COM2, que são a IRQ4 e aIRQ3, respectivamente. As linhas de IRQ dessas interfaces seriais deveriamutilizar um tipo de circuito chamado open collector (coletor aberto).

14-36 Hardware Total

Figura 14.29

Funcionamento do compartilhamento deinterrupções das portas seriais.

O funcionamento do compartilhamento de interrupções das portas seriais émostrado na figura 29. Neste exemplo, a COM1 e a COM2, localizadas emplacas de expansão, estão ambas ligadas ao pino do barramento ISA relativoao IRQ4. Os circuitos das portas serias devem ter suas saídas do tipo opencollector (coletor aberto). A característica dessas saídas é que, ao gerarem umbit 1, não têm fornecimento de corrente. O valor da tensão relativa ao bit 1 éobtido através de um resitor que deve ligar a saída da porta lógica àalimentação Vcc. Portas de coletor aberto podem ser ligadas em paraleloatravés de um único resitor, como mostra a figura. O sinal de ambas é ligadona linha IRQ4, ativada em nível 0. Quando ocorre uma interrupção IRQ4,caberá à rotina de atendimento, interrogar ambas as interfaces seriais queusam esta IRQ, através da leitura do seu status. Assim apenas a interface querealmente gerou a interrupção terá seu dado lido (ou no caso detransmissões, terá dados transmitidos). Se as duas interfaces gerareminterrupção ao mesmo tempo, ambas serão atendidas.

O processo de compartilhamento de interrupções infelizmente não pode serutilizado na prática, pois os fabricantes de hardware e de software nãoseguiram à risca as especificações da IBM. Não usavam portas de coletoraberto nas suas interfaces, e as rotinas de atendimento (os drivers) nemsempre interrogam as duas interfaces. Na prática as interfaces seriais devemutilizar interrupções exclusivas, sem compartilhamento.

Para que as quatro portas seriais possam ser utilizadas, é preciso remanejar asinterrupções utilizadas. Durante os anos 80 e até meados dos anos 90, isto erafeito através de jumpers nas placas que possuíam portas seriais. A partir demeados dos anos 90 este remanejamento passou a ser feito através do CMOS

Capítulo 14 – Interfaces 14-37

Setup ou do Gerenciador de Dispositivos do Windows. Note entretanto quenem sempre existe a flexibilidade de escolha de outras IRQs além da 3 e da4. Um exemplo em que isso pode ser feito é nas interfaces seriais existentesem modems. É perfeitamente possível configurar uma dessas interfacesseriais como, por exemplo, COM3 e usando uma IRQ como 5, 7 ou 9,desde que esteja disponível.

Placas multiseriais

Há muitos anos existem também placas multiseriais, dotadas de váriasinterfaces seriais. As multiseriais mais comuns possuem 4, 8 e 16 portasseriais. É possível instalar várias dessas placas, e através de driversapropriados, são reconhecidas como COM1, COM2, ... COM8, ..., COM16,e assim por diante. As interrupções usadas pelos drivers dessas interfaces sãocompartilhadas. Placas multiseriais são usadas em provedores de acesso àInternet, possibilitando a ligação de um grande número de modemsexternos.

Figura 14.30

Placa multiserial com 16 portas.

Existem placas multiseriais baseadas no barramento ISA, porém as maismodernas usam o barramento PCI. Essas placas utilizam conectores na suaparte traseira com um elevado número de pinos, nos quais são ligados cabosque as acompanham, como mostra a figura 31. Nesses cabos conectamos osmodems.

14-38 Hardware Total

Figura 14.31

Placa multiserial com 8 portas,acompanhada dos cabos.

Comunicação por luz infravermelhaEste é um modo de comunicação que não utiliza fios, e sim, feixes de luzinfravermelha. É o mesmo tipo de comunicação usada pelo controle remotode aparelhos de TV, som, etc. Os padrões de comunicação são regidos elaIRDA – Infrared Data Association. É uma organização formada por mais de100 fabricantes com o objetivo de estabelecer padrões visando acompatibilidade entre todos esses produtos. Tais comunicações recaem em 3padrões:

IRDA Data: Usado na transmissão de dados em alta velocidade, envolvendotransferência de arquivos, sons, imagens, etc.

IRDA Control (ou IrBus): Usado na comunicação com dispositivos decontrole, como teclado, mouse e joystick.

Legacy Remote Control: É uma miscelânea de métodos utilizados pordispositivos de controle remoto que não seguiam padrões IRDA. Aos poucosnovos produtos estão migrando para o padrão IRDA Control.

IRDA Data

Este protocolo é usado na comunicação entre dois PCs para transferência dedados, bem como dispositivos que transmitem grandes quantidades deinformação. Possibilita por exemplo, a comunicação entre um PCs eNotebooks e Handhelds (PCs de mão), impressoras, scanners, câmerasdigitais e quaisquer dispositivos que mantenham um elevado tráfego dedados. A especificação antiga, a IRDA 1.0 permitia taxas de até 115.200 bits

Capítulo 14 – Interfaces 14-39

por segundo, a mesma velocidade da maioria das portas seriais. A novaespecificação IRDA 1.1 permite velocidades de até 4.000.000 bits/s. Otransmissor e o receptor devem estar separados por uma distância máximaque varia de 1 a 2 metros, e com ângulo de visão de até 30 graus.

Figura 14.32

Ângulos entre os dois dispositivos que secomunicam.

A figura 31 mostra o acoplamento ótico entre dois dispositivos que secomunicam por luz infravermelha. Para cada dispositivo existe um eixoótico, que é uma linha imaginária, perperndicular à superfície onde estãomontados o sensor e o transmissor. Unindo os dois dispositivos, temosângulos formados entre esta linha e os eixos óticos dos dois dispositivos. Nafigura 46, esses ângulos são e . O padrão IRDA Data requer que cadaum desses dois ângulos sejam menores que 30.

Os pacotes de dados são finalizados por um CRC de 16 bits para asvelocidades até 1.152.000 bps e de 32 bits com a taxa de 4.000.000 bps. Atabela abaixo resume as taxas de transferência do padrão IRDA Data 1.1.

2.400 bps 38.400 bps 576.000 bps9.600 bps 57.600 bps 1.152.000 bps19.200 bps 115.200 bps 4.000.000 bps

IRDA Control

A especificação IRDA Control, também conhecida como IrBus ou IRDACIR (Control IR), é usada para periféricos de controle que não necessitamde taxas de transferência elevadas, como teclado, mouse e joystick, eaparelhos de controle remoto em geral. No computador, o ângulo deabertura permitido é de até 50. Nos disposistivos o ângulo varia de 15 a40, dependendo do dispositivo. Um ângulo de abertura pequeno no

14-40 Hardware Total

dispositivo significa que devemos apontá-lo para o computador. Já ocomputador deve aceitar um ângulo de abertura maior, graças a um sistemade lentes. Isto significa que os dispositivos não precisam necessariamenteestar príximos ao eixo ótico do sensor do computador. A taxa de transmissãono padrão IRDA Control é de 75k bps.

Porta serial COM2 e IRDA

Praticamente todos os PCs atuais possuem uma porta IRDA. Note que estetipo de porta opera de forma muito similar a uma porta serial. Através doCMOS Setup podemos configurar a porta COM2 para operar no modonormal ou no modo IRDA. Feita esta configuração, devemos instalar umtransceptor infravermelho, que é uma pequena placa ligada a um cabo. Estedispositivo é instalado na parte frontal do gabinete, possibilitando acomunicação com dispositivos no padrão IRDA. Infelizmente a maioria dasplacas de CPU, apesar de terem esta conexão, não são acompanhadas domódulo infravermelho, que é opcional.

Interface de teclado e mouseDurante muito tempo a interface serial foi a mais utilizada para conexão doPC com um mouse. Este tipo de conexão tem algo de muito semelhante emrelação à interface de teclado: ambas transmitem dados no formato serial. Écorreto portanto afirmar que o teclado do PC é um dispositivo serial, apesarde não ser ligado a uma UART. Nos computadores da linha PS/2, a IBMcriou uma segunda interface similar à utilizada pelo mouse. Esta interfacepassou a ser chamada de “interface para mouse PS/2”. O método decomunicação é inteiramente similar ao do teclado, inclusive os atuais chipscontroladores de teclado existentes nas placas de CPU também sãocontroladores do mouse PS/2.

O chip 8042

Desde o lançamento do IBM PC AT, a interface de teclado era formada porum chip 8042. Este chip é um microcontrolador, ou seja, ummicroprocessador com sua própria memória ROM interna, RAM e circuitosde E/S. Em muitas placas de CPU este chip possui uma etiqueta com aindicação “Keyboard BIOS”. Nas placas de CPU modernas, a interface deteclado (compatível com o 8042) é incorporada ao Super I/O. A figura 33mostra o diagrama de blocos de uma interface de teclado, contida em umchip Super I/O.

Capítulo 14 – Interfaces 14-41

Figura 14.33

Diagrama da interface de teclado emouse.

O centro da interface de mouse é o processador de 8 bits, compatível com o8042, que executa o programa de comunicação com o teclado e o mouse,localizado na ROM de 8kB. Através de um barramento interno de 8 bits,tem acesso a 256 bytes de RAM. Faz a comunicação com o processador daplaca de CPU através do barramento de dados, e também a comunicaçãocom o teclado e com ou mouse através dos sinais KBCLK, KBDAT, MCLKe MDAT. Possui ainda 8 bits de entrada e saída para outros tipos e controle,não necessariamente relacionados com o teclado e o mouse.

Formato da transmissão de dados

A figura 34 mostra o formato da comunicação feita entre o PC e o teclado, etambém entre o PC e o mouse PS/2. A comunicação é bidirecional, ou seja,além de receber informações do teclado e do mouse, a interface podetransmitir comandos de configuração. Na situação de repouso, os sinais declock e dados ficam com o valor binário 1. O clock começa a operarenviando 11 pulsos, enquanto a linha de dados transmite 11 bits: start bit, 9bits de dados, um bit de paridade e 1 stop bit, ou seja, é um formato similarao utilizado pelas interfaces seriais. A diferença básica é que nestatransmissão é enviado um sinal de clock, ou seja, trata-se de uma transmissãosíncrona.

14-42 Hardware Total

Figura 14.34

Dados do mouse ou teclado PS/2.

Os sinais das interfaces

A figura 35 mostra o diagrama dos sinais da interface de teclado e mouse. Aslinhas KDAT e KCLK são os dados e clocks do teclado, e as linhas MDAT eMCLK são os dados e clock do mouse. Note que esses quatro sinais sãobidirecionais, permitindo a comunicação nos dois sentidos. Os sinais KIRQ eMIRQ são usados para gerar as interrupções do teclado e do mouse, edevem ser ligados respectivamente aos pinos IRQ1 e IRQ12 do controladorde interrupções.

*** 35% ***Figura 14.35

Interface de teclado e mouse.

O sinal Gate A20 é usado para habilitar o funcionamento da área damemória chamad HMA (High Memory Area), como explicaremos maisadiante.

O teclado tem ainda a linha KBRST (Keyboard Reset). Nos XTx, este sinalera efetivamente enviado para o teclado, através do pino 3 do conector DIN.Este comando fazia o processador interno do teclado realizar um Reset. Nosteclados padrão AT (usados pelos PCs atuais) não existe o sinal de Reset. Aoinvés disso, foi adicionado um comando de Reset, que o PC envia para oteclado. Esta alteração foi possível graças ao fato da interface de teclado terse tornado bidirecional. O antigo sinal KBDRST é usado agora para resetaro processador da placa de CPU, e não mais o teclado.

Capítulo 14 – Interfaces 14-43

Figura 14.36

Esquema de intefaces de teclado e mousePS/2.

A figura 36 mostra o diagrama as interfaces de teclado e mouse. Comosabemos, as placas de CPU ATX utilizam dois conectores padrão PS/2 (mini-DIN). Na figura vemos as conexões existentes em cada um deles. Para oteclado temos KDAT, KCLK, +5V e terra. Para o mouse temos MDAT,MCLK, +5V e terra.

Circuito interno de um teclado

A figura 37 mostra o circuito interno de um teclado. Todos os teclados paraPCs são baseados no chip 8049, que também é um microcontrolador, assimcomo o 8042 usado como interface de teclado, na placa de CPU. A diferençaé que enquanto o 8042 da placa de CPU foi incorporado aos chipsetsmodernos, o 8049, originalmente produzido pela Intel, continua sendoproduzido por diversos outros fabricantes, em versões compatíveis.

14-44 Hardware Total

*** 100%***Figura14.37

Esquema de umteclado.

O 8049 possui diversos sinais de saída, C0-C17, e sinais de entrada R0-R7.Esses sinais são usados para formar uma matriz de 144 posições. Em cadacruzamento de um sinal R com um sinal C, temos uma tecla. A partir deuma varredura seqüencial feita nos sinais C, acompanhada de leituras nossinais R, é possível detectar quais teclas estão pressionadas. O código datecla é enviado ao PC pelas linhas DATA e CLK. Note que o chip tambémcomanda os leds existentes no teclado: Caps Lock, Num Lock e Scroll Lock.

Circuito interno de um mouse

A figura 38 mostra o esquema interno de um mouse. Todo o trabalho é feitopor um único chip que detecta os movimentos nos eixos X e Y, bem como opressionamento dos botões. A comunicação com o PC é feita pelos sinaisCLK e DATA. Vemos também no esquema as ligações com o terra (GND) e+5 volts, fornecidos através do cabo da interface.

Figura 14.38

Esquema de um mouse.

O mouse tem dois sensores de movimento, X e Y. Cada um deles é formadopor um disco com pequenas fendas radiais, dois emissores e dois sensoresóticos. De acordo com os sinais recebidos pelos dois sensores, é possível

Capítulo 14 – Interfaces 14-45

determinar a velocidade e o sentido da rotação. Desta forma o mouse podedeterminar os movimentos X e Y a serem enviados para o PC. Note quetambém existem três entradas que são ligadas aos botões.

Figura 14.39

Roda dentada e sensores óticos.

A figura 39 mostra uma das rodas dentadas que são ligadas aos roletes domouse. Note que existem dois sensores óticos diametralmente opostos (X1 eX2 para uma roda, Y1 e Y2 para a outra). O grande truque é que os doissensores não são exatamente opostos. Quando um deles está totalmenteexposto, o outro está parcialmente exposto. Conforme a roda gira, ossensores captam ondas retangulares, e a posição relativa dessas duas ondasindica o sentido do movimento, como mostra a figura 40.

Figura 14.40

Detectando movimentos para a esquerdae para a direita.

14-46 Hardware Total

Outra roda similar é usada para o eixo Y, detectando movimentos para cimae para baixo.

Dados do teclado

Nos teclados muito antigos, anteriores à era dos PCs e mesmo os não tãoantigos, mas usados em terminais alfanuméricos, cada tecla pressionadaresulta na transmissão do código ASCII da tecla. Por exemplo, a letra “A”maiúscula produz o código 41h, “B” produz 42h, e assim por diante.

Os teclados usados nos PCs operam de outra forma. Quando pressionamosuma tecla, é enviado não o seu código ASCII, mas uma outro código criadopela IBM especificamente para os teclados dos PCs. São chamados SCANCODES. Muitas teclas têm códigos formados por um único byte, enquantooutras têm códigos formados por 2 o mais bytes. O interessante é queexistem dois códigos enviados para cada tecla: um quando a tecla épressionada e outro quando a tecla é liberada. Portanto quando uma tecla épressionada é enviado um código (Make) e outro quando é liberada (Break).A figura 41 mostra os códigos de algumas teclas.

Figura 14.41

Scan codes.

Dados do mouse

Cada vez que fazemos um movimento com o mouse, é enviado um conjuntode dados para o PC, chamado report. O formato deste report depende domodo no qual o mouse está operando. No modo PS/2 são enviados 3 bytes,como descritos na figura 42. O primeiro byte têm codificadas em seus bits,informações sobre o pressionamento de botões e parte das informações sobre

Capítulo 14 – Interfaces 14-47

as coordenadas X e Y. Os dois bytes seguintes enviam as coordenadas X eY.

Figura 14.42

Report em um mouse PS/2.

No modo Microsoft, o report tem 4 grupos de 7 bits. O primeiro grupo enviao status dos botões direito e esquerdo, bem como parte dos bits dascoordenadas X e Y. Os dois grupos seguintes enviam o restante dos bits dascoordenadas X e Y. O quarto grupo envia apenas o status do botão centraldo mouse. No caso de modelos com scroll, este quarto grupo também enviainformações relativas ao eixo Z, que é o botão de scroll.

Figura 14.43

Report em um mouse Microsoft.

Note que os modos PS/2 e Microsoft são incompatíveis. Certos chips decontrole de mouse operam apenas no modo Microsoft, outros apenas nomodo PS/2, outros em ambos os modos. Da mesma forma, certos modelosaceitam apenas a interface padrão PS/2, outros são ligados na interface serial,e outros possuem conector mini-DIN (PS/2) mas podem ser ligados em umconector serial DB9, através de um adaptador. Para que isto seja possível énecessário que os circuitos do mouse estejam aptos a utilizar os dois tipos deinterface, o que nem sempre é feito pelos fabricantes.

O sinal A20

O sinal A20 foi criado para dar acesso aos endereços de memória entre1024kB e 1088kB quando o processador está operando no modo real. Nestamodalidade os processadores possuem um endereçamento de memóriasimilar ao de um XT, com apenas 1024 kB (1 MB), já que o seu processadortem apenas 20 bits de endereço (A0-A19). Mesmo nos processadores maisnovos, com mais de 20 bits de endereço, todos os bits a partir de A20 ficamcom valor zero quando operando no modo real.

14-48 Hardware Total

Com o sinal A20, o processador pode acessar uma área de 64 kB, localizadaa partir do endereço 1M, chamada HMA (High Memory Area). Ofuncionamento é o seguinte: ao fazer um registrador de segmento ter o valorFFFF, este segmento ficará localizado a partir do endereço absoluto FFFF0,que é 16 bytes antes do final da memória no modo real. Ao ser endereçadoo byte seguinte, ocorrerá um “Vai 1” no cálculo de endereço, que éautomaticamente transformado em zero. Por exemplo, com segmento FFFF eoffset 0010, o endereço resultante será 100000 (1M), que é truncado para00000. Isto faria o processador endereçar o início da memória. O bit A20 éum sinal gerado pela interface de teclado (não tem nenhuma relação com oteclado propriamente dito, mas ocorre que o 8042 tinha este bit de uso geralsobrando, e foi usado para implementar o A20). Como resultado, o bit A20do processador, que é truncado, é substituído pelo A20 que é gerado pelo8042. Assim o processador, que deveria estar acessando a área de memória apartir do endereço 0k, acaba acessando a área a partir do endereço 1024k.Esses 64 kB adicionais de memória são preciosos, pois permite que parte dosistema operacional de modo real (o MS-DOS, por exemplo) seja carregadonesta área, deixando mais memória convencional livre para seus aplicativosde modo real.

/////////// FIM /////////////////