traduccion mi parte

14
8.3 PS2 CÓDIGO DE ESCANEO DE TECLADO 8.3.1 Visión general del código de escaneo Un teclado consta de una matriz de teclas y un micro controlador integrado que monitorea (es decir, escanea) las actividades de las teclas y envía un código de escaneo en consecuencia. Tres tipos de actividades de la tecla se observan: Cuando se pulsa una tecla, el código de maquillaje (make code) de la tecla se transmite. Cuando una tecla se mantiene pulsada continuamente, una condición conocida como typematic, el código de maquillaje se transmite repetidamente a una velocidad específica. Por defecto, un teclado PS2 transmite el código de maquillaje alrededor de cada 100 ms después de una tecla ha sido presionada por 0.5 segundos. Cuando se suelta una tecla, el código de ruptura de la tecla es transmitido El código de maquillaje de la parte principal de un teclado PS2 se muestra en la Figura 8.3. Esto es normalmente 1 byte de ancho y representado por dos números hexadecimales. Por ejemplo, el código de maquillaje de la tecla A es 1C. Este código puede ser transportado por un paquete cuando se transmiten. El código de maquillaje de un puñado de teclas de propósito especial, que se conoce como las teclas extendidas, puede tener 2 a 4 bytes. Algunas de estas teclas se muestran en la Figura 8.3. Por ejemplo, el código de maquillaje de la flecha superior de la derecha es EO 75. Múltiples paquetes son necesarios para la transmisión. Los códigos de quiebre de las teclas habituales consisten 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 de la tecla. Por ejemplo, cuando pulse y suelte la tecla A, el teclado primero transmite su código de maquillaje y luego el código de ruptura: 1C FO 1C

Upload: jonathan-zapata

Post on 29-Jan-2016

225 views

Category:

Documents


0 download

DESCRIPTION

DPFA

TRANSCRIPT

Page 1: Traduccion Mi Parte

8.3 PS2 CÓDIGO DE ESCANEO DE TECLADO8.3.1 Visión general del código de escaneo

Un teclado consta de una matriz de teclas y un micro controlador integrado que monitorea (es decir, escanea) las actividades de las teclas y envía un código de escaneo en consecuencia. Tres tipos de actividades de la tecla se observan:

Cuando se pulsa una tecla, el código de maquillaje (make code) de la tecla se transmite.

Cuando una tecla se mantiene pulsada continuamente, una condición conocida como typematic, el código de maquillaje se transmite repetidamente a una velocidad específica. Por defecto, un teclado PS2 transmite el código de maquillaje alrededor de cada 100 ms después de una tecla ha sido presionada por 0.5 segundos.

Cuando se suelta una tecla,  el código de ruptura de la tecla es transmitido El código de maquillaje de la parte principal de un teclado PS2 se muestra en la Figura 8.3. Esto es normalmente 1 byte de ancho y representado por dos números hexadecimales. Por ejemplo, el código de maquillaje de la tecla A es 1C. Este código puede ser transportado por un paquete cuando se transmiten. El código de maquillaje de un puñado de teclas de propósito especial, que se conoce como las teclas extendidas, puede tener 2 a 4 bytes. Algunas de estas teclas se muestran en la Figura 8.3.Por ejemplo, el código de maquillaje de la flecha superior de la derecha es EO 75. Múltiples paquetes son necesarios para la transmisión.Los códigos de quiebre de las teclas habituales consisten 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 de la tecla. Por ejemplo, cuando pulse y suelte la tecla A, el teclado primero transmite su código de maquillaje y luego el código de ruptura:

1C FO 1C

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

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

Múltiples teclas pueden ser presionados al mismo tiempo. Por ejemplo, primero podemos presionar la tecla shift (cuyo código maquillaje es 12) y luego la tecla A, y suelte la tecla A y luego suelte la tecla shift. La secuencia del código transmitido sigue los códigos de maquillaje y ruptura de las dos teclas:

12 1 C FO 1 C FO 12

La secuencia anterior es la forma en que normalmente se obtiene una A mayúscula. Nótese que no hay un código especial para distinguir las teclas minúsculas y mayúsculas. Esto es responsabilidad del dispositivo anfitrión para mantener un seguimiento de si se pulsa la tecla shift y determinar el caso en consecuencia.

Page 2: Traduccion Mi Parte

8.3.2 Circuito monitor de códigos escaneadosEl circuito monitor de código escaneado supervisa la llegada de los paquetes recibidos y muestra los códigos escaneados en una Ventana de HyperTerminal de PC. El enfoque básico de diseño es para primera dividir el código escaneado recibido de exploración 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 las palabras a un PC a través de UART.Los códigos escaneados recibidos deben mostrarse similar a los ejemplos de las secuencias anteriores. El programa se muestra en el listado 8.2

Listado 8.2 Teclado PS2 circuito monitor de código escaneado

Page 3: Traduccion Mi Parte
Page 4: Traduccion Mi Parte

Un FSM se utiliza para controlar el funcionamiento global. El funcionamiento UART inicia cuando un nuevo código escaneado es recibido (como se indica por la afirmación de scan-done_tick).El FSM circula a través de los estados sendl, send0, y sendb, en los que los códigos ASCII del dígito hexadecimal mas alto, menor dígito hexadecimal, y el espacio en blanco se escriben en la UART.Recordemos que el UART tiene una FIFO de cuatro palabras, y por tanto no se producirá desbordamiento. Tenga en cuenta que el receptor UART no se utiliza y los puertos correspondientes son asignados a constantes o abierto.

8.4 PS2 TECLADO DE INTERFAZ CIRCUITComo se discutió en la Sección 8.3.1, una secuencia de paquetes es transmitido incluso para simples actividades del teclado. Será un poco complicado si queremos cubrir todas las posibles combinaciones. En esta sección, se asume que solo una tecla habitual es presionada y soltada a la vez y diseña un circuito que devuelve el código de marca de esta tecla. Este diseño proporciona una forma sencilla de enviar un carácter o dígito a la placa de prototipado y deberian ser satisfactorios para nuestros propósitos

Figura 8.4 Diagram de Bloques de un circuito de la ultima tecla soltada

8.4.1 Diseño básico y código HDL

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 buffering en la Sección 7.2.4 se puede aplicar para el circuito de teclado también. Utilizamos un búfer FIFO de cuatro palabras como la interfaz en este diseño.El diagrama conceptual de nivel superior se muestra en la Figura 8.4. Consiste en el receptor PS2, una buffer FIFO, y un control FSM. La idea básica es usar el FSM para mantener un seguimiento del paquete FO del código de ruptura. Después de que es recibido, el siguiente paquete debe ser el código de maquillaje de esta tecla y se escribe en la buffer FIFO. Tenga en cuenta que este esquema no puede ser aplicado a las teclas extendidas desde sus códigos maquillaje implicando múltiples paquetes. El correspondiente código HDL se muestra en el Listado 8.3

Listado 8.3 Teclado PS2 circuito de la última tecla soltada

Page 5: Traduccion Mi Parte

La parte principal del código es la FSM, que muestra el código de ruptura y coordina el funcionamiento de los dos otros módulos. Comprueba los paquetes recibidos en el estado wait_brk continuamente. Cuando se detecta el paquete FO, se mueve al estado get_code y espera al siguiente paquete, que es el código de maquillaje de la tecla. El FSM luego afirma la señal señal code_done_tick por un ciclo de reloj y retorna al estado wait_brk

Page 6: Traduccion Mi Parte

Figura 8.5 Diagrama de Bloques de un circuito de verificación de un teclado

8.4.2 Verificación del circuitoDiseñamos una interfaz serial simple y circuito de decodificación para verificar el funcionamiento de la interfaz del teclado PS2. El diagrama de bloques de nivel superior se muestra en la figura 8.5. El circuito convierte el código de maquillaje de una tecla a el correspondiente código ASCII y luego envía el código ASCII a la UART. El correspondiente carácter o dígitos pueden ser mostrados en la ventana HyperTerminal.El código HDL para el circuito de conversión se muestra en el Listado 8.4

Listado 8.4 Código de maquillaje del teclado a código ASCII

Page 7: Traduccion Mi Parte

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

Listado 8.5 Circuito de verificación del teclado

Page 8: Traduccion Mi Parte

8.5 NOTAS BIBLIOGRÁFICASTres artículos, ‘‘PS/2 MouselKeyboard Protocol,” ‘‘PS/2 Keyboard Interface,” and ‘‘PSI2Mouse Interface,” por Adam Chapweske, proporciona información detallada sobre el teclado PS2 y la interface del mouse. Se pueden encontrar en el sitio http://www.computer-engineering.org.Rapid Prototyping of Digital Systems: Quartus @ II Edición por James O. Hamblen et al.También contiene un capítulo sobre el puerto PS2 y los protocolos de teclado y ratón.

8.6 EXPERIMENTOS SUGERIDOS8.6.1 Interfaz de teclado Alternativa IEl circuito de interfaz en la Sección 8.4 devuelve el código de maquillaje de la última tecla soltada y por lo tanto ignora la condición typematic. Un enfoque alternativo es considerar la condición typematic. El circuito de interfaz del teclado debe devolver un código de maquillaje de la tecla repetidamente cuando se mantiene pulsado e ignora el código de ruptura final. Para simplificar, suponemos que las teclas extendidas no son usadas. Diseñar el nuevo circuito de interfaz, resintetizar el circuito de verificación, y verificar el funcionamiento del nuevo circuito de interfaz.

8.6.2 interfaz de teclado Alternativa IIPodemos ampliar el circuito de interfaz para distinguir si se pulsa la tecla shift, de modo que ambas caracteres minúsculas y mayúsculas se pueden introducir. El circuito expandido puede ser modificado como sigue:

La salida del código de la tecla debe extenderse a partir de 8 bits a 9 bits. El bit adicional indica si la tecla shift se mantiene presionado

El FSM debe agregar una rama especial para procesar los códigos de maquillaje y de ruptura de la teclas shift y en consecuencia establecer el valor del bit correspondiente.

La anchura de un buffer FIFO debería extenderse a 9 bits.

Page 9: Traduccion Mi Parte

Diseñar el circuito de interfaz ampliada, modificar el circuito key2ascii para manejar tanto caracteres minúsculas y mayúsculas, resintetizar el circuito de verificación, y verificar el funcionamiento del circuito de interfaz ampliado.

8.6.3 PS2 recibiendo subsistema con temporizador de vigilancia (watchdog timer)

No hay capacidad de control de errores en el PS2 recibiendo subsistema en la Sección 8.2. El ruido potencial y las interferencias en la señal ps2c puede hacer que el FSMD estar atrapado en un estado incorrecto. Una forma de tratar este problema es añadir un temporizador de vigilancia. El temporizador es iniciado cada vez que la señal fall_edge_tick es afirmada en el estado get-bit. La señal de tiempo de espera se afirma si el flanco descendente no llega en los siguientes 20 microsegundos, y la FSMD vuelve al estado de reposo. Diseñar el subsistema de recepción modificado, derivar un banco de pruebas, y uso de simulación para comprobar su funcionamiento.

8.6.4 Cronómetro controlado por teclado

Considere el cronómetro mejorado en el Experimento 4.7.6. El funcionamiento del cronómetro es controlado por tres interruptores en la placa de prototipos. Podemos utilizar el teclado para enviar comandos para el cronómetro:

Cuando la tecla C (para limpiar “clear” ) es presionada, el cronómetro cancela el conteo actual, se limpia a cero, y establece la dirección del conteo hacia arriba “up”

Cuando la tecla G (para ir “go”) es presionada, el cronómetro se inicia el conteo.

Cuando la tecla P (para “pause”) es presionada, el conteo pausa.

Cuando la tecla U (para “up-down”) es presionada, el cronómetro invierte la dirección de conteo

Todas las demás teclas se ignoran.

Diseñar el nuevo cronómetro, sintetizar el circuito, y comprobar su funcionamiento

8.6.5 Letrero LED giratorio controlado por teclado

Considere el circuito de un letrero LED giratorio en el Experimento 4.7.5. Podemos utilizar un teclado para controlar su funcionamiento y modificar dinámicamente los dígitos en el letrero:

Cuando la tecla G (para ir “go”) es presionada, el letrero LED gira.

Cuando la tecla P (para “pause”) es presionada, el letrero LED pausa

Page 10: Traduccion Mi Parte

Cuando la tecla D (para dirección “direction”) es presionada, el letrero LED invierte la dirección de rotación.

Cuando una tecla de dígito decimal (es decir, 0, 1, . . ., 9) es presionada, el letrero será modificado.

El letrero puede ser tratado como un búfer FIFO de 10 palabras. El nuevo dígito se insertará al principio (es decir, la posición más a la izquierda) del letrero, y el dígito más a la derecha será desplazado hacia fuera y descartado.

Se ignoran todas las demás teclas.

Diseño del nuevo letrero LED giratorio, sintetizar el circuito, y comprobar su funcionamiento

CAPÍTULO 9

MOUSE PS2

9.1 INTRODUCCIÓN

Un mouse de ordenador está diseñado principalmente para detectar el movimiento en dos dimensiones sobre una superficie. Su circuito interno mide la distancia relativa de movimiento y comprueba el estado de los botones. Para un mouse con una interfaz PS2, esta información se empaqueta en tres paquetes y es enviado al host a través del puerto PS2 En el modo stream, un mouse PS2 envía los paquetes de forma continua en una frecuencia de muestreo previamente designado.La comunicación del puerto PS2 es bidireccional y el host puede enviar un comando al teclado o el mouse para ajustar ciertos parámetros. Para nuestros propósitos, esta funcionalidad es apenas requerido por un teclado, y por lo tanto la interfaz de teclado en el Capítulo 8 se limita auna dirección, desde el teclado a laFPGAanfitrión. Sin embargo, a diferencia del teclado, un ratónestá dispuesto a ser en el modo no humeante después del encendido y no envía ningún dato. El anfitriónprimero debe enviar un comando al ratón para inicializar el ratón y activar el modo de secuencia.Por lo tanto, la comunicación bidireccional de laPS2Se necesita puerto para elPS2interfaz de ratón,y debemos diseñar un subsistema de transmisión (es decir, a partir deFPGAtablero para ratón) para laPS2interfaz.Eneste capítulo, ofrecemos un breve resumen de laPS2protocolo de ratón, diseñar un bidi-

Page 11: Traduccion Mi Parte

direccionalPDinterfaz, y derivar una interfaz sencilla ratón