Regístrate | Conectar
El Tamiz Libros Recursos Series Únete 21 Users Online
Skip to content

Computador mágico XX – Teclado sencillo




En el último artículo de esta serie vimos una pantalla que, efectivamente, no era muy realista, pero a cambio era muy sencilla, y nos servirá en el futuro para ver los resultados del ordenador. En este artículo vamos a ver un teclado. Si la pantalla era poco realista, prepárate, porque el teclado lo será aún menos. Pero no importa, porque solo queremos mostrar el concepto; en el futuro veremos un teclado un poco más parecido a la realidad.

Cuando hemos estudiado la representación del texto, hemos visto el código ISO-8859-15, o el más simple US-ASCII. Así que lo que vamos a hacer es un teclado con 256 teclas, y que cada una de ellas tenga serigrafiado un carácter de la tabla ASCII. Bueno… en realidad tendrá bastantes menos. Sabemos que el código ASCII contiene un montón de caracteres que son de control… bueno, no importa, esas las ponemos también. El serigrafiado será un poco peculiar, porque no se puede poner una letra, pero no importa.

Es decir, no es como nuestro teclado habitual, en que tenemos una tecla de MAYÚSCULAS para poner las letras mayúsculas o los símbolos raros. Ni tendremos tampoco las teclas de las tildes para poner las vocales tildadas, por ejemplo. En cambio, tendremos una tecla para la A, otra para la a, otra para la á, otra para la à, otra para la ä… y así sucesivamente. ¿Entendido?

Luego, cada una de esas teclas la conectamos a un interruptor en el siguiente circuito:

El codificador es un componente muy habitual: tiene un montón de líneas de entrada y en la salida pone, codificado en binario, el número de la línea de entrada que es un 1 (o la primera que sea un 1, si hay más de una); si no hay ninguna línea de entrada con un 1, sale un 0 en binario (date cuenta de que esto es lo mismo que si pulsamos la tecla NUL; no importa). Como solo tenemos 256 teclas, pero la salida es de 16 bits, simplemente lo codificará con 8 bits y pondrá a 0 los 8 bits restantes.

El controlador es un poco más complicado. Mejor dicho: es bastante más complicado, y por eso no lo vamos a diseñar en detalle. Vamos a describir el comportamiento primero en roman paladino: el controlador almacena el valor ASCII de la última tecla pulsada (es decir, lo que viene del decodificador), pero a la vez se comporta como una memoria de una sola palabra. Es decir: si le piden que escriba (R/W’=0) en la posición 0×820, almacena en el registro lo que entra por el bus de datos D. Si en cambio, le piden que lea de la posición 0×820, saca por D el contenido del registro.

Pero fíjate en que podemos describirlo de la siguiente forma:

  • Tiene un estado, que es el contenido del registro.
  • En función de las entradas que tiene, podemos definir el estado siguiente:
    • Si A es 0×820 y R/W’ es un 0, el estado siguiente es lo que entra por D.
    • En caso contrario:
      • Si la entrada C es un 0, el estado siguiente es el estado actual.
      • Si la entrada C es cualquier otra cosa, el estado siguiente es lo que entra por C.
  • Podemos definir la salida en función del estado:
    • Si A es 0×820 y R/W’ es un 1, la salida es directamente el contenido del registro.
    • En caso contrario, no sale nada.

Ahora echa memoria atrás, hasta el momento en que veíamos los circuitos secuenciales: si cumplíamos esas tres condiciones, podíamos diseñar un circuito secuencial que implementara ese algoritmo. Estupendo, pues entonces, aunque no vamos a diseñarlo, sabemos que podríamos hacerlo si quisiéramos. Solo nos queda resolver un detalle, que es eso de que  ”no sale nada”. Cuidado, porque “no sale nada” no es lo mismo que “sale un 0″. Sucede aquí lo mismo que ocurría en el artículo sobre la memoria: necesitamos aislar la salida del bus D cuando no estamos explícitamente devolviendo algo por D. De nuevo, eso no afecta al concepto, así que lo dejaremos para el próximo artículo, en el que, esta vez sí, veremos los buses.

Pero salvando ese detalle… ¡es simplemente un circuito secuencial! Así que, aunque por brevedad no lo diseñemos, espero que tengas claro que sería posible hacerlo si quisiéramos.

Podrías tener dos legítimas pegas con este diseño:

  • En realidad no estamos almacenando la tecla que se pulsó, sino la tecla que estaba pulsada cuando llegó un tick de reloj. Aunque es una distinción sutil, es una pega legítima. Pero piensa que esto es un teclado muy rudimentario. Nos sirve así. Pero, en cualquier caso, ¿no podría ocurrir que pulsara y despulsara muy rápido la tecla, entre tick y tick de reloj? Pues más bien no. Piensa que el reloj probablemente va muy rápido, quizá a varios MHz o más, así que por muy rápido que te creas, no lo eres tanto.
  • Si se pulsa una segunda tecla simplemente sobreescribe a la primera. Pues sí, eso es cierto. Piensa siempre que esto es muy rudimentario, apenas funcional para nuestros ejemplos.

Ya iremos solventando algunas de estas cosas en futuros diseños.

Como otras veces, para ahorrar, vamos a utilizar el siguiente símbolo para representar este teclado:

En el próximo artículo, ahora sí, uniremos todos estos componentes para formar nuestro primer ordenador.


Sobre el autor:

J ( )

 

{ 3 } Comentarios

  1. Gravatar pep | 17/10/2013 at 04:49 | Permalink

    ¿habrá libro con la serie del computador mágico?

  2. Gravatar J | 17/10/2013 at 06:45 | Permalink

    Podría hacerme de rogar, hacerme el sorprendido y tal… pero ¿para qué? Pues claro, probablemente lo habrá.

  3. Gravatar Macluskey | 17/10/2013 at 09:54 | Permalink

    ¡¡Que no me entere yo de que no lo hay!!!

Escribe un comentario

Tu dirección de correo no es mostrada. Los campos requeridos están marcados *

Al escribir un comentario aquí nos otorgas el permiso irrevocable de reproducir tus palabras y tu nombre/sitio web como atribución.