Interfaces de Teclado y Ratón con VHDL PDF
Document Details

Uploaded by StraightforwardDiction3396
Enrique González Guerrero
Tags
Summary
Este documento describe las interfaces de teclado y ratón utilizando VHDL. Se aborda el diseño de circuitos para el teclado PS/2, la comunicación serial bidireccional con el ratón y los modos de funcionamiento de ambos dispositivos. El contenido proporciona información técnica sobre la transmisión y recepción de datos entre el FPGA y los periféricos.
Full Transcript
INTERFACES Teclado y Ratón PH.D Enrique González Guerrero Teclado La tarjeta DE10 lite tiene un puerto USB el cual puede ser usado para periféricos PS/2, tales como, teclado o mouse. Este tipo de puerto tiene un estándar de comunicación y conexión. Un pin corresponde a...
INTERFACES Teclado y Ratón PH.D Enrique González Guerrero Teclado La tarjeta DE10 lite tiene un puerto USB el cual puede ser usado para periféricos PS/2, tales como, teclado o mouse. Este tipo de puerto tiene un estándar de comunicación y conexión. Un pin corresponde a la recepción/transmisión de un dato (transmisión por parte del periférico, recepción para el fpga). Otro pin debe recibir una señal de +5 V que el fpga transmitirá y que el teclado usará como fuente de energía. El teclado PS/2 cuenta con un circuito que genera un código en forma serial por cada tecla oprimida, lo que se le denomina un scan code. Un scan code es el código de 8 bits asociado a cada letra, es decir, si el usuario presiona la letra L, el Teclado scan code que se genera es 4B (hexadecimal). PS/2 El teclado emite una señal de reloj, lo cual facilita la lectura del scan code, ya que la sincronía del scan code es la de esta señal de reloj. Los circuitos que se comunican con el teclado pueden utilizar esta señal de reloj para detectar la secuencia que se genera por el teclado. Para diseñar un circuito controlador de teclado es necesario hacer las siguientes consideraciones: Diseño de Desde que el teclado se energiza, su circuito comienza a transmitir una secuencia de 11 bits que al terminar un circuito comienza una nueva secuencia. controlador En la transmisión serial, un bit es una señal de 1 ó 0 que tiene la duración de un período de reloj (de su propio reloj). de teclado La secuencia que genera el teclado consta de un bit de start (0 lógico) que puede desecharse, el scan code de 8 bits, un bit de paridad que puede desecharse y un bit de stop (1 lógico) que también puede desecharse. Diseño de un circuito controlador de teclado El circuito controlador del teclado puede diseñarse con una máquina de estados sincronizada con el reloj que envía el teclado. La máquina puede pasar por 11 estados que incluyan el reconocimiento del bit de start, el scan code, el bit de paridad y el bit de stop. Del segundo al noveno estado debe almacenarse el bit leído en un registro serial para formar el scan code, o bien mediante un contador almacenar cada uno de los bits necesarios. Diseño de un circuito controlador de teclado Para reconocer la tecla presionada se puede checar el valor que tiene el registro donde se cargó serialmente el scan code. Cabe destacar que al dejar de presionar una tecla, por ejemplo , la secuencia hexadecimal es la siguiente: 5A F0 5A, donde a F0 se le denomina break code. En VHDL se puede manejar constantes en hexadecimal. La notación requiere iniciar la constante con x y a continuación la constante entre comillas dobles, por ejemplo “01001011” es x “4B”. Scancode letra “Z” Presionamos la tecla Shift: 12h, y sin soltarla Presionamos la tecla Z: 1Ah Soltamos la letra Z: F0h ‐ 1Ah Soltamos la tecla Shift: F0h ‐ 12h Así que el teclado enviará: 12h ‐ 1Ah ‐ F0h ‐ 1Ah ‐ F0h ‐ 12h. El teclado comienza una transmisión realizando el siguiente protocolo: 1. Comprobar que la línea de datos y el reloj está a ‘1’. 2. Coloca en la línea de datos el bit start(‘0’), de esta Transmisión manera se indica que se va a comenzar. del teclado 3. A los 5-25us el teclado pone la línea del reloj a ‘0’. 4. A continuación coloca los bits de datos, de paridad y de fin, indicando con el flanco de bajada del reloj cuando se deben leer. 5.Para enviar una nueva trama, después del bit de fin de la trama anterior, se inicia el protocolo de nuevo. Transmisión del teclado Descripción en VHDL de un circuito controlador de teclado Completa el código en VHDL… Descripción en VHDL de un circuito controlador de teclado Nota: El dispositivo PS/2 es libre de enviar datos al controlador cuando el controlador está en estado inactivo. Esto significa que las líneas PS2CLK y PS2DATA son altas. El dispositivo PS/2 debe esperar medio período PS2CLK antes de que pueda iniciar su transmisión. Ratón El ratón se comunica con el FPGA a través de comunicación serial bidireccional. Se inicia con el FPGA mandándole un paquete con un byte de comando para que el ratón se active, de lo contrario el ratón no mandara información después de ser encendido. Entonces, el FPGA debe mandar el comando F4 hexadecimal para inicializar la actividad en el ratón habilitando en él, el modo stream. El interfaz estándar PS/2 del ratón admite las siguientes entradas: Movimiento en el eje X (izquierda/derecha) Movimiento en el eje Y (arriba/abajo) Botón izquierdo Botón central Botón derecho Modos de funcionamiento El ratón tiene varios modos de funcionamiento: reset, transmisión (stream), remoto y eco (wrap). Los modos remoto y eco casi no se usan, así que sólo vamos a ver los dos primeros. El modo reset es el modo en el que entra el ratón al encenderse. Al entrar en este modo ratón realiza un test de autodiagnóstico y pone los siguientes parámetros: Velocidad de muestreo: 100 muestras/s Resolución: 4 cuentas por milímetro (por cada milímetro los contadores aumentan en 4) Escalado: 1:1 Envío de datos: deshabilitado Modos de funcionamiento Después del autodiagnóstico, el ratón enviará un código que indicará si tuvo éxito (AAh) o si ha habido algún error (FCh). Luego enviará la identificación del dispositivo PS/2, que para un ratón PS/2 estándar es 00h. El FPGA debe mandar el comando F4h(Enable data reporting) para inicializar la actividad en el ratón habilitando en él, el modo stream. Una vez que el ratón recibe este comando, éste responderá con el comando FAh para indicar el reconocimiento del comando. Modos de funcionamiento Posteriormente, el ratón comenzará a mandar 3 paquetes con la información sobre los botones presionados y su movimiento al FPGA. Es necesario elaborar un sistema bidireccional que transmita y reciba información con el uso de operaciones de triple estado. El ratón envía la información al FPGA de manera serial a través de la línea de datos y en sincronía con su reloj, el cual debe ser filtrado para eliminar el ruido y lograr que el FPGA reciba correctamente los datos. Paquetes de bytes enviados por el ratón Cada paquete que el ratón envía contiene 11 bits: 1 bit de start, 8 bits de datos, 1 bit de paridad y 1 bit de stop. Las acciones de los botones y algunas banderas se encuentran en el primer byte de datos, el movimiento en el eje x en el segundo byte y el movimiento en el eje y en el tercer byte. Cada byte de movimiento se define como 9 bits en complementos a 2, donde el noveno bit de cada byte de movimiento se encuentra en el primer byte. Por ende, el rango de movimiento se encuentra entre ‐255 a +255, donde si el noveno bit es 0 significa que es positivo y si es 1 es negativo. Comunicación FPGA a Ratón Normalmente el control de la línea de datos y del reloj PS/2 lo tiene el dispositivo (ratón o teclado). Si la computadora (o FPGA) quiere tomar el control debe de poner la línea reloj (clkps2) a cero durante 100 μs, después de este tiempo, libera la línea del reloj y pone la línea datos a cero (bit de inicio). Posteriormente con la línea del reloj ya controlada por el dispositivo, espera a cada flanco de bajada del reloj para poner cada uno de los datos y el bit de paridad. Finalmente, la computadora libera la línea de datos con el bit de fin y el dispositivo pone un cero de reconocimiento en la línea de datos. Cronogramas separados de la transmisión de datos desde la computadora hacia el ratón Comunicación Ratón a FPGA Cada vez que se recibe un byte del ratón o del teclado se reciben 11 bits: 1 bit de start (Siempre 0 lógico). 8 bits de datos, se recibe primero el menos significativo. 1 bit de paridad. 1 bit de stop (Siempre 1 lógico). Estos bits son leídos por la transición negativa de la señal de reloj del puerto ps/2 y su frecuencia tiene un rango de entre 10 kHz y 16.7 kHz. Diseño de transmisión-recepción del ratón http://www.editorialdigitaltecdemonterrey.com/materialadicional/id152/cap12/ codigos12.3.3.pdf