Microhobby 15. Año II, del 12 al 18 de febrero de 1985

Hardware: Interioridades y funcionamiento de la ULA (y III)

Primitivo de Francisco

Tratamos en esta tercera y última parte, de cómo el microprocesador y la ULA comparten el mismo segmento de memoria, compuesto, principalmente, por el fichero de presentación por pantalla, tanto para la definición de la imagen como para su color. También analizamos las tomas de cassette como salidas óptimas para conectar un amplificador de audio.

Existen fragmentos de memoria en los primeros 16 K bytes, que microprocesador y ULA comparten simultáneamente. Este artificio de diseño no es original, pues la mayoría de los sistemas disponen de recursos similares para ahorrar memoria y evitar complejos protocolos en el acceso a zonas comunes.

En el Spectrum, las direcciones compartidas son: Desde 4000H-(16384) hasta 57FFH (22527) (Este bloque de memoria se corresponde con el fichero de presentación visual). Y desde 5800H (22528) hasta 5AFFH (23295) (Fichero de atributos de pantalla) y desde 5C00H (23552) hasta 5CB5H (23733) (Fichero de variables del sistema).

El fichero de presentación visual o fichero de pantalla, se compone de 6144 bytes cuyos bits se corresponden con los pixels de la pantalla. Recordemos aquí que el rectángulo de alta definición en el centro de la pantalla consta de 256 pixels por línea existiendo, a su vez, 192 líneas, lo que da un total de 49152 pixels.

Como hemos dicho, cada pixel se corresponde con un bit del fichero de pantalla, por tanto, los 49152 pixels tienen su equivalente con los 6144 bytes ya citados (49152 X 8 = 6144).

El fichero de atributos de la pantalla, que se encuentra físicamente a continuación del de ella, tiene una longitud de 768 bytes. En este fichero cada uno de los bytes atienden al color de tinta y papel, flash e inversión de cada uno de los cuadrados de baja resolución que constituyen el mosaico de la pantalla. Recordemos también aquí que en el Spectrum la baja resolución está formada por 24 filas y 32 columnas, dando un total de 768 cuadraditos. Cada unidad de este mosaico es capaz de representar un carácter alfanumérico o gráfico con el formateado que proporciona directamente el sistema.

En el Spectrum, los atributos de pantalla no funcionan en alta resolución, por lo que 768 bytes son los suficientes para este cometido.

La zona de RAM dedicada a variables del sistema, también es compartida por el Z-80 y la ULA, aunque no en su totalidad. Esta zona ocupa 182 bytes en donde se almacenan las variables que requiere el sistema operativo en función de la rutina del mismo en ejecución.

Como ejemplo de variables en que ULA y Z-80 tienen acceso común tenemos los tres bytes del contador de cuadros que se incrementan por la ULA cada vez que se produce un impulso de sincronismo de cuadro de la señal de vídeo; por tanto, el contenido de estos bits se incrementa cada 20 milisegundos (recordemos que la frecuencia de cuadro es de 50 Hz).

A estas tres posiciones de memoria, el Z-80 puede acceder tanto para leer como para escribir un dato, a partir del cual la ULA irá incrementando a su ritmo habitual. Estas tres posiciones se encuentran bajo el nombre de FRAMES y ocupan las direcciones 5C78H, 5C79H y 5C7AH (23672, 23673, 23674).

Estructura de conexión de la RAM compartida

Areas de memoria compartida por la ULA y por el microprocesador.

Ya hemos dicho que únicamente los primeros 16 K bytes de RAM se encuentran compartidos por el Z-80 y la ULA, aunque esto sólo ocurre en las direcciones anteriormente mencionadas. Las prioridades de acceso a las direcciones compartidas la tiene la ULA, esto tiene su explicación en el hecho de que ésta ha de estar leyendo constantemente el fichero de pantalla de manera simultánea con el haz catódico que explora continuamente la pantalla.

Si detenemos el microprocesador, por ejemplo, mediante un reset, manteniéndolo constantemente oprimido, se observa que la imagen de pantalla se paraliza; pero sigue su contenido presente. Esto se obtiene gracias a que es la ULA, de modo independiente, la que gestiona la presentación por pantalla, evidentemente, al dejar de oprimir el boton reset, el microprocesador tomaría de nuevo el control, yéndose a la dirección 0000H y destruyendo el contenido dememoria.

Hemos dicho que la prioridad de acceso la tiene la ULA; pero en los primeros 16 k bytes también puede residir un programa, es más, de hecho es en sus direcciones en donde empieza el BASIC, luego es posible que ambos accedan al tiempo, compartiendo los mismos buses. Esto, Sinclair lo ha resuelto ingeniosamente mediante un sencillo, pero eficaz, protocolo entre ULA y Z-80 que además de ocupar poca circuitería, evita parpadeos en la imagen.

Cuando el Z-80 está corriendo en direcciones superiores a la 8000H (32768) o, lo que es lo mismo, en direcciones superiores a los primeros 16 K bytes, la independencia eléctrica de los buses se obtiene gracias a dos bloques de resistencias en el bus de datos y en el bus de direcciones, sus valores ohmicos son de 330 Ohmios para el bus de direcciones y de 470 Ohmios para el bus de datos.

En la figura 2, se muestra el esquema de bloques con que se pueden comprender mejor estos conceptos. También en la figura 1 del primer artículo de esta serie dedicada a la ULA, se muestra la totalidad de las conexiones a la ULA.

El mayor conflicto se presenta cuando ULA y microprocesador han de acceder a idénticas posiciones o al bloque de 16 K bytes, entonces la ULA se entera gracias a que los bits A15 y A14 del bus de direcciones están a 0 y 1 respectivamente, es decir, se encuentran direccionando este bloque de RAM, en este instante, la ULA detiene al Z-80 simplemente bloqueando su CLOCK.

Como ya mencionamos en su día, el clock o reloj del sistema lo genera la ULA controlada por un cristal de cuarzo de 14 megaherzios, en su interior, esta frecuencia es aprovechada por la ULA y entregada previamente dividida hasta 3,5 Mhz que es la frecuencia a la cual opera en el Spectrum su Z-80, merced a que utiliza la versión Z-80A (versión rápida).

La ULA sólo detiene al microprocesador cuando éste pretende acceder a los 16 K bytes citados, nunca lo detiene cuando éste esta accediendo a la ROM o a los 32 K bytes restantes.

Esquema de bloques de! acoplamiento de la ULA con el Z-80 y los 16 K bytes de RAM dinámica.

La señal de refresco del Z-80 (RFSH), la señal RAS y SEL del selector de dirección, se encuentran entrelazadas también por sendas resistencias, ya que el refresco y selección puede ser también completado por la propia ULA.

Debido a que la ULA controla el CLOCK del sistema de esta forma tan original, no es recomendable utilizar rutinas de retardo en código máquina ubicándolas en los primeros 16 K bytes de RAM, porque ello dará como resultado tiempos altamente irregulares, tal y como hemos podido comprobar con un osciloscopio.

El transistor que se halla en el clock, actúa como inversor de fase, como amplificador y como adaptador de impedancias. La frecuencia de 3,5 MHz, es relativamente alta y es bueno restaurarla y dejarla perfectamente cuadrada, tal como se requiere en el clock de un microprocesador, en el cual todas las señales interiores dependen muy directamente del clock y de su ciclo de trabajo (onda perfectamente cuadrada).

La RAM utilizada en los 16 K bytes

Distribución de señales a los terminales de la DRAM (RAM dinámica) 4116 (16 K bits).

Para el bloque de 16 K bytes, se ha utilizado una RAM dinámica relativamente antigua, con una capacidad de 16 K bits por chip.

La 4116 es una memoria bien conocida comercialmente y es, por ello, por lo que ha sido usada en el Spectrum posiblemente para contribuir a reducir el costo del sistema.

La 4116 tiene el gran inconveniente de necesitar tres tensiones diferentes para polarizarla, esto obliga a utilizar una fuente de alimentación más complicada.

Su distribución de terminales y estructura interna son representados en las figuras 3 y 4.

La figura 4, va dirigida en especial a los lectores más introducidos, por lo que hemos mantenido en inglés sus inscripciones que es como comunmente se encuentran en los catálogos.

Las interrupciones en la ULA

Estructura interna de la RAM dinámica 4116.

La ULA tiene un acceso directo al bit de interrupciones del Z-80 mediante sus dos terminales denominados INT. La ULA es la que genera todas las señales de vídeo, por tanto, conoce en todo momentó la situación en que se encuentra el sistema.

Debido a esto, la ULA provoca una interrupción de las llamadas enmascarables cada 20 milisegundos coincidiéndo con el impulso de sincronismo de cuadro de la señal de vídeo.

Las interrupciones que provoca la ULA son exclusivamente para muestrear el teclado, misión que se ejecuta regularmente cada 20 milisegundos. Cuando se provoca una interrupción, el microprocesador abandona el programa en el punto en que se encuentre, y salta de inmediato a la subrutina de muestreo de teclado, una vez cumplimentada, continúa con el programa en cuestión.

Las interrupciones enmascarables pueden ser evidentemente bloqueadas por programa, por lo que en esto sí tiene prioridad el Z-80, así que, aunque la ULA hace inexorablemente una petición de interrupción en los períodos indicados, no siempre ésta es atendida.

La entrada de interrupción también puede ser pedida desde el exterior del Spectrum por el terminal A13 del conector posterior. Para evitar conflicto de señales existe la resistencia de 680 Ohmios en serie con la entrada INT de la ULA.

Salidas de audio del Spectrum

En un artículo anterior, dentro de esta misma sección de hardware, concretamente en el número 9, tratamos de toda la circuiteria y funcionalidad de los accesos a cassette que también gestiona la ULA.

Seguidamente, nos ocuparemos de cómo utilizar las tomas para cassette como salidas eficaces para conectar un amplificador de audio.

En principio, MIC y EAR pueden ser tomadas como salidas ambas, con la única diferencia de que mientras MIC es de relativamente alta impedancia, EAR es de impedancia baja.

En la figura 5, presentamos un sencillo amplificador de audio de resultados sorprendentes con poco costo. El potenciómetro de 1 OK Ohmios puede ser lineal para el control de volumen y el transistor cualquier NPN, por ejemplo: un BC-107 mejor uno del tipo Darlington.

El altavoz puede ser de cualquier impedancia; pero mejor uno de 8 ohmios de dos o tres pulgadas. La tensión de 9 V puede ser cualquier otra de ese orden, entre 5 y 12 voltios.

Esquema eléctrico de la conexión de un sencillo amplificador a la toma de EAR del Spectrum.

 
015/hardware.txt · Última modificación: d/m/Y H:i por miguel
Recent changes RSS feed Creative Commons License Driven by DokuWiki Made on Mac