Sie sind auf Seite 1von 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
14-2 Hardware Total
que nela são escritos, ou seja, são registradores. Esta porta é usada para
enviar 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 de
SPP (Standard Parallel Port). As portas paralelas atuais são mais avançadas e
complexas, e operam em modos mais rápidos, chamados EPP e ECP. Nesses
modos, 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 os
dados que são transmitidos e recebidos. Os demais sinais de controle
també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 conectar


uma impressora, é usado um cabo que possui no lado do computador, um
conector 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 36


Strobe 1  1
Data Bit 0 2  2
Data Bit 1 3  3
Data Bit 2 4  4
Data Bit 3 5  5
Data Bit 4 6  6
Data Bit 5 7  7
Data Bit 6 8  8
Data Bit 7 9  9
Acknowledge 10  10
Busy 11  11
Paper Out 12  12
Select 13  13
Autofeed 14  14
Error 15  32
Capítulo 14 – Interfaces 14-3
Reset 16  31
Select 17  36
Signal Ground 18 33
Signal Ground 19 19,20
Signal Ground 20 21,22
Signal Ground 21 23,24
Signal Ground 22 25,26
Signal Ground 23 27
Signal Ground 24 28,29
Signal Ground 25 30,16
Shield Shield Shield+17

Modo SPP
O modo SPP (standard parallel port, ou compatibility mode) foi o utilizado
pelas interfaces paralelas e impressoras dos anos 80. As interfaces atuais são
mais 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 porta
paralela.

1) O dado a ser enviado é colocado no registrador de dados, e aparece nas


linhas Data0-Data7 da interface.

2) Agurada-se que a linha Busy esteja desativada, ou seja, indicando que a


impressora 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 dispositivo


recebeu 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ção
da 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 que
deve ser obedecido pelos dispositivos que seguem um determinado padrão.

Existem entretanto vários outros sinais de inicialização, modo de operação e


indicação de erros. A tabela que se segue descreve esses sinais:

Sinal Descrição
 O PC envia para a interface um pulso que indica que o dado que
Strobe
está no barramento D0-D7 pode ser lido.
D0 – D7  Barramento de dados.
 O dispositivo informa à interface que o dado foi recebido com
ACK
sucesso.
 O dispositivo informa que ainda não está pronto para receber o
Busy
próximo dado.
Paper Out  A impressora informa que está sem papel.
Select  A impressora indica que está selecionada e on-line.
 Indica à impressora que deve usar um Line Feed
Autofeed
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 dados


pela porta paralela no modo SPP. Usaremos o assembly de processadores
x86:

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 BUSY
JNZ PR1 ; Aguarda até a linha BUSY ficar em 0
IN AL,27Ah ; Pega os bits de controle atuais
AND AL,7Eh ; Faz bit de Strobe igual a zero
OUT 27Ah,AL ; Envia bit de Strobe para a impressora
NOP
NOP
NOP ; Aguarda largura mínima do pulso
OR AL,1 ; Faz novamente bit de Strobe igual a 1
OUT 27Ah,AL ; Desativa Strobe
PR2: IN AL,279H ; Lê status
AND AL,0DFh ; Checa linha ACK
JNZ PR2 ; Aguarda ACK ficar em 0
PR3: IN AL,279h : Lê novamente status
AND AL,0DFh ; Checa linha ACK
JZ PR3 ; Aguarda ACK voltar a 1
RET ; FIM

Esta rotina faz com que os sinais da interface paralela executem as ações
mostradas na figura 2. Nos processadores antigos, o tempo de execução era
relativamente grande. Durando em torno de 20s no XT, a taxa de
transferê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 ser
reduzido com o uso de processadores mais velozes. O problema é que as
instruções de entrada e saída (IN e OUT) no barramento ISA devem durar
dois ciclos a 8 MHz, o que equivale a 0,25s. Mesmo fazendo otimizações
para reduzir ao mínimo o número de instruções de E/S, a taxa obtida
dificilmente fica acima de 150 kB/s.

Modo Nibble
O modo Nibble é uma utilização especial da porta paralela no modo SPP
que permite realizar leitura de dados. O barramento de dados da porta
paralela 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 continua
com sua utilização normal, e as demais 4 linhas são usadas para leitura de
dados. Como 4 bits formam o que chamamos de nibble, este é o nome dado
a este modo. Sendo apenas 4 bits é preciso fazer duas leituras para receber
cada byte. Isto torna a leitura no modo Nibble/SPP duas vezes mais lenta que
a escrita, que opera com 8 bits. A descrição dos sinais da interface paralela,
ao operar no modo Nibble, é mostrada na tabela abaixo.

Sinal Nome Descrição


SPP Nibble
 O dispositivo informa à interface que o nibble está
ACK PtrClk
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.
 A interface avisa que está pronta para receber o
Autofeed HostBusy
nibble, depois indica que terminou a recepção.

Figura 14.3
Leitura de dados na porta paralela pelo
modo Nibble.

A figura 3 mostra a recepção de um byte no modo Nibble. Os eventos que


ocorrem são os seguintes:

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


dados.
14-6 Hardware Total
2) O dispositivo coloca nas linhas de status (dados de entrada no modo
Nibble) os 4 primeiros bits do byte a ser enviado.

3) O dispositivo coloca em 0 a linha PtrClk. Assim a interface é avisada que


o 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 o


nibble.

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 Taxa
Leitura 54 kB/s
Gravaçã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 em
grupos 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 de
interfaces SPP comuns, com a simples substituição dos registradores
unidirecionais que formam a porta de dados, por registradores bidirecionais.
Graças a este recurso a porta pode receber dados de 8 em 8 bits, fazendo
com que a leitura se dê na mesma velocidade da escrita, apesar da taxa
continuar limitada à faixa de 150 kB/s. A tabela a seguir mostra o uso dos
sinais da interface no modo bidirecional, também chamado de IEEE-1284
Byte mode, Extended mode e de PS/2 Mode, já que esta interface
bidirecional foi criada pela IBM para seus computadores PS/2.

Sinal Nome Descrição


SPP Bi-Dir
 O PC envia para a interface um pulso que indica que o
Strobe HostClk
dado foi recebido.
D0 – D7 D0 – D7  Barramento de dados, bidirecional.
 O dispositivo informa à interface que o dado está no
ACK PtrClk
barramento e pode ser lido.
Capítulo 14 – Interfaces 14-7
 O dispositivo informa que ainda não está pronto para
Busy PtrBusy
enviar o próximo dado.
 A interface indica à impressora que ainda não pode
Autofeed HostBusy
receber dados.
 O dispositivo indica à interface que o dado está disponível
Error DataAvail
para leitura.

A figura 4 mostra o recebimento de dados por uma interface paralela


operando no modo bidirecional.

Figura 14.4
Leitura no modo bidirecional.

1) A interface deve enviar um 0 pela linha HostBusy, indicando que está apta
a 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 bit
0 em PtrClk.

4) A interface coloca a linha HostBusy em 1, indicando que não pode


receber 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 do


byte.

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 por
um comitê formado por diversas empresas. Tem a característica de ser
totalmente compatível com o modo SPP e operar com taxas de transferência
mais elevadas, chegando a 2 MB/s. A lentidão do modo SPP é resultado
principalmente 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,25s, o que é necessário
pelo padrão ISA. Como são usadas várias dessas instruções para enviar um
dado por uma interface SPP, a taxa de transferência não pode ser muito
elevada.

A implementação da interface EPP é baseada no uso de uma porta de dados


inteligente, 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 pelo
fato 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 envio
de 1, 2 ou 4 bytes. A porta EPP encarrega-se de dividir o dado recebido do
processador em grupos de 8 bits e transmiti-los em seqüência para o
dispositivo. Os circuitos ligados a esta porta irão gerar sozinhos o sinal Strobe
e aguardar pelas respostas do dispositivo, vinda pelos sinais Busy e ACK. Ao
ser usada uma impressora ou outro dispositivo compatível com o padrão
EPP, é obtida uma taxa de transferência da ordem de 2 MB/s. Ao ligarmos
em uma porta paralela EPP, um dispositivo paralelo comum (SPP), o
funcionamente se dará sem problemas, já que os sinais do EPP são idênticos
aos do SPP. No caso, um dispositivo lento fará a porta EPP esperar através
do sinal Busy, o que resultará em uma temporização típica de dispositivos
SPP.

Sinal SPP Sinal EPP Descrição


 Indica que a interface está realizando uma operação de escrita, transmitindo
Strobe Write um dado para o dispositivo. Deve permanecer em nível 1 para as operações
de leitura.
D0 – D7 D0 – D7  Barramento de dados bidirecional.
ACK INTR  Usado para o dispositivo gerar uma interrupção.
 Usado para o dispositivo controlar o fluxo de dados vindo da interface, de
Busy WAIT forma compatível com a sua velocidade. O ciclo só termina quando esta linha
volta a 0.
Select Select  A impressora indica que está selecionada e on-line.
 A interface indica que está realizando uma transferência, que pode ser uma
Autofeed DATASTB
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 os


dados.

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 outro
dado.

Dispositivos SPP (como impressoras antigas) podem ser ligadas em portas


paralelas EPP, graças à compatibilidade entre os sinais. A figura 6 compara
as formas de onda de transferências SPP e EPP. Como podemos ver, as
formas de onda têm funções semelhantes, garantindo a compatiblidade total.
A chave desta compatibilidade é o sinal Busy (chamado de Wait no modo
EPP), 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ão
278-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 byte
seguinte, 3C0, é reservado para a placa de vídeo, portanto não pode ser
usado por uma porta EPP. O mapa completo de endereços de uma porta
EPP é o seguinte:

Endereço Descrição
BASE+0 Porta de dados no modo SPP
BASE+1 Porta de Status
BASE+2 Porta de Controle
BASE+3 Porta de endereço – permite endereçar os
dispositivos EPP ligados à porta, bem como
acessar os registradores internos desses
dispositivos.
BASE+4 Dado EPP – bits 0 a 7
BASE+5 Dado EPP – bits 8 a 15
BASE+6 Dado EPP – bits 16 a 23
BASE+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 de
endereço BASE+0 (BASE pode ser 278h ou 378h). Quando determina que o
dispositivo pode operar em modo EPP, faz operações de E/S a partir da
porta de endereço BASE+4 (27Ch ou 37Ch). Instruções de E/S de 16 bits
usarão automaticamente as portas de endereços BASE+4 e BASE+5, e
instruções de E/S de 32 bits usarão as portas de endereços BASE+4 a
BASE+7.

Modo ECP
Capítulo 14 – Interfaces 14-11
O modo ECP (Extended Capability Port) é também suportado pelas
interfaces e dispositivos modernos. Apresenta desempenho sensivelmente
melhor 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 o
processador não espere pela interface. Ao realizar uma instrução OUT, por
exemplo, 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 de
acordo com o chip Super I/O usado, mas normalmente encontramos versões
de 8, 16 e 32 bytes.

Figura 14.7
FIFOs de entrada e saída em uma porta
ECP.

Os bytes enviados para a porta de dados da interface ECP vão diretamente


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

Os dados que são transmitidos e recebidos por uma interface ECP podem
ser codificados pelo método RLE (Run Lenght Encoding). Por exemlo, para
enviar para uma impressora, 30 bytes com o valor 00, basta enviar 00,
seguindo de um comando indicador de comprimento 30. Assim são enviados
apenas 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 bits
seguintes especificam o número RLE (número de vezes que um byte vai ser
repetir) ou um identificador de dispositivo, que pode ser de 1 a 127. Usando
o método RLE é obtida uma compressão de dados de até 64:1. Esta
compressão extrema é obtida quando é preciso transmitir 128 bytes iguais
(situação comum em impressoras e scanners, quando onde as imagens têm
muitos trechos repetitivos), e são transmitidos apenas 2 (valor e número de
bytes).

A tabela abaixo mostra o uso dos sinais da interface paralela quando


operando no modo ECP.

Sinal Sinal EPP Descrição


SPP
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.
 O periférico indica que tem dado pronto para transmitir para a
Error PeriphRequest
interface.
Reset ReverseRequest  A interface pede para reverter a direção para entrada de dados.
 Usado na identificação dos modos suportados pelo periférico, na fase
Select Xflag
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 é usado
para indicar se o valor transmitido é um comando (HostAck=0) ou um dado
(HostAck=1). O sinal HostClk funciona como strobe, e serve para a interface
indicar ao dispositovo que tem um dado disponível para ser lido. A linha
PeriphAck é usada para o dispositivo responder à interface que recebeu o
dado. 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 modo
ECP.

As interfaces ECP utilizam duas faixas de endereços de E/S. O endereço


base pode ser 278h, 378h ou 3BCh. Entretanto, as interfaces paralelas atuais
també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ção
BASE+0 Porta de dados no modo SPP
BASE+1 Porta de Status no modo SPP
BASE+2 Porta de Controle no modo SPP
BASE+400 FIFO
BASE+401 Porta de configuração ECP
BASE+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 e
778h-77Ah. Como as portas atuais precisam ser capazes de operar nos
modos EPP e ECP, as faixas ficam ampliadas para:

Base 278h: 278h-27Fh e 678h-67Ah


Base 378h: 378h-37Fh e 778h-77Ah

O padrão IEEE-1284
Modo SPP, modo bidirecional, modo EPP, modo ECP. Vários padrões para
interfaces e dispositivos resultavam em sérios problemas de compatibilidade.
Apeasar dos modos EPP e ECP permitirem o uso de dispositivos SPP, não
existe compatibilidade de sinais entre EPP e ECP. Para resolver esses
problemas, o IEEE (Institute of Electrical and Electronic Engineers) criou um
comitê para organizar todos esses “padrões” em um só. A união de todos
eles deu origem ao padrão IEEE-1284. Todas as interfaces paralelas usadas
nos PCs produzidos nos últimos anos (a partir de 1995) são compatíveis com
este 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 partir
daí passa a se comunicar com cada um deles, de acordo com o máximo
modo suportado.

No CMOS Setup podemos escolher o modo a ser utilizado pela porta


paralela: 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 os
dispositivos 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ível
també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 driver
atribui um número para o dispositivo. Desta forma são enviados comandos
específicos para cada um dos dispositivos ligados em uma interface, que
podem 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 dispositivos
multiporta possuem dois conectores, muitas vezes indicados como “Host” e
“Printer”. Na verdade o indicado como Host não é ligado necessariamente
no computador, mas em outro dispositivo que esteja conectado de forma
mais próxima ao PC. No conector indicado como “Printer” podemos ligar
dispositivos posteriores da cadeia. A comunicação entre os periféricos e a
interface é feita pelo protocolo CPP (Command Packet Protocol).

O número de dispositivos pode ser ainda maior se utilizarmos


multiplexadores. Cada multiplexador possui uma conexão indicada como
Host, e 4 “saídas”. Cada uma dessas “saídas” se comporta como uma outra
porta paralela.

A ligação de vários dispositivos na mesma porta paralela é possível graças ao


sistema de endereçamento e identificação de dispositivos. Tanto os modos
EPP como ECP têm comandos de identificação e endereçamento. Para
selecionar um dispostivo, basta enviar pela porta paralela, um comando de
endereço. A partir daí apenas o dispositivo endereçado ficará selecionado, e
os demais ficarão inativos, até que seja usado um outro comando de
endereçamento. Cada dispositivo multiporta tem circuitso especiais que
transmitem 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 dispositivo
multiporta.

A figura 10 mostra o diagrama interno de um dispositivo multiporta. Existem


dois conectores, um para fazer o encadeamento na direção da interface (Host
Port – muitas vezes indicado apenas como Host ou PC), e outro para fazer o
encadeamento no sentido oposto (Pass Through Port – muitas vezes indicado
como Printer). Um circuito detector de endereço (recebe os comandos de
endereçamento que chegam da interface) indica se o dispostivo está
selecionado ou não. Quando o dispositivo está selecionado, ativa dois
multiplexadores que fazem o seguinte:

a) Enviam seus próprios sinais de status na direção do Host


b) Desativam o envio de sinais de controle para os dispositivos seguintes da
cadeia.

Quando um dispostivo não está selecionado, limita-se a apenas passar a


diante os sinais de status e controle, ignorando os comandos recebidos. O
último elemento da cadeia pode ser um dispositivo não multiporta, já que
não precisará passar comandos e status adiante. Este último dispositivo
receberá os controles e dados que são passados adiante pelos demais
dispositivos. Seus sinais de status também serão passados adiante na direção
do host. Portanto para todos os efeitos, quando um dispositivo está
selecionado, tudo se passa como se fosse o único dispositivo fisicamente
ligado à interface. Note que para esse esquema funcionar é preciso que todos
os 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 ao
usuário, pelos diversos problemas que a impressora pode apresentar. Os três
tipos 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, é uma


simplificação daquele utilizado pela IBM nos seus primeiros PCs. Possui em
uma extremidade um conector DB-25 macho e na outra um conector
Centronics de 36 pinos. Dos 25 fios utilizados, 17 são sinais digitais usados na
comunicação entre a impressora e o PC, e 8 deles são fios de terra. O cabo
original da IBM possuía 8 fios de terra independentes. Este tipo de ligação
exige o uso de um cabo de 26 fios (o número de fios é sempre par nos cabos
produzidos pela indústria). Muitos fabricantes, visando tornar o cabo mais
barato, passaram a utilizar cabos mais finos, com apenas 18 fios. Desses, 17
são os sinais digitais e um deles é o terra. A ligação de todos os terras usando
um único fio não traz problema para impressoras comuns, mas pode ser
problemático para as impressoras mais sofisticadas.

O cabo paralelo conhecido como “bidirecional” nada mais é que um cabo


idêntico ao original usado nos primeiros PCs, com 8 terras independentes.
Cada um desses terras é trançado com um sinal digital correspondente. Este
tranç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. Este


cabo tem características elétricas que permitem a transmissão de dados em
altas velocidades. Além de alguns sinais serem trançados com fios de terra
independentes, o cabo possui uma blindagem dupla que o torna ainda mais
imune 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 ficam
dispostos em uma camada interna, separada da camada externa por uma
blindagem. Desta forma os bits de dados não sofrem interferência elétrica
provocada pelos demais sinais digitais do cabo. Cada um desses sinais por
sua vez são trançados com fios de terra, o que reduz a interferência mútua
entre eles. Este tipo de cabo é o indicado para comunicação nos modos EPP
e ECP.

Cabos paralelos comuns (um só fio terra) e cabos “bidirecionais” (8 terras


independentes) podem transferir dados nos modos EPP e ECP, porém com
baixa confiabilidade. A distorção e a interferência que ocorre nos seus sinais
digitais tem grande chance de causar erros que resultam no mau
funcionamento da impressora e de outros dispositivos paralelos.

Realmente o melhor tipo de cabo para as impressoras modernas é o IEEE


1284. Muitas impressoras e dispositivos paralelos já são fornecidoa com este
cabo, mas em outros casos o usuário precisa comprá-lo separadamente. O
problema é que a maioria das lojas só oferece o cabo paralelo comum e o
bidirecional. Uma solução para o problema é tentar utilizar o cabo
bidirecional, que tem chances de suportar transmissões nos modos EPP e
ECP. Caso esses modos apresentem problemas podemos reconfigurar a porta
paralela para operar no modo SPP. A taxa de transmissão será reduzida, e
mesmo os cabos mais simples poderão funcionar. Resumindo então:

Use o cabo que acompanha a sua impressora, provavelmente IEEE 1284, e


configure a sua porta paralela para o modo ECP.
14-18 Hardware Total
Se sua impressora não é acompanhada de cabo próprio, compre um cabo
IEEE 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 impressora
apresentar problemas com o cabo bidirecional, reconfigure a sua porta
paralela para operar no modo SPP. A impressora passará a utilizar este
modo, e o cabo paralelo bidirecional (e também o comum) suportará a taxa
de transmissão.

*** 75%
***
Figura
14.12
Conectores das
interfaces e
dispositivos
paralelos.

A figura 12 mostra os três tipos de conectores usados nas interfaces e


dispostivos paralelos. Os indicados como “receptáculos” são os conectores
existentes nos dispositivos e na interface, e os indicados como “plugs” são os
existentes nos cabos. São três os conectores:

Tipo A – Conector DB-25 fêmea, encontrado nas interfaces dos PCs


Tipo B – Conector de 36 pinos, padrão Centronics, o mais usado nos
dispositivos paralelos
Tipo C – Conector miniatura de 36 pinos (mini-Centronics), recomendado
para projetos novos.

O cabo tipo AB (DB-25 / Centronics-36) é o mais comum, mas além dele


existem ainda modelos AA, AC, BC e CC. Os cabos são produzidos com 4
medidas 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 para
operar de quatro modos diferentes:

SPP - Standard Parallel Port (Nibble ou Compatible)


EPP - Enhanced Parallel Port
ECP - Extended Capabilities Port
Bidirecional

A figura 14 mostra o Gerenciador de Dispositivos, no qual vemos na seção


Portas, o item Porta de impressora (LPT1). A outra configuração possível é
Porta de impressora ECP. Note que uma porta ECP pode operar nos modos
ECP, EPP, Bidirecional ou SPP, dependendo do modelo de impressora e dos
demais dispositivos paralelos instalados. O driver da impressora identifica os
modos suportados e configura a porta ECP para o modo de transferência
adequado.

Figura 14.14
A porta de impressora declarada no Gerenciador de
Dispositivos.

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 de
funcionamento da impressora é selecioná-la no Gerenciador de Dispositivos
(figura 14) e usar o botão Remover. Devemos agora reiniciar o computador
para ter acesso ao CMOS Setup, onde vamos alterar o modo da porta para-
lela.

Figura 14.15
Indicando no CMOS Setup o modo de
funcionamento da porta paralela.

No CMOS Setup encontramos uma seção chamada Integrated Peripherals,


ou Peripheral Configuration, ou similar. Encontrarmos então o item Parallel
Port Mode. As opções apresentadas são SPP (ou Standard, ou Nibble ou
Compatible), Bidirectional, EPP e ECP. A figura 15 mostra um exemplo de
CMOS 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ão
ocorrer, podemos fazer a instalação manualmente pelo comando Adicionar
Novo Hardware do Painel de Controle. Entrará em ação o Assistente para
adicionar 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. A
seguir será apresentada uma lista de tipos de hardware. Marcamos o item
Portas (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 da


esquerda o item Tipos de porta padrão. Na lista da direita selecionamos:

Porta de impressora: para operação no modo SPP


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

Depois disso a porta de impressora passará a constar no Gerenciador de


Dispositivos da forma como programamos. Podemos agora fazer a instalação
da impressora e de outros dispositivos paralelos.

Instalando uma segunda porta paralela


Muitas vezes pode ser conveniente instalar uma segunda porta paralela em
um PC, que ficaria então com duas portas, LPT1 e LPT2. No caso dos PCs
modernos, a porta paralela original é aquela localizada na placa mãe. A
segunda porta paralela está localizada em uma placa de expansão, em geral
uma do tipo IDEPLUS (figura 17). Você pode fazer este tipo de instalação
casao 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. Atualmente
caiu em desuso, mas ainda é a forma mais simples para adicionar novas
portas seriais e paralelas a um PC. Mesmo tendo caído em desuso, ainda
podemos encontrar placas IDEPLUS à venda no mercado de peças de
segunda 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 interface
para joystick. Como queremos apenas adicionar uma segunda porta paralela
ao PC, devemos deixar todas as interfaces da placa IDEPLUS desabilitadas,
exceto a porta paralela. Esta desabilitação é feita através dos seus jumpers, e
seguindo 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 interfaces
serial, paralela, de drives e IDE, existentes na placa de CPU. Ligue o
computador 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á a
configuração do computador, mostrando as interfaces seriais, paralela, de
disquetes e IDE, existentes no computador. Atue sobre os jumpers da placa
IDEPLUS, tentando desabilitar as interfaces. Na tela de configuração
mostrada no início do boot podemos verificar quando as interfaces seriais são
removidas. 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á-la
por ú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ência
de interfaces nos endereços:

200-207: Interface de joystick


1F0-1F7: Interface IDE primária
170-177: Interface IDE secundária
3F8-3FF, 2F8-2FF, 3E8-3EF, 2E8-2EF: Usados pelas interfaces seriais
278-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 quais
são os jumpers que atuam sobre o endereço da porta paralela. Habilite agora
a porta paralela da placa IDEPLUS e desabilite a interface de drives. A partir
daí a placa IDEPLUS terá apenas a porta paralela habilitada. Pode agora
habilitar novamente as interfaces existentes na placa de CPU e realizar um
boot normal no PC.

É preciso também configurar as portas paralelas, tanto da placa IDEPLUS


como da placa de CPU, para que não entrem em conflito. Os endereços que
uma porta paralela podem utilizar são 278, 378 e 3BC. Em geral podemos
escolher entre um deles através do CMOS Setup, definindo então o
endereço da porta paralela existente na placa de CPU. Na placa IDEPLUS, a
escolha é feita por jumpers. Em geral as configurações possíveis são:

Endereço 378, IRQ7


Endereço 278, IRQ5
Endereço 3BC, IRQ7

Podemos por exemplo configurar a porta paralela da placa de CPU como


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

Uma vez tendo ambas as portas paralelas configuradas, ambas serão


indicadas no quadro de configuração exibido durante o boot (figura 18).
Observe a indicação:
14-24 Hardware Total
Parallel Port (s) : 378, 278

Figura 14.18
Este PC está com 2 portas paralelas
instaladas.

Depois de declarar a nova porta paralela no CMOS Setup, precisamos fazer


a mesma coisa no Windows. Para isto usamos o comando Adicionar Novo
Hardware no Painel de Controle. Usamos a configuração manual, e
marcamos na lista de dispositivos de hardware, “Portas COM/LPT”. Na lista
de marcas e modelos marcamos as opções “Tipos de porta padrão” e “Porta
de impressora”. Note que não podemos usar a opção ECP, já que essas
antigas placas IDEPLUS são restritas ao modo SPP.

Terminada a instalação, a segunda porta paralela passará a constar no


Gerenciador de Dispositivos (figura 19).

Figura 14.19
A nova porta paralela já consta no Gerenciador de
Dispositivos.
Capítulo 14 – Interfaces 14-25
Será preciso também clicar sobre a nova porta paralela no Gerenciador de
Dispositivos, 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 teremos
mais uma IRQ livre para ser usada em outras instalações.

Figura 14.20
Configurando a porta paralela SPP para operar sem
IRQ.

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

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

Os vários padrões seriais


Ao contrário da transmissão paralela, que transmite um grupo de bits
simultaneamente, 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 bit
de um dado é imediatamente seguido pelo primeiro bit do dado posterior. É
preciso que o transmissor e o receptor estejam perfeitamente sincronizados
para operarem no modo síncrono. Entre blocos de dados consecutivos, são
realizados procedimentos de sincronização. Na transmissão síncrona também
podem ser utilizados sinais de clock, a melhor forma de sincronizar o
transmissor com o receptor.

A transmissão assíncrona não requer procedimentos especiais para


sincronização. A cada dado transmitido (normalmente cada dado é um
byte), são adicionados bits de sincronização e deteção de erros, chamados de
start 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 and
Transmitter). Este chip receber um dado do processador (até 8 bits) e o envia
na 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 de
operar no modo assíncrono. Quando o PC foi lançado, a USART mais
utilizada 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, produzida
pela National Semiconductor.

Muitas vezes é feita confusão entre os termos “interface serial” e “interface


RS-232”. O padrão RS-232 especifica um conector de 25 pinos (DB-25) para
conexã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 dos
PCs. O padrão RS-232 também especifica o uso de níveis de tensão para
representar os valores 0 e 1. Tipicamente são usados os valores de +12 e –12
volts para representar os bits 0 e 1, entretanto tais valores não são
obrigatórios. Podem ser usados valores em uma ampla faixa, entre 6 e 15
volts. 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 pequena
fraçã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ão
RS-232.

Formato dos dados transmitidos


Uma UART transmite dados de acordo com o diagrama mostrado na figura
21. Quando está em repouso, a UART fornece uma tensão correspondente
ao 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 da
transmissão. Este primeiro bit 0, que é sempre enviado no início da
transmissã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 de
dados, é enviado um bit opcional de paridade, e por último, um bit
finalizador chamado de stop bit, que tem sempre o valor 1. Imediatamente
apó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çando


com o Start bit. A seguir são enviados os bits 1, 0, 1, 1, 0, 0, 1 e 0, seguindos
dos bits 1 de paridade e 1 de stop bit. Os bits de dados são sempre
transmitidos na ondem inversa, começando pelo menos significativo e
terminando com o mais significativo, portanto o dado transmitido na figura
21 é 01001101, o mesmo que 4D em hexadecimal.

O bit de paridade é opcional, e quando utilizado pode formar paridade par


ou í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 de
bits, considerando dado e paridade, seja sempre ímpar. Após o bit de
paridade temos o stop bit, que é sempre 1, e depois do qual já pode ser
iniciada a transmissão do próximo dado.

As interfaces seriais são capazes de operar com vários formatos de


transmissão. O número de bits pode ser 5, 6, 7 ou 8. A paridade pode ser
par, ímpar ou nenhuma (O, E ou N). O número de stop bits pode ser 1, 1.5
ou 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 a
paridade, e o terceiro indica o número de stop bits. Para que a comunicação
seja feita de forma correta, ambos os dispositivos devem utilizar o mesmo
padrão.

Os chips 1488 e 1489


Os dados transmitidos pela UART assumem valores digitais representados
por 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 para
trafegarem ao longo de um cabo, devido à alta sensibilidade a ruídos. Os
dados enviados pela UART passam antes por um circuito chamado line
driver. A função deste circuito é transformar os bits 0 e 1 em tensões na faixa
de +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 cabo
passam por um circuito chamado de line receiver, que converte as tensões
de +12 e –12 volts do padrão RS-232 para níveis de tensão TTL, compatíveis
com os utilizados pela UART. Os line receivers mais utilizados são os chips
1489, 75189 ou equivalentes.

A figura 42 mostra formas de onda reais, medidas com um osciloscópio


digital. 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, medidos
nos pinos da UART, onde as tensões variam entre 0 e 3 volts. Note neste
gráfico que o bit 0 no gráfico inferior resulta na tensão de +10 volts no
gráfico superior, e o bit 1 no gráfico inferior corresponde à tensão de –10
volts no gráfico superior. Os pontos indicados como “1” e “2” à esquerda do
grá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 na
linha.

As figuras 23 e 24 mostram os circuitos dos chips 1488 e 1489. Cada um


deles possui 4 portas. As figuras mostram a constituição interna de cada
porta. 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 placas
antigas o 1488 e o 1489 eram instalados em soquetes, o que tornava fácil a
sua substituição em caso de queima. Atualmente esses chips são soldados
diretamente nas placas, e são do tipo SMD de reduzido tamanho, o que
dificulta 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, da
National. Essas UARTs ficavam em placas de expansão ISA de 8 bits. No
início eram placas contendo apenas duas interfaces seriais. Depois surgiram
as placas Multi I/O, contendo duas interfaces seriais, uma interface paralela
um relógio permanente (essa placas eram usadas no XT), interface para
drives de disquetes e em alguns casos, uma expansão de memória. Já na era
dos ATs, encontrávamos as placas conhecidas informalmente como IOSA,
nas quais existiam duas portas seriais, uma porta paralela e uma interface de
jogos. Mais tarde as portas paralelas eram encontradas na placa IDEPLUS, e
finalmente em meados dos anos 90, passaram a ser integradas na placa de
CPU.

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 deram
lugar ao 16450 e finalmente ao 16550. Atualmente as UARTs fazem parte do
chip conhecido como Super I/O, mas seus circuitos são inteiramente
compatíveis com o 16550.

O 8250 podia operar com uma velocidade máxima de 19.200 bits por
segundo e era adequado ao barramento do XT, que operava com cerca de 5
MHz. O 16450 era um chip mais veloz. Além de ser compatível com o
barramento do AT, de 8 MHz, atigia velocidades mais elevadas, chegando a
38.400 bits por segundo. O chip 16550 é ainda mais avançado. Possui
circuitos FIFO de entrada e saída, cada um deles com 16 bytes. Graças ao
FIFO, o processador ficava menos sobrecarregado nas comunicações seriais,
já que a cada interrupção podia enviar ou receber vários bytes. Atinge
velocidades de até 115.200 bits por segundo. Essas UARTs foram produzidas
com encapsulamento DIP de 40 pinos, mas deram lugar a outros
encapsulamentos 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 FIFO


8250 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 (por
exemplo, a 16750 tem FIFOs de 64 bytes) e suportam taxas de transmissão
mais elevadas, chegando em torno de 1 Mbit/s. Os chips Super I/O
modernos também possuem UARTs compatíveis com a 16550, mas muitos
possuem FIFOs maiores e suportam taxas de transmissão mais elevadas.
Uma outra UART comum é a 16552. No seu interior existem duas UARTs
compatíveis com a 16550.

Baud Rate
Esta é uma característica muito importante das comunicações seriais. Muitos
a 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 exatamente
o número de bits de dados transmistidos a cada segundo pela interface. Sua
unidade é o baud, e seu valor é o inverso do período de transmissão de 1
bit. Por exemplo, se tomarmos um baud rate de 4.800 bauds, significa que
cada bit é transmitido em um tempo de:

1 s / 4800 = 0,00020833 s

Ou seja, 208,33s.

É errado obter a taxa de transferência de uma porta serial fazendo a divisão


do baud rate por 8. Por exemplo, 4800 bauds não é o mesmo que 4800 bits
por 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,33s. Nesta comunicação, cada byte está utilizando ao todo
11 bits, sendo 8 de dados, 1 start bit, 1 bit de paridade e 1 stop bit. O tempo
total gasto com cada byte é de 11 x 208,33s, ou seja, 2.281,66s. Dividindo
1 segundo por este valor, chegamos ao número de bytes transmitidos por
segundo, ou seja, 436 bytes por segundo. Como vemos, é errado dividir o
baud 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 um
total de 10 bits, portanto a taxa de transferência será de 4800 / 10 = 480 bytes
por segundo.

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

O baud rate de uma UART é gerado a partir da freqüência de um cristal


externo e de um divisor interno. O divisor pode ser programado com
qualquer 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 seriais
operam apenas com alguns valores padronizados de baud rate, como:

50 2400 * 33600
75 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). No
computador, o conector é do tipo macho, e no cabo são usados conectores
fêmea. Tome cuidado pois existem cabos seriais de vários tipos. Os cabos de
extensão, nos quais cada pino de um conector é ligado ao pino
correspondente no outro conector, são os mais usados. Esses cabos podem
ser do tipo fêmea-macho ou fêmea-fêmea. Seu comprimento máximo
permitido, 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ção
direta 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ão
RS-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 e


DB25-DB25. A grande variedade de tipos de cabos seriais é conseqüência de
existirem 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 diretas
pino a pino (ex: 1-1, 2-2, 3-3, 4-4, etc.). Esses cabos podem ser usados como
extensões ou então para ligar a interface serial a um modem externo. Os
cabos chamados de null modem servem para ligar dois computadores pelas
interfaces seriais, sem utilizar modems. O funcionamento desses cabos
consiste em fazer cada um dos computadores a ele ligados, “pensar” que
existe 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) e
CTS (Clear to Send, ou permitido transmitir) são usados como um protocolo
de hardware para controlar o fluxo de dados entre a interface e um modem
externo. Existem várias formas de fazer a interface “pensar” que existe um
modem pronto para receber. Uma delas é ligar o pino RTS no pino CTS da
interface receptora, e vice-versa. Outra forma é ligar entre si os sinais CTS e
RTS em ambos os conectores do cabo. A figura 28 mostra os diagramas de
dois cabos “null modem” com conectores DB9.

Figura 14.28
Dois tipos de cabos “null modem” usando
conectores DB9.

Os pinos RTS e CTS formam um protocolo de hardware que é executado


automaticamente pelas UARTs, sem intervenção do processador. Antes de
transmitir 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 quando
uma UART estiver pronta para receber dados. O mesmo dipo de protocolo
pode ser implementado pelas linhas DTR e DSR (Data Terminal Ready e
Data Set Ready). A diferença é que esses sinais são controlados por software
pelo processador, que pode ativar o DTR e checar o DSR através de
instruções IN e OUT. O método utilizado depende do programa de
comunicação. Portanto cada programa de comunicação utiliza um cabo null
modem apropriado.

Um dos padrões de null modem é o chamado “cabo Laplink”. É o padrão


mais usado por programas de comunicação entre dois PCs. Era o cabo
utilizado 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 pela
Microsoft para os programas Interlink/Interserver (comunicação de PCs no
MS-DOS 6) e pela Conexão direta via cabo (DCC – Direct Cable
Connection), introduzida no Windows 95. Este tipo de cabo tornou-se tão
popular 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 para
comunicação de dados, usando o software DCD do Windows, compre um
cabo “Laplink serial”, encontrado no comércio com este nome, ou chamado
de “null modem”. Escolha o cabo com o tipo de conector adequado ao seu
caso. Note entretanto que a comunicação pela interface paralela é mais
veloz, 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á comprar


um cabo “straight” (direto), também conhecido como “cabo serial para
modem”. A situação fica difícil se sua intenção é ligar uma impressora serial
no PC. O problema aqui é que os cabos seriais de impressora não são
padronizados, 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 de
IRQ e 8 endereços de E/S. Os endereços e IRQs padronizados para essas
portas são:

Porta Endereços Interrupção


COM1 3F8-3FF IRQ4
COM2 2F8-2FF IRQ3
COM3 3E8-3EF IRQ4
COM4 2E8-2EF IRQ3

Note que apesar de serem permitidos 4 endereços de E/S, não existem linhas
de IRQ exclusivas para a COM3 e a COM4. Elas devem compartilhar as
interrupções que eram destinadas à COM1 e à COM2, que são a IRQ4 e a
IRQ3, respectivamente. As linhas de IRQ dessas interfaces seriais deveriam
utilizar um tipo de circuito chamado open collector (coletor aberto).
14-36 Hardware Total
Figura 14.29
Funcionamento do compartilhamento de
interrupçõ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 em
placas de expansão, estão ambas ligadas ao pino do barramento ISA relativo
ao IRQ4. Os circuitos das portas serias devem ter suas saídas do tipo open
collector (coletor aberto). A característica dessas saídas é que, ao gerarem um
bit 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 paralelo
através de um único resitor, como mostra a figura. O sinal de ambas é ligado
na linha IRQ4, ativada em nível 0. Quando ocorre uma interrupção IRQ4,
caberá à rotina de atendimento, interrogar ambas as interfaces seriais que
usam esta IRQ, através da leitura do seu status. Assim apenas a interface que
realmente gerou a interrupção terá seu dado lido (ou no caso de
transmissões, terá dados transmitidos). Se as duas interfaces gerarem
interrupção ao mesmo tempo, ambas serão atendidas.

O processo de compartilhamento de interrupções infelizmente não pode ser


utilizado na prática, pois os fabricantes de hardware e de software não
seguiram à risca as especificações da IBM. Não usavam portas de coletor
aberto nas suas interfaces, e as rotinas de atendimento (os drivers) nem
sempre interrogam as duas interfaces. Na prática as interfaces seriais devem
utilizar interrupções exclusivas, sem compartilhamento.

Para que as quatro portas seriais possam ser utilizadas, é preciso remanejar as
interrupções utilizadas. Durante os anos 80 e até meados dos anos 90, isto era
feito através de jumpers nas placas que possuíam portas seriais. A partir de
meados 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 que
nem sempre existe a flexibilidade de escolha de outras IRQs além da 3 e da
4. Um exemplo em que isso pode ser feito é nas interfaces seriais existentes
em modems. É perfeitamente possível configurar uma dessas interfaces
seriais 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árias
interfaces seriais. As multiseriais mais comuns possuem 4, 8 e 16 portas
seriais. É possível instalar várias dessas placas, e através de drivers
apropriados, são reconhecidas como COM1, COM2, ... COM8, ..., COM16,
e assim por diante. As interrupções usadas pelos drivers dessas interfaces são
compartilhadas. Placas multiseriais são usadas em provedores de acesso à
Internet, possibilitando a ligação de um grande número de modems
externos.

Figura 14.30
Placa multiserial com 16 portas.

Existem placas multiseriais baseadas no barramento ISA, porém as mais


modernas usam o barramento PCI. Essas placas utilizam conectores na sua
parte traseira com um elevado número de pinos, nos quais são ligados cabos
que as acompanham, como mostra a figura 31. Nesses cabos conectamos os
modems.
14-38 Hardware Total
Figura 14.31
Placa multiserial com 8 portas,
acompanhada dos cabos.

Comunicação por luz infravermelha


Este é um modo de comunicação que não utiliza fios, e sim, feixes de luz
infravermelha. É o mesmo tipo de comunicação usada pelo controle remoto
de aparelhos de TV, som, etc. Os padrões de comunicação são regidos ela
IRDA – Infrared Data Association. É uma organização formada por mais de
100 fabricantes com o objetivo de estabelecer padrões visando a
compatibilidade entre todos esses produtos. Tais comunicações recaem em 3
padrões:

IRDA Data: Usado na transmissão de dados em alta velocidade, envolvendo


transferência de arquivos, sons, imagens, etc.

IRDA Control (ou IrBus): Usado na comunicação com dispositivos de


controle, como teclado, mouse e joystick.

Legacy Remote Control: É uma miscelânea de métodos utilizados por


dispositivos de controle remoto que não seguiam padrões IRDA. Aos poucos
novos produtos estão migrando para o padrão IRDA Control.

IRDA Data
Este protocolo é usado na comunicação entre dois PCs para transferência de
dados, bem como dispositivos que transmitem grandes quantidades de
informação. Possibilita por exemplo, a comunicação entre um PCs e
Notebooks e Handhelds (PCs de mão), impressoras, scanners, câmeras
digitais e quaisquer dispositivos que mantenham um elevado tráfego de
dados. 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 nova
especificação IRDA 1.1 permite velocidades de até 4.000.000 bits/s. O
transmissor e o receptor devem estar separados por uma distância máxima
que 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 se
comunicam.

A figura 31 mostra o acoplamento ótico entre dois dispositivos que se


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

Os pacotes de dados são finalizados por um CRC de 16 bits para as


velocidades até 1.152.000 bps e de 32 bits com a taxa de 4.000.000 bps. A
tabela abaixo resume as taxas de transferência do padrão IRDA Data 1.1.

2.400 bps 38.400 bps 576.000 bps


9.600 bps 57.600 bps 1.152.000 bps
19.200 bps 115.200 bps 4.000.000 bps

IRDA Control
A especificação IRDA Control, também conhecida como IrBus ou IRDA
CIR (Control IR), é usada para periféricos de controle que não necessitam
de taxas de transferência elevadas, como teclado, mouse e joystick, e
aparelhos de controle remoto em geral. No computador, o ângulo de
abertura permitido é de até 50. Nos disposistivos o ângulo varia de 15 a
40, dependendo do dispositivo. Um ângulo de abertura pequeno no
14-40 Hardware Total
dispositivo significa que devemos apontá-lo para o computador. Já o
computador deve aceitar um ângulo de abertura maior, graças a um sistema
de lentes. Isto significa que os dispositivos não precisam necessariamente
estar príximos ao eixo ótico do sensor do computador. A taxa de transmissão
no padrão IRDA Control é de 75k bps.

Porta serial COM2 e IRDA


Praticamente todos os PCs atuais possuem uma porta IRDA. Note que este
tipo de porta opera de forma muito similar a uma porta serial. Através do
CMOS Setup podemos configurar a porta COM2 para operar no modo
normal ou no modo IRDA. Feita esta configuração, devemos instalar um
transceptor infravermelho, que é uma pequena placa ligada a um cabo. Este
dispositivo é instalado na parte frontal do gabinete, possibilitando a
comunicação com dispositivos no padrão IRDA. Infelizmente a maioria das
placas de CPU, apesar de terem esta conexão, não são acompanhadas do
módulo infravermelho, que é opcional.

Interface de teclado e mouse


Durante muito tempo a interface serial foi a mais utilizada para conexão do
PC com um mouse. Este tipo de conexão tem algo de muito semelhante em
relação à interface de teclado: ambas transmitem dados no formato serial. É
correto portanto afirmar que o teclado do PC é um dispositivo serial, apesar
de não ser ligado a uma UART. Nos computadores da linha PS/2, a IBM
criou uma segunda interface similar à utilizada pelo mouse. Esta interface
passou a ser chamada de “interface para mouse PS/2”. O método de
comunicação é inteiramente similar ao do teclado, inclusive os atuais chips
controladores de teclado existentes nas placas de CPU também são
controladores do mouse PS/2.

O chip 8042
Desde o lançamento do IBM PC AT, a interface de teclado era formada por
um chip 8042. Este chip é um microcontrolador, ou seja, um
microprocessador com sua própria memória ROM interna, RAM e circuitos
de E/S. Em muitas placas de CPU este chip possui uma etiqueta com a
indicação “Keyboard BIOS”. Nas placas de CPU modernas, a interface de
teclado (compatível com o 8042) é incorporada ao Super I/O. A figura 33
mostra o diagrama de blocos de uma interface de teclado, contida em um
chip Super I/O.
Capítulo 14 – Interfaces 14-41
Figura 14.33
Diagrama da interface de teclado e
mouse.

O centro da interface de mouse é o processador de 8 bits, compatível com o


8042, 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 da
placa de CPU através do barramento de dados, e também a comunicação
com o teclado e com ou mouse através dos sinais KBCLK, KBDAT, MCLK
e 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, e
també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 pode
transmitir comandos de configuração. Na situação de repouso, os sinais de
clock e dados ficam com o valor binário 1. O clock começa a operar
enviando 11 pulsos, enquanto a linha de dados transmite 11 bits: start bit, 9
bits de dados, um bit de paridade e 1 stop bit, ou seja, é um formato similar
ao utilizado pelas interfaces seriais. A diferença básica é que nesta
transmissão é enviado um sinal de clock, ou seja, trata-se de uma transmissão
sí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. As
linhas KDAT e KCLK são os dados e clocks do teclado, e as linhas MDAT e
MCLK são os dados e clock do mouse. Note que esses quatro sinais são
bidirecionais, permitindo a comunicação nos dois sentidos. Os sinais KIRQ e
MIRQ são usados para gerar as interrupções do teclado e do mouse, e
devem ser ligados respectivamente aos pinos IRQ1 e IRQ12 do controlador
de interrupções.

*** 35% ***


Figura 14.35
Interface de teclado e mouse.

O sinal Gate A20 é usado para habilitar o funcionamento da área da


memória chamad HMA (High Memory Area), como explicaremos mais
adiante.

O teclado tem ainda a linha KBRST (Keyboard Reset). Nos XTx, este sinal
era efetivamente enviado para o teclado, através do pino 3 do conector DIN.
Este comando fazia o processador interno do teclado realizar um Reset. Nos
teclados padrão AT (usados pelos PCs atuais) não existe o sinal de Reset. Ao
invés disso, foi adicionado um comando de Reset, que o PC envia para o
teclado. Esta alteração foi possível graças ao fato da interface de teclado ter
se tornado bidirecional. O antigo sinal KBDRST é usado agora para resetar
o 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 mouse
PS/2.

A figura 36 mostra o diagrama as interfaces de teclado e mouse. Como


sabemos, 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 o
teclado 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 para
PCs são baseados no chip 8049, que também é um microcontrolador, assim
como 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 chipsets
modernos, o 8049, originalmente produzido pela Intel, continua sendo
produzido por diversos outros fabricantes, em versões compatíveis.
14-44 Hardware Total
*** 100%
***
Figura
14.37
Esquema de um
teclado.

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 cada
cruzamento de um sinal R com um sinal C, temos uma tecla. A partir de
uma varredura seqüencial feita nos sinais C, acompanhada de leituras nos
sinais R, é possível detectar quais teclas estão pressionadas. O código da
tecla é enviado ao PC pelas linhas DATA e CLK. Note que o chip também
comanda 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 é feito
por um único chip que detecta os movimentos nos eixos X e Y, bem como o
pressionamento dos botões. A comunicação com o PC é feita pelos sinais
CLK 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 é formado


por 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 pode
determinar os movimentos X e Y a serem enviados para o PC. Note que
també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 do
mouse. Note que existem dois sensores óticos diametralmente opostos (X1 e
X2 para uma roda, Y1 e Y2 para a outra). O grande truque é que os dois
sensores não são exatamente opostos. Quando um deles está totalmente
exposto, o outro está parcialmente exposto. Conforme a roda gira, os
sensores captam ondas retangulares, e a posição relativa dessas duas ondas
indica o sentido do movimento, como mostra a figura 40.

Figura 14.40
Detectando movimentos para a esquerda
e para a direita.
14-46 Hardware Total
Outra roda similar é usada para o eixo Y, detectando movimentos para cima
e para baixo.

Dados do teclado
Nos teclados muito antigos, anteriores à era dos PCs e mesmo os não tão
antigos, mas usados em terminais alfanuméricos, cada tecla pressionada
resulta 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 pressionamos


uma tecla, é enviado não o seu código ASCII, mas uma outro código criado
pela IBM especificamente para os teclados dos PCs. São chamados SCAN
CODES. Muitas teclas têm códigos formados por um único byte, enquanto
outras têm códigos formados por 2 o mais bytes. O interessante é que
existem 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 conjunto
de dados para o PC, chamado report. O formato deste report depende do
modo 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 e
Y.

Figura 14.42
Report em um mouse PS/2.

No modo Microsoft, o report tem 4 grupos de 7 bits. O primeiro grupo envia


o status dos botões direito e esquerdo, bem como parte dos bits das
coordenadas X e Y. Os dois grupos seguintes enviam o restante dos bits das
coordenadas X e Y. O quarto grupo envia apenas o status do botão central
do mouse. No caso de modelos com scroll, este quarto grupo também envia
informaçõ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 de


controle de mouse operam apenas no modo Microsoft, outros apenas no
modo PS/2, outros em ambos os modos. Da mesma forma, certos modelos
aceitam 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 um
conector 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 de
interface, o que nem sempre é feito pelos fabricantes.

O sinal A20
O sinal A20 foi criado para dar acesso aos endereços de memória entre
1024kB e 1088kB quando o processador está operando no modo real. Nesta
modalidade os processadores possuem um endereçamento de memória
similar ao de um XT, com apenas 1024 kB (1 MB), já que o seu processador
tem apenas 20 bits de endereço (A0-A19). Mesmo nos processadores mais
novos, com mais de 20 bits de endereço, todos os bits a partir de A20 ficam
com valor zero quando operando no modo real.
14-48 Hardware Total
Com o sinal A20, o processador pode acessar uma área de 64 kB, localizada
a partir do endereço 1M, chamada HMA (High Memory Area). O
funcionamento é o seguinte: ao fazer um registrador de segmento ter o valor
FFFF, 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çado
o byte seguinte, ocorrerá um “Vai 1” no cálculo de endereço, que é
automaticamente transformado em zero. Por exemplo, com segmento FFFF e
offset 0010, o endereço resultante será 100000 (1M), que é truncado para
00000. 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 o
teclado propriamente dito, mas ocorre que o 8042 tinha este bit de uso geral
sobrando, e foi usado para implementar o A20). Como resultado, o bit A20
do processador, que é truncado, é substituído pelo A20 que é gerado pelo
8042. Assim o processador, que deveria estar acessando a área de memória a
partir 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 do
sistema operacional de modo real (o MS-DOS, por exemplo) seja carregado
nesta área, deixando mais memória convencional livre para seus aplicativos
de modo real.

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

Das könnte Ihnen auch gefallen