• No se han encontrado resultados

Laboratorio 06. Diseño e implementación de un sistema digital para la captura de caracteres desde teclado

N/A
N/A
Protected

Academic year: 2021

Share "Laboratorio 06. Diseño e implementación de un sistema digital para la captura de caracteres desde teclado"

Copied!
5
0
0

Texto completo

(1)

Laboratorio 06. “Diseño e implementación de un sistema digital para la captura de caracteres desde teclado”

Objetivos Específicos:

- Aplicar sentencias específicas del lenguaje ABEL para describir registros de desplazamiento, de manera de utilizar éstos en el problema propuesto.

- Conocer la forma de comunicación que existe entre el teclado y su controlador (PS/2). - Conocer los scan-codes y aplicar técnicas de visualización en el osciloscopio para su captura.

- Interactuar con la tarjeta, diseñando un sistema de control que permita visualizar en el led el scan code correspondiente a una tecla presionada.

- Implementar el diseño en tarjeta de desarrollo.

- Generar vectores de prueba correspondientes y comprobar el correcto funcionamiento del diseño.

Preparación Previa. Recursos.

1.- PS/2.

La interfaz de comunicación PS/2 es un prototipo planteado por la IBM para comunicar dispositivos seriales en forma sincrónica, tanto teclado como mouse. En la actualidad la mayoría de los teclados corresponden a este tipo con las siguientes características:

- Gran número de teclas (101 a 104).

- Conector de 5 o 6 pines (incluyen adaptadores). - Protocolo de comunicación serial bidireccional (PS/2). - Garantizan sólo el conjunto 2 de los scan codes.

- Contestan todos los comandos enviados, sin embargo no actúan en todos ellos. La interfaz física que usualmente se utiliza se muestra a continuación:

Plug Socket 6-pin Mini-DIN (PS/2): 1 - Data 2 - No Implementado 3 - Ground 4 - Vcc (+5V) 5 - Clock 6 - No Implementado

(2)

La alimentación del teclado/mouse corresponde a Vcc=+5 [V] y una corriente máxima de 100 [mA]. Se recomienda no conectar el teclado a la tarjeta mientras se encuentre prendida. Las líneas de Data y Clock son ambas de colector abierto, con resistencias de “pull-up” para fijar ambas líneas en alto.

El mouse y teclado PS/2 implementan un protocolo de comunicación serial bidireccional. El bus de comunicación se encuentra en estado “idle” cuando ambas líneas (data y clock) se encuentran en alto. Este es el único estado en que al dispositivo (teclado o mouse) le está permitido enviar información al host (computador o en nuestro caso tarjeta de desarrollo XS95). El host tiene el control último sobre el bus y puede inhibir la comunicación en cualquier instante, colocando la línea de clock en nivel bajo.

El dispositivo siempre genera la señal de clock. Si el host desea enviar datos, debe primero inhibir la comunicación desde el dispositivo, colocando la línea de clock en nivel bajo. Luego debe colocar en nivel bajo la línea de data y subir la línea de clock. Este estado es conocido como “Request to Send”, con lo cual el host señaliza al dispositivo que comience a generar pulsos de reloj a través de la línea clock para enviar los datos.

Por lo tanto el bus puede estar en uno de los siguientes tres estados: - Data: alto Clock: alto = Estado “Idle”.

- Data: alto Clock: bajo = Estado “Comunicación Inhibida”. - Data: bajo Clock alto = Estado “Request to Send”.

Todos los datos son mandados de un byte por vez y cada byte es enviado dentro de un frame de 11 o 12 bits:

- 1 bit de partida: siempre es 0.

- 8 bits de datos: se comienza por el menos significativo. - 1 bit de paridad: se utiliza paridad impar.

- 1 bit de parada: siempre es 1.

- 1 bit de confirmación: sólo para comunicación desde el host al dispositivo.

El bit de paridad es colocado en alto si hay un número par de 1’s en los bits de datos, y colocado en bajo se hay un número impar. La idea es que el número de1’s de los bits de datos más el bit de paridad siempre sean un número impar (paridad impar). Esto se utiliza para la detección de errores en la transmisión. Si el dispositivo detecta un error responde como que se le ha enviado un comando inválido.

En el caso de comunicación del dispositivo al host (caso que será utilizado) el siguiente diagrama ejemplifica la situación:

(3)

Cuando el teclado o mouse desean mandar información deben asegurarse que la línea de clock debe estar en alto por lo menos 50 [us] antes de que el dispositivo puede comenzar a enviar datos.

El teclado/mouse escribe un bit en la línea de data cuando el reloj está alto, y es leído en el host cuando el reloj está bajo.

Como se trata de comunicación desde el host hacia el dispositivo, no se envía un bit de confirmación.

2.- ScanCodes.

En los teclados se distinguen distintos conjuntos de scancodes para identificar la tecla o teclas que se presionan. Se utiliza por defecto el conjunto 2 (set 2). Cada tecla tiene asociado un scancode compuesto de dos códigos: un make code, que se emite cada vez que se presiona una tecla, y un break code, que se emite cuando se suelta la tecla. En general estos códigos suelen tener entre 2 y 1 byte, pero existen ciertos scancodes que son más largos debido a que corresponden a una combinación de teclas más elaborada.

Se encuentra disponible en el sitio del curso el archivo scancode.doc que contiene los scancodes del conjunto 2 y otras especificaciones. Además se encuentra disponible la especificación de la norma PS/2 en el archivo ps2norma.pdf, también disponible en su sitio original http://www.genesyslogic.com/pdf/gl310mc4d_r10.pdf y también en el sitio http://panda.cs.ndsu.nodak.edu/~achapwes/PICmicro/PS2/ps2.htm

3.- Serie-paralelo, Paralelo-serie.

El siguiente esquema muestra la conexión lógica de dos registros realizada para la captura de datos en serie. Nótese que se está utilizando un reloj proporcionado por la misma fuente de los datos, tal como ocurre en una comunicación PS/2.

KB_CLOCK

KB_DATA

10 10

(4)

En ella tanto el registro que recibe la conexión en serie como el que está copiando su contenido reciben la señal de reloj proporcionada por la contraparte que se está comunicando, pero al recibir el reloj negado, una de ellas se está retrasando con respecto a la otra, de manera de que ambos registros comienzan a desplazar a través de ellos, y mientras le llegue la señal de reloj el contenido de los mismos, siendo el bit más significativo el que recibe los datos seriales.

Actividades Previas.

a) Proponga un esquema similar al descrito anteriormente que permita enviar datos contenidos en un registro (paralelo) en forma serial por una sola línea de comunicación. b) Estudie la manera de manejar el osciloscopio para capturar eventos asincrónicos

utilizando modo single.

c) Estudie el siguiente código Abel que implementa la recepción de datos PS/2 desde el teclado en la tarjeta de desarrollo:

MODULE keyboard TITLE 'keyboard' DECLARATIONS

RSTuC PIN 45; // uC reset control

OE_RAM PIN 62; // RAM output enable

KB_DATA PIN 70; // datos seriales desde el teclado PS/2 KB_CLK PIN 26; // reloj desde el teclado PS/2

RS_6..RS_0 PIN 15,14,18,17,19,23,21 ISTYPE 'COM'; // Pines del display RS_ = [RS_6..RS_0];

[MASTER8..MASTER0] NODE ISTYPE 'REG'; // registro maestro para almacenar MASTER9 PIN 77 ISTYPE 'REG'; // los datos desde el teclado

MASTER = [MASTER9..MASTER0];

[SLAVE8..SLAVE0] NODE ISTYPE 'REG'; //registro esclavo SLAVE9 PIN 76 ISTYPE 'REG';

SLAVE = [SLAVE9..SLAVE0]; // EQUATIONS

RST = 1; // deshabilitar uC

OE_RAM = 1; // deshabilitar RAM MASTER.CLK = !KB_CLK;

(5)

SLAVE.CLK = KB_CLK; SLAVE := MASTER;

// Si una de las taclas del '0' al '9' es presionada entonces el display muestra el dígito // correspondiente TRUTH_TABLE ([ SLAVE7..SLAVE0] -> [RS_6..RS_0]) ^H16 -> ^B0010010; ^H1E -> ^B1011101; ^H26-> ^B1011011; ^H25 -> ^B0111010; ^H2E -> ^B1101011; ^H36 -> ^B1101111; ^H3D-> ^B1010010; ^H3E ->^B1111111; ^H46 -> ^B1111011; ^H45 -> ^B1110111; END keyboard

d) Modifique el ejemplo anterior de manera que sea posible visualizar el scancode (make code) de cada tecla a través del led de la tarjeta.

En el Laboratorio.

a) Implemente en el laboratorio el diseño propuesto por Ud. en el trabajo previo parte a). Realice las pruebas que estime convenientes para verificar que se cumple con las especificaciones.

b) Implemente la modificación planteada en el punto d) del trabajo previo. Establezca un mecanismo para poder visualizar las dos cifras hexadecimales (una a la vez) del make code correspondiente a una tecla a través del led.

c) Utilice la característica de disparo single del osciloscopio para visualizar el formato de transmisión de datos del protocolo PS/2. Visualice presionando sólo una vez una determinada tecla y manteniéndola presionada. Muestre estas formas de onda a su ayudante o profesor.

Referencias

Documento similar

En la actualidad, la entidad cubana Procyon lleva a cabo el desarrollo de una serie de proyectos entre los cuales se encuentra la creación de una plataforma destinada a

 Para recibir todos los números de referencia en un solo correo electrónico, es necesario que las solicitudes estén cumplimentadas y sean todos los datos válidos, incluido el

El fin último del presente trabajo es conseguir la sensorización de un robot paralelo utilizado para aplicaciones médicas, conocido como “TrueLock Hexapod” (TL-Hex)

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

diabetes, chronic respiratory disease and cancer) targeted in the Global Action Plan on NCDs as well as other noncommunicable conditions of particular concern in the European

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

d) que haya «identidad de órgano» (con identidad de Sala y Sección); e) que haya alteridad, es decir, que las sentencias aportadas sean de persona distinta a la recurrente, e) que

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y