013:hardware

¡Esta es una revisión vieja del documento!


Microhobby 13. Año II, del 29 de enero al 04 de febrero de 1985

Distribución de señales y alimentación de la ULA. (Fig. 1).

Primitivo de Francisco

La ULA, ese extraño, negro y caluroso circuito integrado, tantas veces mencionado y nunca bien entendido, va a ser desmenuzada en nuestras páginas a fin de que Vd. le pierda rápidamente el respeto para pasar a ser un elemento de su sistema, tan útil y conocido como pueda ser el propio microprocesador.

La ULA es un chip (término anglosajón equivalente a pastilla o circuito integrado monolítico) que ha sido diseñado por SINCLAIR RESEARCH para que el microprocesador se pueda relacionar con el cassette, teclado, altavoz o buzzer, monitor o salida de TV, RAM de pantalla y zona de variables del sistema.

La palabra ULA se corresponde con las siglas de UNCOMMITTED LOGIC ARRAY cuyo significado es: Matriz lógica no encargada. La ULA alberga en su interior, efectivamente, un conjunto de circuitos mayoritariamente lógicos, el chip es un «Custom» o circuito de encargo, diseñado por Sinclair, pero realizado por la firma Ferranti (la palabra uncommitted viene a indicar que si bien Sinclair no la realiza, sí posee todos los derechos).

La ULA es, en el ZX Spectrum, el chip que convierte a este micro en específico y, por tanto, incopiable si no se dispone de la ULA correspondiente, la cual, evidentemente, no está comercializada ya que, como se ha dicho, es un producto propio de Sinclair, que la incluye en sus Spectrum, unidad a unidad.

Conexión de la ULA a la RAM de 16KBytes y al resto del sitema. (Fig. 2). Distribución de señales a los terminales de la DRAM (RAM dinámica) 4116 (16 KBits). (Fig. 3).

El uso de la ULA en el Spectrum hace que la circuitería lógica para el acceso a teclado, cassette y pantalla, se encuentre disminuida al máximo al estar toda ella concentrada en este chip multi-funcional.

Analizándola más profundamente, se observa que ha sido diseñada conceptualmente con bastante eficacia, aunque para su total desarrollo han sido precisas varias ediciones, lo cual es fácil de observar leyendo los diferentes códigos numéricos de las ULA de los Spectrums que hemos abierto. Algo que hasta la fecha no ha quedado suficientemente resuelto, es el desmesurado calor que ha de disipar el CHIP, consecuencia directa del gran volumen de circuitos que ha sido preciso integrar para que la ULA cumpla la totalidad de cometidos mencionados.

Aprovechando este comentario en torno a la temperatura, aconsejamos, en base a la experiencia, que se pegue algún disipador a la pastilla de la ULA o simplemente un trozo de aluminio del tamaño de la misma con el fin de ayudarle en la evacuación del calor. En algunos casos de fallos espontáneos de algunos Spectrums, hemos comprobado que ésta era la solución; de todas formas, ayudarle a disipar siempre es bueno y puede colaborar a aumentar su vida.

En resumen, la ULA es un LSI (Larga escala de integración) que auxilia al Z-80 proporcionándole el adecuado acceso a los principales periféricos, es, por tanto, el segundo de a bordo en el Spectrum, empleando jerga marinera.

Podemos dividir la funcionalidad de la ULA en cinco bloques, cada uno de los cuales gestiona el acceso a los diferentes periféricos.

Aclararemos que estamos empleando el término de periférico a todo dispositivo externo al microprocesador que tiene una funcionalidad específica. Excluimos, por tanto, al bloque de memoria sin la cual no existiría un soporte físico para el software que ha de ejecutar el microprocesador.

El primer bloque de la ULA, es el encargado de posibilitar la exploración del teclado; el segundo bloque, es el que permite el acceso a cassette, tanto para salvar como para cargar; el tercer bloque, se ocupa de generar el sonido que se reproduce por el minialtavoz interno; el cuarto bloque, cumple la función de DMA o acceso directo a memoria (es usado, por ejemplo, para leer constantemente el fichero de presentación por pantalla, actualización de ciertas variables, etc.), y el quinto bloque, que se ocupa de generar las señales eléctricas de vídeo (luminancia, color y sincronismos).

Los cinco bloques, aunque independientes a nivel funcional, están interrelacionados por las señales de control del microprocesador mediante la lógica interna.

En la figura número dos, se muestra mediante el esquema eléctrico, la totalidad de conexiones de la ULA a sus circuitos y periféricos dependientes.

La ULA se encuentra encapsulada en plástico en formato DIL (Dual in line) de 40 patitas o pines. La distribución de señales se ve en la figura número uno.

El teclado: Direcciones de sus semifilas y salidas de sus columnas hacia el bus de datos. (Fig. 4).

Volvamos a la figura número dos, en ella se muestran las conexiones de la ULA al resto del microordenador.

En la parte superior, existen cinco terminales de entrada denominados KBD 9 a KBD13 que proceden directamente del teclado, por ellos, entrará la información de la tecla pulsada cuando lo requiera el programa. Por los terminales denominados A14 y A15 del bus de direcciones, la ULA se entera si el microprocesador está corriendo en los primeros 16 KBytes de RAM con los cuales opera en DMA (de esto vamos a tratar en un próximo artículo).

Las entradas denominadas Vcc, Vcc2 y GND, son entradas de alimentación. XTAL es el terminal que va asociado al cristal de cuarzo de 14 Mhz, verdadero corazón del Spectrum, bajo cuyo ritmo operan el microprocesador y la ULA. Esta entrada es, en realidad, el control del oscilador interno que proporciona el clock del sistema. Los terminales U y V entregan las señales de información de color para cada punto de pantalla barrido por el televisor o monitor de vídeo, y es la salida de luminancia y sincronimos de la señal de vídeo.

Por el terminal CASS/BUZ, circulan las señales de cassette o la señal sonora hacia el minialtavoz o Buzzer. Las señales MREQ, RDWR e INT proceden del bus de control del microprocesador. IORQGE es el terminal por el cual se direcciona la ULA. EL Z-80 accede a la ULA mediante el bit A0 del bus de direcciones y la señal IORQ cuando ambos son cero, la ULA se direcciona como puerto. Por el terminal CLK, la ULA inyecta la señal de reloj al Z-80, previamente dividida en frecuencia. El hecho de que el clock del microprocesador atraviese la ULA, determina que ésta pueda controlarlo, como también veremos detenidamente.

El terminal ROMCS bloque la ROM cuando es preciso dejar su bus en alta impedancia. Los terminales D0 a D7 van al bus de datos. Mediante los terminales DA0 a DA6 y RAS, CAS y DWR, la ULA obtiene el acceso directo a memoria al tiempo que colabora en el refresco de los primeros 16K Bytes de memoria RAM dinámica.

El teclado es el primer periférico controlado por la ULA que vamos a analizar. El teclado es eléctricamente una matriz de pulsadores de ocho columnas por cinco filas, lo cual corresponde a cuarenta teclas. Estas teclas así organizadas, son válidas tanto para el Spectrum normal como para el Spectrum Plus. En el Spectrum Plus el resto de las teclas son, en realidad, contactos en paralelo con las cuarenta básicas que desdoblan la operatividad de algunas de ellas y, por tanto, facilitan su manejo. Por ejemplo, la función DELETE, que en el Spectrum normal requiere el uso de dos teclas simultáneamente (CAPS SHIFT y 0), en el PLUS, la tecla independiente DELETE activa los dos contactos internos necesarios al ser oprimida.

Esquema eléctrico del teclado del Spectrum. (Fig. 5).

En ambas versiones del Spectrum, los pulsadores de las teclas están realizados por dos láminas de plástico con pistas metalizadas que se tocan cuando la tecla respectiva es actuada.

Las columnas del teclado van conectadas eléctricamente a los bits A8 a A15 del bus de direcciones, tal como se muestra en la figura número cinco. Cuando una tecla es oprimida, la señal del bit del bus de direcciones correspondiente entra en el bus de datos controlada previamente por la ULA.

Los diodos puestos en serie con cada uno de los bit de dirección, hacen que no se produzcan cortocircuitos entre ellos cuando dos o más teclas son activadas a la vez. Los terminales del teclado se conectan directamente a la tarjeta del Spectrum mediante dos conectores, por uno las filas y por el otro las columnas. Estos terminales están numerados desde KBD 1 hasta HBD13.

En la salida del teclado, se hallan cinco resistencias de 10K Ohmios que polarizan positivamente las salidas del teclado cuando no se ha oprimido ninguna tecla; por el contrario, cuando se activa alguna de ellas, el cero que genera el bus de dirección atraviesa el diodo y tras la tecla se presenta en la salida correspondiente poniéndola a cero.

Pongamos un ejemplo: Supongamos que se oprime la tecla R; cuando la rutina de exploración del teclado presente un cero en el bit A10 del bus de direcciones y el contacto de la tecla esté cerrado, el bit D3 será puesto a cero. Este cero llegará, finalmente, al bus de datos mediando la ULA que quedará a su vez habilitada por la propia rutina de exploración mediante el bit A0 = 0.

El teclado puede direccionarse mediante la rutina de exploración contenida en la ROM, o bien, directamente usando el puerto FEH (254) e interpretando después el dato recibido.

El teclado se encuentra dividido en dos bloques de semifilas. Cada una de las semifilas tiene cinco teclas y se corresponde con una dirección de puerto. Así, para todo el teclado se utilizan ocho semifilas.

En ambas semifilas, el dato se recoge con los cinco bits de menor peso del bus de datos.

La dirección de semifila se compone de dos bytes, el de menor peso ha de ser siempre FEH (en FEH el Bit A0 = 0) y el byte de mayor peso que es el que activa la semifila correspondiente. En la figura número cuatro se muestran la totalidad de las direcciones y los datos que se obtienen, direcciones y datos están expresados en decimal y hexadecimal para comodidad del usuario.

  • 013/hardware.1292107059.txt.gz
  • Última modificación: d/m/Y H:i
  • por miguel