Você está na página 1de 4

TECLADO PS2 9.1.

INTRODUCCIN
El puerto PS2 se introdujo en la Personal System / 2, ordenadores personales de IBM. Es un interfaz de un amplio apoyo para un teclado y un mouse para comunicarse con el host. El Puerto PS2 contiene dos cables para fines de comunicacin. Un cable es para los datos, que transmite en un flujo en serie. El otro cable es para la informacin del reloj, que especifica cuando los datos son vlidos y se pueden recuperar. La informacin es transmitida como un paquete de 11-bit que contiene un bit de inicio, 8 bits de datos, un bit de paridad par y un bit de parada. Mientras que el formato bsico del paquete es idntico para un teclado y un mouse, la interpretacin de los bits de datos es diferente. La placa de prototipo FPGA tiene un puerto PS2 y acta como host. En este captulo revisaremos la interfaz de teclado y para abarcar la interfaz del ratn en el captulo 10. La comunicacin del puerto PS2 es bidireccional y el host puede enviar un comando para el teclado o el ratn para ajustar ciertos parmetros. Para nuestros propsitos, la comunicacin bidireccional apenas se requiere para el teclado PS2, y por lo tanto nuestro estudio se limita a una direccin, desde el teclado a la placa de prototipos. El diseo bidireccional se examina en la interfaz del ratn en el captulo 10.

Ilustracin 1 Diagramas de tiempos de un puerto PS2

9.2. 9.2. 1. Interfaz fsica de un puerto PS2


Adems de lneas de datos y de reloj, el puerto PS2 incluye conexiones para la energa y tierra. La energa es suministrada por el host. En el puerto original de PS2, Vcc es de 5 V y las salidas de las lneas de datos y de reloj son de colector abierto. Sin embargo, los teclados ms actuales y los mouse pueden trabajar bien con 3,3 V. Para un teclado viejo y el mouse, la alimentacin de 5 V puede ser obtenida por conmutacin de J2 en el tablero de S3. El FPGA todava debe funcionar adecuadamente ya que sus 110 pines pueden tolerar una entrada de 5V.

9.2. 2. Protocolo de comunicacin de dispositivo-host


Un dispositivo de PS2 y su host se comunican a travs de paquetes. El diagrama de tiempos bsico de transmitir un paquete de un dispositivo de PS2 a un host se muestra en la ilustracin 1, en la que los datos y las seales de reloj son llamados con ps2d y ps2c, respectivamente. Los datos se transmiten en un flujo en serie, y su formato es similar a la de un UART. La transmisin comienza con un bit de inicio, seguido de 8 bits de datos y un bit de paridad impar, y termina con un bit de parada. A diferencia de una UART, la informacin del reloj se lleva en una seal de reloj separada, ps2c. El flanco de bajada de la seal de ps2c indica que el bit correspondiente a la lnea ps2d es vlido y se puede recuperar. El perodo de reloj de la seal ps2c esta entre 60 y 100 s (es decir

entre 10 KHz y 16,7 KHz), y la seal ps2d es estable por lo menos 5 ps antes y despus del flanco de bajada de la seal ps2c.

9.2. 2. Diseo y cdigo


El diseo del subsistema de recepcin de puerto PS2 es algo similar a la de un receptor UART. En lugar de utilizar el esquema de sobremuestreo, el flanco de bajada de la seal ps2c es utilizado como punto de referencia para recuperar datos. El subsistema incluye un circuito detector de flancos descendentes, que genera una seal de un ciclo de reloj en el flanco de bajada de la seal de ps2c, y el receptor, se desplaza dentro y ensambla los bits en serie. Debido al potencial de ruido y lenta transicin en el circuito detector de borde, se aade un sencillo circuito de filtrado para eliminar problemas tcnicos. El circuito se compone de un ciclo de 8 bits de registro y devuelve un 1 o 0 cuando ocho 1s o 0s son recibidos. Los fallos de menos de ocho ciclos de reloj sern ignoradas (es decir, filtradas). La seal de salida filtrada alimenta a continuacin al circuito de deteccin de flancos descendente regulares. El grfico ASMD del receptor se muestra en la Figura 9.2. El receptor se encuentra inicialmente en estado de reposo. Se incluye una seal de control adicional, rx-en, que se utiliza para habilitar o desactivar la operacin de recepcin. El propsito de la seal es de coordinar la operacin bidireccional. Se puede ajustar a 1 para la interfaz de teclado. Despus de la primera seal de flanco descendente y la seal rx-en se afirman, los cambios en la FSMD bit de inicio y pasa al estado de dps. Dado que los datos recibidos son en formato fijo, cambiamos los 10 bits restantes en un solo estado en lugar de utilizar los datos por separado, la paridad y de parada. El FSMD luego pasa al estado de carga, en el que se ofrece un ciclo de reloj adicional para completar el desplazamiento del bit de parada, y la seal de psrx-done-tick es invocada para un ciclo de reloj. El cdigo HDL consiste en el circuito de filtrado y un FSMD, que sigue el grfico ASMD. Se muestra en el listado 9.1. No hay ningn circuito de deteccin de error en la descripcin. Un diseo ms robusto debe comprobar la correccin de la partida, la paridad y los bits de parada y se compone de un temporizador de vigilancia para evitar la teclado se bloquee en un estado incorrecto. Esto se deja como un experimento al final del captulo.

9.3. Cdigo de escaneo del teclado PS 9.3. 1. Descripcin del cdigo de escaneo
Un teclado consta de una matriz de teclas y un microcontrolador integrado que monitorea (es decir, escanea) las actividades de las teclas y en consecuencia enva el cdigo de escaneo. Tres tipos de actividades del teclado son observadas: Cuando una tecla es presionada, el cdigo de marca es transmitido. Cuando una tecla se mantiene constantemente presionada, una condicin conocida como typematic, el cdigo de marca se transmite repetidamente a una tasa especfica. De forma predeterminada, un teclado PS2 transmite el cdigo de marca 100 ms despus de que una tecla ha sido pulsada durante 0,5 segundos. Cuando se suelta una tecla, se transmite el cdigo de la rotura de la llave. El cdigo de marca de la parte principal de un teclado de PS2 se muestra en la Figura 9.3. Es normalmente de 1 byte de ancho y representado por dos nmeros hexadecimales. Por ejemplo, la marca de cdigo de la tecla A es IC. Este cdigo puede ser transportado por un paquete cuando se transmiten. El hacer cdigos de unas cuantas teclas de propsito especial, que se conocen como

las teclas extendidas, pueden tener 2 a 4 bytes. Algunas de estas teclas se muestran en la Figura 9.3. Por ejemplo, la marca de cdigo de la flecha superior de la derecha es EO 75. Se necesitan varios paquetes para la transmisin. Los cdigos de rotura de las teclas normales constan de FO seguido por el cdigo de marca de la tecla. Por ejemplo, el cdigo de ruptura de la tecla A es FO IC. El teclado PS2 transmite una secuencia de cdigos de acuerdo con las actividades clave. Por ejemplo, cuando se presiona y suelta la tecla, el teclado transmite primero el cdigo de marca y luego el cdigo de ruptura:

Si tenemos la tecla por un rato antes de soltarlo, se transmitir el cdigo de marca varias veces: 1C 1C 1C 1C FO 1C Varias claves pueden ser presionadas al mismo tiempo. Por ejemplo, podemos pulsar primero la tecla shift (cuyo cdigo de marca es 12) y luego la tecla A, y se suelta la tecla A y luego se suelta la tecla shift. La secuencia de cdigo de transmisin sigue los cdigos de los dos del cdigo de marca y del cdigo de ruptura: 12 1C FO 1C FO 12 La secuencia anterior es la forma en que normalmente obtenemos una A mayscula. Tenga en cuenta que no hay ningn cdigo especial para distinguir las teclas minsculas y maysculas. Es la responsabilidad del dispositivo principal llevar un registro de si se pulsa la tecla de maysculas y en consecuencia determinar el caso.

9.3. 2. Cdigo de escaneo del circuito monitor.


El cdigo de escaneo del circuito monitor controla la llegada de los paquetes recibidos y muestra los cdigos de escaneo en la ventana HyperTerrninal de un PC. El enfoque de diseo bsico consiste en dividir primero el cdigo de escaneo recibido en dos partes de 4 bits y tratarlos como dos dgitos hexadecimales y, a continuacin, convertir los dos dgitos en palabras de cdigo ASCII y enviar las palabras de una PC a travs de la UART. Los cdigos de exploracin recibidas deben mostrarse similar al ejemplo de las secuencias anteriores. El programa se muestra en el listado 9.2. Un FSM se utiliza para controlar el funcionamiento general. Se inicia la operacin de UART cuando se recibe un nuevo cdigo de escaneo (como es indicada por la afirmacin de exploracin-hechoseal). El FSM circula a travs de la send1, send0, y estados sendb, en el que los cdigos ASCII del dgito hexadecimal superior, dgito hexadecimal inferior, y el espacio en blanco se escriben en el UART.

Recordemos que el UART tiene una FIFO de cuatro palabras, y por lo tanto no se producir desbordamiento. Tenga en cuenta que el receptor UART no se utiliza y los puertos correspondientes se asignan a constantes o se deja en blanco.

9.4. Circuito de la interfaz del teclado.


Como se discuti en la Seccin 9.3.1, una secuencia de paquetes se transmite incluso para las actividades del teclado simples. Ser un poco complicado si queremos cubrir todas las combinaciones posibles. En esta seccin, asumimos que una nica tecla regular se presiona y se suelta a la vez y se disea un circuito que devuelve el cdigo de marca de esta tecla. Este diseo proporciona una forma sencilla de enviar un carcter o dgito al protoboard y debe ser satisfactorio para nuestros propsitos.

9.4.1. Diseo bsico y cdigo HDL


El circuito de teclado, como un UART, es un circuito perifrico de un sistema grande y necesita un mecanismo para comunicarse con el sistema principal. Los esquemas de embanderamiento y buffering discutidos en la Seccin 8.2.4 se pueden aplicar para el circuito de teclado tambin. Utilizamos un bfer FIFO de cuatro palabras como la interfaz en este diseo. El esquema conceptual de nivel superior se muestra en la Figura 9.4. Consiste en el receptor PS2, un bfer FIFO, y una FSM de control. La idea bsica es usar el FSM para realizar un seguimiento del paquete FO del cdigo de descanso. Tras su recepcin, el siguiente paquete debera ser el cdigo de marca de la tecla y se escribe en el bfer FIFO. Tenga en cuenta que este esquema no se puede aplicar a las teclas extendidas ya que sus cdigos de marca involucran a mltiples paquetes. El cdigo HDL correspondiente se muestra en el listado 9.3.La parte principal del cdigo es el FSM, que las pantallas para el cdigo de descanso y coordina el funcionamiento de los otros dos mdulos. Comprueba los paquetes recibidos en el estado de wait_brk continuamente. Cuando se detecta el paquete FO, que se mueve al estado de get_code y espera a que el siguiente paquete, que es el cdigo de la tecla hacer. El FSM se afirma la seal de code_done_tick para un ciclo de reloj y vuelve al estado de wait_brk.

9.4.2. Circuito de Verificacin


Diseamos una interfaz serial simple y el circuito de decodificacin para verificar el funcionamiento de la interfaz de teclado PS2. El diagrama de bloques de nivel superior se muestra en la Figura 9.5. El circuito convierte el cdigo de marca de una clave al cdigo ASCII correspondiente y luego enva el cdigo ASCII de la UART. El carcter o los dgitos correspondientes se pueden visualizar en la ventana de HyperTerminal. El cdigo HDL para el circuito de conversin se muestra en el listado 9.4. El cdigo completo para el circuito de verificacin sigue el diagrama de bloques y se muestra en el listado 9.5.

Você também pode gostar