• Nenhum resultado encontrado

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.

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.

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.

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.

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

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.

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

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.

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.

Documentos relacionados