En la tarjeta Spartan-3 existe un conector tipo PS/2 el cual sirve para conectar teclados o ratones y tener una mayor interacción con los diferentes programas realizados por el usuario.La comunicación del PS/2 fue creada por IBM en 1987. La interacción que se tiene es serial y controlada por la tarjeta. Las interfaces de teclado y ratón son eléctricamente similares, solamente se diferencian en que en la interfaz de teclado se requiere en ambos lados un colector abierto para permitir la comunicación bidireccional.
La comunicación PS2 entre la computadora y teclado es una serie síncrona. Hay una señal de reloj y una de datos. La velocidad de comunicación se determina con la señal del reloj, puede ser unos 10Khz. La transmisión se da con 1 bit de comienzo, 8 bits de datos, 1 de paridad, 1 de stop y 1 ACK.
El teclado tras investigar sobre el código que maneja, observamos que no es el código ASCII, es un código único y este es el que se mostrara en la tarjeta, se presenta a continuación un diagrama de los diferentes comandos que tienen las teclas para mostrar al usuario.
El teclado utiliza controladores de colector abierto para que el teclado de la unidad pueda tener un bus de dos hilos. Si el host no envía datos al teclado, el usuario puede utilizar un código simple a la entrada. Un teclado PS/2 utiliza el escaneo de códigos para comunicar los datos. Cada tecla tiene un código único, también un único análisis que se envía cada vez que la tecla se presiona. Si la tecla se presiona y mantiene, el teclado envía repetidamente el código de la exploración cada 100 ms . Cuando se suelta una tecla envía un código llave, seguido por la espera de la siguiente tecla.
Transmisión de datos por el puerto PS/2 a través de un teclado.
El puerto PS/2 es importante ya que puede realizar la comunicación de la tarjeta con un teclado o ratón., en el caso de esta práctica se realizará con un teclado de computadora. Este puerto es transmisor de datos, se mostrara el código en los displays de siete segmentos y posteriormente se enlazara con el código del motor para lograr el objetivo establecido. Se implementó un código el cual llevará seis variables en el entity, el reloj (clk), el reset (rst), las entradas del puerto PS/2 (kd, kc), dos matrices que almacenen datos (an, sseg). Una es el ánodo y la otra el display de siete segmentos.
Se declara la variable clk que es el reloj, que será el que va a hacer que se almacenen los valores. La palabra clk’event es la instrucción para que el reloj comience su proceso con un flanco de subida (‘1’). Debemos tener en cuenta que el reloj de la tarjeta es de 50Mhz, se deben realizar los cálculos para saber cómo pasará la palabra de 8 bits más el bit de inicio y stop.
En diferentes procesos en el código implementado se irán agregando primeramente las condiciones de las señales que vienen desde el puerto PS/2.
Se multiplexan los datos que se obtuvieron en el proceso anterior y se mandan en dos partes a los displays de siete segmentos donde aparecerán los diferentes códigos de cada una de las teclas.
Finalmente se programa el ánodo para que puedan utilizarse solamente dos displays y no los cuatro, así mismo cada uno con datos diferentes, como ya se ha implementado en prácticas anteriores.
A continuación se mostrará un fotografía con el teclado conectado a la tarjeta y mostrando en los displays el código de algún botón.
No hay comentarios:
Publicar un comentario