Vous êtes sur la page 1sur 9

Universidad Nacional de Asuncin

Facultad Politcnica

Ingeniera Electrnica Sistemas Digitales I


Procesador de seales para teclado PS/2

Integrantes Edgar Pianez Derlis Rodas Carlos Samudio

Profesor: Lucas Frutos

Ao: 2013

Introduccin
Desde la creacin de las computadoras hasta la actualidad se ha avanzado de una forma constante y rpida en la forma de procesar seales exteriores a ellas. Una forma de solucionar los problemas de comunicacin con los que se encontraron los programadores fue la de usar protocolos de comunicacin estandarizados. Sin los protocolos de comunicacin, el relacionamiento entre los perifricos y las computadoras no sera posible ya que las computadoras no podran manejar datos provedos por los usuarios de ninguna manera, y teniendo en cuenta que la interaccin entre la mquina y el usuario siempre fue una parte importante en el uso de computadoras, eso los hace muy importantes. Aparte de existir los protocolos de comunicacin, estos deben estn estandarizados para facilitar el uso de los sistemas sin importar su fabricante o procedencia, optimizando su compatibilidad. En este proyecto utilizamos el microprocesador Z80 CPU para tratar las seales enviadas por el teclado PS/2 (protocolo serie sncrono) y procesar dichas seales para su tratamiento posterior en otros circuitos.

Marco Terico
Teclado PS/2 Un teclado PS/2 de 104 teclas para PC es un dispositivo razonablemente inteligente. Esto quiere decir que el mismo se encarga de la parte hardware del rastreo de teclas, de evitar los insufribles rebotes y de transmitirnos, mediante una trama perfectamente establecida, los resultados de nuestra manipulacin sobre las teclas. El teclado PS/2 tiene un mapa de teclas a las que se les asigna un cdigo, de uno o dos bytes, para cada una de ellas y que son los cdigos que nos va a trasmitir para indicarnos que tecla se est pulsando. Estos cdigos son los cdigos de rastreo de teclado.

El teclado PS/2 enva un cdigo de rastreo asociado a una tecla al ser sta pulsada y tambin un cdigo de rastreo con el prefijo del byte F0H al ser soltada, tambin conocida como break code. Como ejemplo, para conseguir la letra G mayscula debemos pulsar la tecla shift y la tecla g al mismo tiempo, ese proceso dar la siguiente secuencia de bytes: Pulsar Shift: 12H Pulsar G: 34H Soltar G: F0H 34H Soltar Shift: F0h 12H

O escribiendo solo los bytes que vamos a recibir: 1H, 34H, F0H, 34H, F0H, 12H Nuestra finalidad es recibir e interpretar esta secuencia de bytes y actuar en consecuencia.

Funcionamiento
El teclado PS/2 se conecta mediante cuatro hilos. Dos de ellos son para alimentacin (VCC y GND) y los otros dos son las seales de Data y Clock.

El teclado PS/2 se comunica mediante un protocolo serie sncrono. Utiliza, por lo tanto, una seal de Clock que indica cuando estn disponibles los correspondientes bits en la seal de Data. En reposo la seal de Clock est a nivel alto; a cada pulso a nivel bajo corresponde un pulso a nivel alto o bajo en la seal de Data, que se traducen respectivamente como bits 0 o 1 del dato a transmitir. La trama completa se compone de 11 bits. Siendo el primero un bit de Start, a continuacin los 8 bits del Dato a transmitir envindose primero el LSB, el dcimo es el de paridad y por ltimo un bit de ACK o Stop.

Funcionamiento del Proyecto


El circuito se basa en el muestreo de los bits de la trama de datos y los de Clock enviados por el teclado de forma simultnea. El programa funciona de manera que el primer bit es ignorado, ya que se trata del bit de Start, se procesan los siguientes 8 bits, que son los de informacin, y se ignoran de nuevo los bits correspondientes a la paridad y el fin de la trama, por lo que no son procesados. A continuacin se puede apreciar la primera versin del software utilizado. En este programa el clock del teclado (16khz) est conectado al D1 del bus de datos y la seal Data conectado D0 de bus de datos. El programa consiste en preguntar constantemente el clock (polling) para extraer los datos de la seal Data en cada transicin de 1 a 0 de la seal Clock. El programa empieza a recopilar los datos luego de extraer el bit de START correspondiente de la trama, el procedimiento es el siguiente: se toma el 1er bit de datos se verifica si es un 1 o un 0 el valor se guarda en el 1er bit del registro B. se rota a la derecha con la instruccin RRC (para que luego de tomar los 8 bits de datos este permanezca en su posicin original.)

Se realiza este procedimiento 8 veces, luego ejecuta un retardo que tiene dos funciones: que los bits de PARIDAD y de FIN de la trama se pierdan y que se pierda el dato F0h enviado a consecuencia de soltar una tecla.
L0: ORG 0000H LD A, 00H OUT (00H), A LD C, 08H LD B, 00H IN A, (00H) BIT 1, A JP NZ, L2 BIT 0,A JP NZ, L2 IN A, (00H) BIT 1, A JP Z, L3 IN A, (00H) BIT 1, A JP NZ, L4 BIT 0, A JP Z, L5 SET 0, B RRC B DEC C JP NZ, L3 LD A, B OUT (00H), A LD H, 40H LD L ,0FFH DEC H JP NZ, L6 DEC L JP NZ, L7 JP L0 HALT END

L2:

L3:

L4:

L5:

; 8 estados, se empieza a recolectar un bit de dato ;10 estados ;8 estados ;8 estados ;4 estados, hasta aqu.

L7: L6:

En total para recolectar un bit de la trama usamos 38 clocks que equivalen a 38*(1/455k)= 83Seg. El tiempo debe estar entre 30microsegundos y 60microsegundos por lo tanto por ese motivo cambiamos la frecuencia de trabajo del Z80. Utilizando una frecuencia de 1,2MHZ da 38*(1/1,2MHZ)= 31Seg. Con esta frecuencia se puede extraer perfectamente los datos. Este programa presentaba un error: no realizaba el retorno al comienzo del programa para esperar un nuevo dato sino que se quedaba con el ltimo dato obtenido en la salida. Con el objetivo de corregir este error se ide el siguiente programa, utilizando esta vez una interrupcin del modo 1.

ORG 0000H LD A, 00H OUT (00H), A LD C, 09H LD B, 00H IM1 EI HALT

.ORG 38H IN A, (00H) BIT 0, A JP Z, L1 SET 0, B L1: RRC B DEC C JP Z, L2 EI RETI L2: LD A, B OUT (00H), A LD H, 82H L4: L3: LD L, 0FFH DEC H JP NZ, L3 DEC L JP NZ, L4 ; El retardo se utiliza para ignorar los bits no utilizados ; mencionados anteriormente. Aprox 4,5 milisegundos ; con la frecuencia de 1,2Mhz. ; pregunta por el dato.

Circuito del Proyecto

Conclusin
Podemos concluir diciendo que el correcto funcionamiento del circuito no se alcanz debido a la incompatibilidad de las interrupciones con un tiempo de espera necesario para procesar los datos enviados desde el teclado PS/2, pero que no hubo tiempo disponible suficiente para llegar a la solucin adecuada, por lo que se tiene que resetear el circuito para ingresar nuevos datos. Un error que se corrigi fue el de la obtencin de datos de forma incorrecta. Ya que el sistema necesita de gran precisin para obtener los datos, se tuvo que elevar el CLK del circuito a uno ms alto de forma que los ciclos de mquina permitan el sincronismo adecuado con el CLK del teclado, de lo contrario el programa se atrasaba con respecto a ste ltimo. Si el sistema funciona correctamente es capaz de interpretar perfectamente las seales de la trama en serie que enva el teclado y sacarla de forma paralela en la salida del micro Z80 sin necesidad del reseteo del sistema, enviando una seal del teclado presionado para el procesado en algn dispositivo dedicado a sta tarea.