8.1, 8.2, 8.3, 8.4

17
CAPITULO 8 TECLADO de PS2 8.1. INTRODUCCIÓN Puerto PS2 fue introducido en Systed2 Personal computadoras personales de IBM. Es un ampliamente interfaz soportada por un teclado y el ratón para comunicarse con el host . El puerto PS2 contiene dos hilos para fines de comunicación. Un cable es para los datos , que se transmite en un flujo en serie . El otro cable es para la información del reloj , que especifica cuándo los datos son válidos y se puede recuperar . La información se transmite de forma 1 de 1 bit " paquete " que contiene un bit de inicio , 8 bits de datos , un bit de paridad impar y un bit de parada . Mientras que el formato básico del paquete es el mismo para un teclado y un ratón, la interpretación de los bits de datos es diferente. La placa de prototipo FPGA tiene un puerto PS2 y actúa como anfitrión. Se discute la interfaz de teclado en este capítulo y cubrimos la interfaz del ratón en el Capítulo 9 . La comunicación del puerto PS2 es bidireccional y el anfitrión puede enviar un comando para el teclado o el ratón para ajustar ciertos parámetros. Para nuestros propósitos, la bidireccional comunicación apenas se requiere para el teclado PS2, y por lo tanto la discusión se limita a una sola dirección, desde el teclado a la placa de prototipos . Diseño bidireccional se examinará en la interfaz del ratón en el Capítulo 9 .

Upload: danna-juju

Post on 28-Jan-2016

244 views

Category:

Documents


0 download

DESCRIPTION

resumen español

TRANSCRIPT

Page 1: 8.1, 8.2, 8.3, 8.4

CAPITULO 8

TECLADO de PS28.1. INTRODUCCIÓN

Puerto PS2 fue introducido en Systed2 Personal computadoras personales de IBM. Es un ampliamente interfaz soportada por un teclado y el ratón para comunicarse con el host . El puerto PS2 contiene dos hilos para fines de comunicación. Un cable es para los datos , que se transmite en un flujo en serie . El otro cable es para la información del reloj , que especifica cuándo los datos son válidos y se puede recuperar . La información se transmite de forma 1 de1 bit " paquete " que contiene un bit de inicio , 8 bits de datos , un bit de paridad impar y un bit de parada . Mientras que el formato básico del paquete es el mismo para un teclado y un ratón, la interpretación de los bits de datos es diferente. La placa de prototipo FPGA tiene un puerto PS2 y actúa como anfitrión. Se discute la interfaz de teclado en este capítulo y cubrimos la interfaz del ratón en el Capítulo 9 .

La comunicación del puerto PS2 es bidireccional y el anfitrión puede enviar un comando parael teclado o el ratón para ajustar ciertos parámetros. Para nuestros propósitos, la bidireccional comunicación apenas se requiere para el teclado PS2, y por lo tanto la discusión se limita a una sola dirección, desde el teclado a la placa de prototipos . Diseño bidireccional se examinará en la interfaz del ratón en el Capítulo 9 .

Page 2: 8.1, 8.2, 8.3, 8.4

8.2. PS2 RECIBIENDO SUBSISTEMA

8.2.1. Interfaz física de un puerto PS2

Además de los datos y líneas de reloj, el puerto PS2 incluye conexiones para potencia (es decir, VCC) y de tierra. La energía es suministrada por el anfitrión. En el puerto original de PS2, V,, es de 5 V y las salidas de las líneas de datos y de reloj son de colector abierto. Sin embargo, la mayoría de los teclados y ratones actuales pueden trabajar bien con 3,3 V. Para un teclado viejo y ratón, la alimentación de 5 V se puede conseguir cambiando el 52 puente de la tarjeta S3. El FPGA debe seguir funcionando correctamente ya que sus pines de E / S pueden tolerar entrada de 5 V.

8.2.2. Protocolo de comunicación-Device-to-host

Un dispositivo de PS2 y su huésped se comunican a través de paquetes. El diagrama de temporización básica de transmisión de un paquete desde un dispositivo PS2 a un anfitrión se muestra en la figura 8.1, en la que las señales de datos y de reloj están etiquetados ps2d y PS2C, respectivamente.

Los datos se transmiten en un flujo en serie, y su formato es similar a la de un UART.

Transmisión comienza con un bit de inicio, seguido por 8 bits de datos y un bit de

paridadimpar, y termina con un bit de parada. A diferencia de un UART, la información del reloj selleva en un aparte de la señal de reloj, PS2C. El flanco de bajada de la señal PS2C indica que el bit correspondiente en la línea ps2d es válida y puede ser recuperada. El período de reloj de la señal de PS2C es entre 60 y 100 PS (es decir, 10 kHz a 16,7 kHz), y la señal de ps2d es estable por lo menos 5 PS antes y después del flanco de bajada de la señal de PS2C.

8.2.3. Diseño y programación

El diseño de la PS2 subsistema de recepción de puerto es algo similar a la de un UART receptor. En lugar de utilizar el esquema de sobremuestreo, el flanco descendente de la señal de PS2C se utiliza como punto de referencia para recuperar datos. El subsistema incluye un circuito de detección de flanco descendente, que genera una señal de ciclo de un reloj en el flanco de bajada de la señal de PS2C, y el receptor, que se desplaza en y el montaje de los bits en serie.

El circuito de detección de borde discute en la Sección 5.3.1 se puede utilizar para detectar el flanco descendente y generar una garrapata habilitar. Sin embargo, a causa del ruido potencial y transición lenta, se añade un circuito de filtrado sencilla para eliminar fallos. Su código es

Page 3: 8.1, 8.2, 8.3, 8.4

El circuito se compone de un registro de desplazamiento de 8 bits y devuelve un '1 ' o '0' cuando se reciben ocho consecutivos de de 1 o 0 . Cualquier fallo de menos de ocho ciclos de reloj serán ignorados (es decir , fuera filtrada) . La señal de salida filtrada se alimenta entonces al circuito de detección de flanco descendente regular.

El gráfico ASMD del receptor se muestra en la Figura 8.2 . El receptor está inicialmente en el estado de reposo . Incluye una señal de control adicional , RX -es , que se utiliza para habilitar o desactivar la operación de recepción . El propósito de la señal es coordinar el funcionamiento bidireccional . Se puede ajustar a " 1 " para la interfaz de teclado .

Después de la primera señal de flanco descendente y el rx -en señal se afirmó , la FSMD cambia en el bit de inicio y pasa al estado dps . Dado que los datos recibidos son en formato fijo , cambiamos en los 10 bits restantes en un solo estado en lugar de utilizar los datos porseparado , la paridad y detener estados. El FSMD luego pasa al estado de carga , en el que seofrece un ciclo de reloj extra para completar el cambio del bit de parada, y la señal psrx -hecho -tick es invocado para un ciclo de reloj . El código HDL consiste en el circuito de filtrado y un FSMD , que sigue el diagrama de ASMD . Se muestra en el listado 8.1 .

Page 4: 8.1, 8.2, 8.3, 8.4
Page 5: 8.1, 8.2, 8.3, 8.4
Page 6: 8.1, 8.2, 8.3, 8.4

No hay circuito de detección de errores en la descripción. Un diseño más robusto debe comprobar la exactitud de la salida, la paridad y los bits de parada e incluir un temporizador de vigilancia para evitar que el teclado se bloquee en un estado incorrecto. Esto se deja como un experimento en el final del capítulo.

8.3. PS2 TECLADO SCAN CODE

8.3.1. Visión general del código de exploración

Un teclado consta de una matriz de teclas y un microcontrolador integrado que monitorea (es decir, escanea) las actividades de las teclas y envía código de exploración en consecuencia. Se observan tres tipos de actividades principales:

Cuando se pulsa una tecla, se transmite el código de marca de la llave. Cuando una tecla se mantiene pulsada continuamente , una condición conocida como

typematic , la marca código se transmite repetidamente a una tasa específica . Por defecto, un teclado PS2 transmite el código de maquillaje o menos cada 100 ms después de una tecla ha sido pulsada durante 0,5 segundos.

Cuando se suelta una tecla , se transmite el código de la rotura de la llave.

El código de maquillaje de la parte principal de un teclado PS2 se muestra en la Figura 8.3 . Es normalmente

1 byte de ancho y representado por dos números hexadecimales. Por ejemplo , el código de maquillaje de la clave A es 1C . Este código puede ser transportada por un paquete cuando se transmiten. Los códigos de maquillaje de un puñado de llaves de propósito especial , que se conocen como las teclas extendidas , pueden tener 2 a 4 bytes. Algunas de estas teclas se muestran en la Figura 8.3 . Por ejemplo , el código de marca de la flecha superior de la derecha es de EO 75 . Se necesitan los paquetes múltiples para la transmisión .

Los códigos de rotura de las teclas normales constan de FO seguido por el código de maquillaje de la tecla . Por ejemplo , el código de ruptura de la tecla A es FO 1C.

El teclado PS2 transmite una secuencia de códigos de acuerdo a las actividades clave. Para ejemplo, cuando presione y suelte la tecla A, el teclado primero transmite su código de marca y luego el código de ruptura :

1C FO 1C

Si tenemos la llave por un rato antes de soltarlo, se transmitirá el código de maquillaje varias veces:

1C 1C 1 C . . . 1C FO 1 C

Múltiples teclas pueden ser presionadas a la vez. Por ejemplo, podemos pulsar primero la tecla de mayúsculas (cuyo código es marca 12) y luego la tecla A, y suelte la tecla A y luego suelte la tecla de mayúsculas. La secuencia de código transmitido sigue los códigos de cierre y de apertura de las dos claves:

12 1 C FO 1 C FO 12

La secuencia anterior es la forma en que normalmente se obtiene una mayúscula A. Note que no hay es código especial para distinguir las teclas de mayúsculas y minúsculas. Es

Page 7: 8.1, 8.2, 8.3, 8.4

responsabilidad de la dispositivo host para llevar un registro de si se pulsa la tecla de mayúsculas y determinar el caso en consecuencia.

8.3.2. Circuito del monitor Escanear código

El circuito de monitor de código de exploración controla la llegada de los paquetes recibidos y muestra los códigos de exploración en la ventana de HyperTerminal de un PC. El enfoque básico de diseño es primero dividir el código de exploración recibido en dos partes de 4 bits y tratarlos como dos dígitos hexadecimales, y luego convertir los dos dígitos a palabras de código ASCII y enviar la letra de una PC a través de la UART. Los códigos de exploración recibidas se deben mostrar similar a los ejemplos de las secuencias anteriores. El programa se muestra en el listado 8.2.

Page 8: 8.1, 8.2, 8.3, 8.4

Un FSM se utiliza para controlar el funcionamiento global. Se inicia la operación cuando UART se recibe un nuevo código de exploración (indicada por la afirmación de la exploración-tick hecho). El FSM circula a través de la Sendl, send0, y estados sendb, en el que los códigos ASCII de los dígitos superior hexadecimal, menor dígito hexadecimal, 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 abierto.

8.4. TECLADO PS2 CIRCUITO DE INTERFAZ

Como se discutió en la Sección 8.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 sección, se supone que sólo se presiona una tecla normal y lanzado a la vez y el diseño de un circuito que devuelve el código de marca de esta clave. Este diseño proporciona una forma sencilla de enviar un carácter o un dígito a la placa de prototipado y debe ser satisfactorio para nuestros propósitos.

8.4.1. Proyecto básico y de código HDL

Page 9: 8.1, 8.2, 8.3, 8.4

El circuito de teclado, como un UART, es un circuito periférico de un sistema grande y necesita un mecanismo para comunicarse con el sistema principal. Los esquemas de abanderamiento y amortiguadores discutidos en la Sección 7.2.4 se puede aplicar para el circuito de teclado también. Utilizamos un buffer FIFO fourword como la interfaz en este diseño.

El esquema conceptual de nivel superior se muestra en la Figura 8.4. Consiste en el receptor de PS2, una memoria intermedia FIFO, y una FSM de control. La idea básica es utilizar el FSM para realizar un seguimiento del paquete FO del código descanso. Después de que se recibe, el siguiente paquete debe ser el código de marca de esta clave y se escribe en la memoria intermedia FIFO. Tenga en cuenta que este esquema no se puede aplicar a las teclasextendidas desde sus códigos de maquillaje implican múltiples paquetes. El código HDLcorrespondiente se muestra en el listado 8.3.

Page 10: 8.1, 8.2, 8.3, 8.4

La parte principal del código es el FSM, que las pantallas para el código de ruptura y coordina el funcionamiento de los otros dos módulos. Comprueba los paquetes recibidos en el estadode espera-brk continuamente. Cuando se detecta el paquete FO, se mueve al estado de códigoget y espera para el siguiente paquete, que es el código de maquillaje de la tecla. El FSM afirma a continuación la señal de código-hecho-tick para un ciclo de reloj y vuelve al estado de espera-brk.

8.4.2. Verification circuit

Diseñamos un circuito de interfaz y decodificación en serie simple de verificar el funcionamiento de la PS2 interfaz de teclado. El diagrama de bloques de nivel superior se muestra en la Figura 8.5. El circuito convierte el código make de una clave para el código ASCII correspondiente y luego envía el código ASCII de la UART. El carácter o dígito correspondiente se pueden mostrar en la ventana de HyperTerminal. El código HDL para el circuito de conversión se muestra en el listado 8.4.

Page 11: 8.1, 8.2, 8.3, 8.4

El código completo para el circuito de verificación sigue el diagrama de bloques y se muestra en el listado 8.5.

Page 12: 8.1, 8.2, 8.3, 8.4

funcionamiento.