• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
48
0
0

Texto

(1)

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

(2)

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

(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.

(4)

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

Strobe  O PC envia para a interface um pulso que indica que o dado queestá no barramento D0-D7 pode ser lido. D0 – D7  Barramento de dados.

ACK  O dispositivo informa à interface que o dado foi recebido comsucesso. Busy  O dispositivo informa que ainda não está pronto para receber opró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 Feedautomaticamente 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

(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

SPP 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 onibble, 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.

(6)

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

SPP NomeBi-Dir Descrição

Strobe HostClk  O PC envia para a interface um pulso que indica que odado foi recebido. D0 – D7 D0 – D7  Barramento de dados, bidirecional.

(7)

Busy PtrBusy  O dispositivo informa que ainda não está pronto paraenviar o próximo dado. Autofeed HostBusy  A interface indica à impressora que ainda não podereceber dados. Error DataAvail  O dispositivo indica à interface que o dado está disponívelpara 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

(8)

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

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ções de 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 linha volta 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 umaleitura ou escrita, de acordo com o sinal Write. INIT Reset  Com esta linha a interface reseta o dispositivo.

(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.

(10)

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.

(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

(12)

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

SPP 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 ainterface. 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 fasede 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

(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)

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

(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.

(16)

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.

(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.

(18)

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.

(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

(20)

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).

(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.

(22)

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

(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:

(24)

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.

(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

(26)

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,

(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,

(28)

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).

(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

(30)

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.

(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.

(32)

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 *

(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

(34)

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

(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).

(36)

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

(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.

(38)

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

(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

(40)

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.

(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.

Referências

Documentos relacionados

aeruginosa se fazem necessários para revelar se existe ou não relação genética entre os isolados resistentes recuperados das amostras de água superficial e os isolados de

Receptor age sobre o emissor Tb: regulação (sistema autônomo, comunicação circular).. Entropia e age sobre o emissor Tb: regulação (sistema autônomo, comunicação

As curvas de nível de z = f(x, y), que são uma boa forma de representar graficamente esta função, são as curvas no plano xy obtidas como soluções de equações da forma f(x, y) =

• Refletância (ou perda de retorno) é o valor em dB da atenuação do sinal indesejado que volta para trás devido da qualidade da conexão (evento reflexivo) (quanto maior esse

representação gráfica có rre go d o b aú SEDE CURRAL ENGENHO entrada açude GALINHEIRO açude 5 10 0 40 ANTIGA TULHA MOINHO ESTÁBULO pomar Implantação representação

ESCOLAS ESTADUAIS ENDEREÇOS BAIRRO

Durante la fase di spegnimento non sarà possibile riaccendere la stufa, terminata la fase di spegnimento il sistema si riposizio- na automaticamente in stand-by (si visualizza

Com o cabo Thunderbolt™ 3 (incluído), a base expande a conectividade até 8 portas, incluíndo áudio, Ethernet Gigabit, DisplayPort, portas Thunderbolt™ 3 USB-C e USB 3.1 Gen 1