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

Computador mágico XIX – Pantalla sencilla




La serie “El computador mágico” está disponible también en forma de libro.

En el último artículo de esta serie mostramos el funcionamiento de una memoria RAM, y después Macluskey nos contó cómo eran las memorias de ferrita que se usaron en los 60 y 70. Hoy vamos a ampliarlo para hacer una especie de memoria un poco especial: una pantalla.

Vamos a hacer una pantalla muy muy sencillita, parecida a esas que hay habitualmente en muchos cacharros electrónicos.

 

 

 

Esta pantalla tiene 2 filas, cada una de ellas con 16 caracteres. Pero si te fijas con cuidado en cada uno de los caracteres te darás cuenta de que en realidad está formado por una matriz de bombillas: 7 bombillas de alto por 5 bombillas de ancho. Es decir, cada uno de los caracteres es algo así:

Así, si lo que queremos dibujar en esa matriz es una A, encendemos las bombillas de la siguiente forma:

Supongo que eres capaz de imaginarte cómo dibujar todas las demás letras y números, ¿verdad? Fíjate en que para hacer esa A, o cualquier otra letra, solo necesitamos tener 35 señales binarias, y cada una de ellas la conectamos a una de las bombillas. Si la señal es un 1, la bombilla se enciende; si es un 0, pues no. Y si ponemos 1′s y 0′s astutamente en esas 35 señales, podemos dibujar cualquier carácter. ¿Sí?[1]

El único problema es que nosotros no representamos cada carácter con esos 35 bits, sino, por ejemplo, con solamente 8 bits. Por ejemplo, supongamos que nosotros representamos nuestros caracteres en ISO-8859-15, como ya hemos visto anteriormente (igualmente podríamos haber decidido que fuera solo US-ASCII, da igual). ¿Podemos hacer un circuito que convierta esos 8 bits del código ISO-8859-15 a los 35 bits de nuestra matriz de puntos? Sí, claro que podemos. Eso es un circuito puramente combinacional, cuya salida depende exclusivamente de la entrada.

Sabemos que podemos construir ese circuito, así que lo dibujamos con el siguiente símbolo:

 

 

No vamos a diseñar ese conversor, pero espero que a estas alturas de la serie tengas claro que, aunque no lo hagamos, ese circuito es solamente combinacional y podríamos diseñarlo y construirlo si quisiéramos. Como tenemos 32 caracteres en nuestra pantalla, dos líneas de 16 caracteres cada una, simplemente ponemos eso mismo 32 veces:

 

 

Como este dibujo es demasiado grande, vamos a resumirlo con el siguiente símbolo:

Y ahora vamos a usar este componente en el siguiente circuito:

Fíjate en que el diseño es muy similar al que teníamos en el capítulo anterior para la memoria.

El decodificador se alimenta con el contenido del bus A, pero la mayor parte de las 4096 líneas que tiene de salida se ignoran. Solo las líneas de la 0×800 a la 0x81f se utilizan para ir al enable de cada uno de los 32 registros. Cuando llegue el tick de reloj, si en el bus de direcciones A hay una de las direcciones que no se ignoran, el contenido del bus de datos D se almacena en el registro correspondiente. Aquí, al contrario que en la memoria del capítulo anterior, no tenemos la parte de salida. Es decir, en esta “cosa” solo se puede escribir, no tenemos la señal R/W’.((Si quisiéramos hacer que se pudiera leer también no habría problema. Simplemente serviría para averiguar qué carácter se está pintando en pantalla, por si “se nos ha olvidado”. Pero vamos, se puede hacer, no molesta.)) La salida de los registros está conectada a los conversores de las matrices de bombillas (los registros sacan 16 bits, pero los conversores solo usan 8… los otros 8, simplemente se ignoran).

Fíjate también en que no es casualidad que la memoria del capítulo anterior fuera de 0×000 a 0x7ff y que aquí precisamente usemos las 32 posiciones siguientes: desde la 0×800 a la 0x81f.

¿Qué es lo que hemos conseguido con este circuito? Lo que hemos conseguido es que, desde el punto de vista de los interfaces, parezca una memoria. Es decir, yo puedo decidir almacenar el valor 0000 0000 0111 0011 en la posición de memoria 0×803. Dado que 0111 0011 es el código ASCII de la letra “s”, aparecerá una “s” dibujada en la cuarta columna de la primera fila de nuestra pantalla. Las ventajas de esta aproximación son varias:

  • Se usa como si fuera una memoria. Desde el punto de vista de todos los cacharros que pongamos ahora alrededor de esta pantalla, es como si fuera una simple memoria.
  • La “s” se queda ahí, mostrándose en la pantalla, hasta que alguien escriba en la posición 0×803 otra cosa distinta (o un espacio en blanco, si lo que quiere es “borrarla”).
  • Separamos el interfaz de la implementación. El decir, si mañana alguien inventa una forma más eficiente o barata de hacer esa pantalla, mientras siga comportándose como una memoria, solo tenemos que pegarle el cambiazo.

Bien, pues ya hemos conseguido una pantalla que luego nos hará falta. Vamos a representarla con el siguiente símbolo, si te parece bien:

 

En nuestros computadores modernos no se suele construir las pantallas de este modo. Para empezar, es muy habitual que en realidad sean dos componentes separados: la tarjeta gráfica por un lado y la pantalla en sí por otro (unidas a través de un cable VGA o HDMI o DVI o algo así). Además, dibujar caracteres es probablemente la cosa menos sofisticada que saben hacer: pueden dibujar polígonos, objetos 3D, calcular sombras… en fin, cosas sofisticadísimas (a menudo incluso son un ordenador en sí mismas). Pero a pesar de eso, no solo las pantallas, sino también el resto de dispositivos de salida del ordenador, siguen un esquema muy similar a este: se escribe en ellos como si fueran memoria y el dispositivo interpreta eso que hemos escrito para hacer lo que tenga que hacer.[2]

En el próximo capítulo veremos un muy muy rudimentario teclado para introducir datos al ordenador.

 

  1. A lo mejor te has dado cuenta de que los caracteres de control no pueden dibujarse, porque vaya, son de control, no son imprimibles. Nuestro conversor sacará esos caracteres de control como un cuadradito \diamond y listo, no pasa nada. []
  2. Esta no es la única forma de conectar pantallas u otros dispositivos al ordenador, pero sí la más extendida, por su versatilidad. []

Sobre el autor:

J ( )

 

{ 1 } Comentarios

  1. Gravatar Juan Carlos | 18/07/2013 at 03:22 | Permalink

    Recuerdo cuando hacíamos estas pantallas en la universidad (hace unos 15 años), pero hacíamos brillar Leds, colocados en posiciones estratégicas (formando la “pantalla”). Se “programaban” memorias ROM de lectura – escritura, generando estos programas (solo ceros y unos) en Excel.

    Que grandes momentos :D

    Saludos.

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.