Microhobby 5. Año I, del 04 al 10 de diciembre de 1984

Hardware: ¡Amplía tu memoria a 64K! (I)

Es normal para los que desean iniciarse en el BASIC y se deciden por un Spectrum, hacerlo en favor de la versión 16 K. Esta decisión se toma únicamente por razones económicas; pero pronto resulta fácil percatarse de la necesidad de más memoria.

Afortunadamente la tarjeta de circuito impreso del Spectrum está prevista para las dos versiones, siendo la básica de 16 K bytes; por tanto, su ampliación en 32 K bytes más para conformar los 48 K bytes, resulta fácil; tan sólo es preciso efectuar unos puentes e insertar en los zócalos libres los circuitos integrados para los que están dispuestos. El costo de esta ampliación viene a ser entre ocho y diez mil pesetas y los componentes necesarios se encuentran en el mercado en forma de kit o se pueden comprar de forma suelta.

Para efectuar la ampliación, tan sólo hay que adquirir previamente la información necesaria y decidirse. En este apartado damos las razones de cómo y por qué hacerlo.

64 K Bytes de espacio direccionable

El espacio total de memoria direccionable en el Spectrum es de 64 K bytes (1 K Byte es igual a 1.024 bytes. Se tomó este valor, tan aparentemente extraño, por ser el resultado de potencia binaria más próximo al número 1.000); 64 K bytes son, en realidad, 65536 direcciones, cada una de las cuales se corresponde con un octeto o byte.

Paginación del espacio de memoria en el Spectrum y sus cotas de dirección. (Fig. 1).

Estos 64 K bytes se pueden dividir en cuatro áreas funcionales para el Spectrum, a las cuales llamaremos páginas. Cada una de estas páginas es de 16 K bytes (16384 octetos) y tienen funciones específicas dentro de la totalidad del microordenador. A nivel Hardware el microprocesador se dirige a cada una de ellas con sólo poner el valor binario adecuado en los bits A14 y A15 del bus de direcciones. El resto de los bits, desde A0 hasta Al3, son usados para direccionar dentro de cada página.

  • Página 0: Abarca desde la dirección 0 hasta la 16383 (en hexadecimal desde 0000H hasta 3FFFH). Se encuentra totalmente ocupada por la ROM en que reside el BASIC; es por tanto inalterable su contenido y en ella están ubicadas las subrutinas a que apunta el microprocesador trás un reset (Dirección 0000H), una interrupción enmascarable (Dirección 0038H) o una interrupción no enmascarable (Dirección 0066H). Para acceder a esta página los bits A14 y A15 son puestos a cero.
  • Página 1: Abarca desde la dirección 16384 hasta la 32767 (En hexadecimal desde 4000H hasta 7 FFFH). Esta página se encuentra ocupada por ocho integrados de RAM dinámica, con una disposición interna de 16384 direcciones por un solo bit, por lo que hacen falta ocho bips para conformar el bloque de memoria de 16 K bytes. Este bloque se encuentra controlado para su refresco por el Z-80 y la ULA.
  • El hecho de que estos dos dispositivos pudieran acceder simultáneamente a las mismas posiciones de memoria, obliga a que uno de los dos tenga prioridad. En nuestro caso, dicha prioridad se le ha dado a la ULA, la cual genera y controla el reloj del sistema enviando hacia el microprocesador una señal de clock de aproximadamente 3,5 MHz. La ULA aprovecha esta circunstancia para ajustar el período del reloj evitando así los tiempos de coincidencia simultánea en el acceso a RAM. Debido a esto, el clock de la CPU no siempre es constante. En este bloque se hallan las principales direcciones del sistema como son: el área de presentación por pantalla y atributos, buffer de impresora, área de variables, etc.
  • Los dos bits del bus de direcciones que seleccionan esta página, se encuentran en los siguientes estados lógicos: A15 = 0 y A14 = 1.
  • Páginas 2 y 3: Abarcan desde las direcciones 32768 hasta la 45151 (8000H y BFFFH) para la página dos, y desde la 45152 hasta la 65535 (C000H y FFFF H) para la página tres. Los bits Al5 y A14 del bus de direcciones se encuentran a 1 y 0 respectivamente para la página 2 y ambos a 1 para la tres. Estas dos páginas de 16 K bytes cada una, conforman un bloque de 32 K bytes que, en realidad, se direccionan juntas mediante el bit A15 cuando éste es puesto a 1 por la CPU.

Este bloque es el que se encuentra libre en la versión Spectrum 16 K, y ocupado por memoria RAM dinámica en la versión 48 K.

Las memorias RAM dinámicas

Las memorias RAM dinámicas se diferencian de las estáticas en varios aspectos. Necesitan menos transistores para formar una celda elemental de memoria, por tanto, caben más celdas por unidad de superficie del chip. Esto obliga a aumentar el número de terminales para un mayor número de bits de dirección, inconveniente éste, ingeniosamente resuelto como veremos. Las memorias dinámicas mantienen su información gracias a la capacidad interna que existe en cada una de las celdas en donde hay un condensador asociado a un transistor; pero este condensador sólo es capaz de mantener su carga eléctrica durante aproximadamente dos milisegundos y, dado que la presencia o no de carga determina la información binaria contenida en la celda, se hace necesario recargar este condensador antes que hayan transcurrido los dos milisegundos: este proceso se denomina refresco. En cada ciclo de refresco se produce una lectura del dato almacenado en el condensador seguido de una reescritura. De esta manera el dato queda realimentado.

Diagrama de tiempos de la RAM dinámica TMS-4532. (Fig. 3).

En las memorias dinámicas empleadas en el Spectrum, el proceso de refresco se halla perfectamente integrado y tan sólo hacen falta tres señales con estructura de clock adecuadamente sincronizadas.

Las memorias estáticas, por contra, requieren más espacio en el chip, siendo su celda elemental un biestable que mantiene, sin más, su información con tal de no ser desconectada.

Su principal ventaja consiste en que su utilización es muy simple, aunque se requiere un mayor número de unidades para realizar un bloque de un mismo número de Kbytes. Pongamos un ejemplo: Para 16 K Bytes con RAM dinámica sólo hacen falta ocho chips de 16 K x 1 (Como la 4116) funcionando en paralelo. Para RAM estática sería preciso emplear 32 unidades de 1 K x 4 (Como la 2114).

Es obvio que en el Spectrum se haya recurrido al empleo de RAM dinámica para economizar espacio y costo, aprovechando las posibilidades de conexión para este tipo de memorias que están previstas en el microprocesador Z-80.

Los dos tipos de memorias dinámicas comerciales utilizadas para los bloques de RAM de 16 K y 32 K, han sido las TMS 4116 de 16 K x 1 y la TMS 4532 de 32 K x 1. La primera es la más antigua de las dos y requiere de tres tensiones de alimentación diferentes: + 5V, + 12V y — 5V; la segunda tan solo necesita + 5V.

En cuanto a las señales de control, son tres, denominadas RAS, CAS y WR.

  • RAS: Row Address Strobe (Permiso de dirección de fila).
  • CAS: Column Address Strober (Permiso de dirección de columna).
  • WR: Write/Read (Señal de escritura o lectura).

Circuito de ampliación de 32 K Bytes

Seguidamente, describiremos el circuito de ampliación de memoria. A los 16 K bytes de memoria RAM básica del Spectrum, le añadiremos 32 K bytes más, con lo que quedará convertido en un auténtico supermicroordenador de 48 K Bytes, listos, en su mayor parte, para ser utilizados por el usuario.

Diagrama eléctrico de la ampliación de la memoria RAM en 32 KBytes. (Fig. 2).

La memoria utilizada es la TMS 4532 de Texas Instruments, con quince bits de dirección doblados en dos ciclos (uno de ocho bits y otro de siete) para alcanzar los 32 K bytes. El doblamiento del bus de direcciones está efectuado por los dos conmutadores bidireccionales 74LS157. Cada uno de estos conmutadores es de cuatro bits, de manera que en un ciclo, introduce en los bits de direcciones de la RAM los primeros ocho bits de dirección y, en el segundo ciclo, los restantes. La entrada S de la pata 1 es la que produce la conmutación.

Llegados a este punto, le sugerimos siga el esquema de la figura dos y el diagrama de tiempos de la figura tres.

En el primer ciclo, la señal RAS introduce en la memoria los bits del bus de direcciones A0, A1, A2, A3, A4, A5, A6 y A14 con su flanco de bajada. Este grupo de bits equivale al direccionamiento de fila, ya que los bits del interior de la memoria están organizados en forma matricial de 128 x 256.

En el segundo ciclo, la señal CAS introduce en la memoria los bits del bus de direcciones A1, A8, A9, A10, A11, A12 y A13 mediante el flanco de bajada, que ha de estar retardado respecto del de la señal RAS, unos 40 nanosegundos (40 x 10¯9 SEG.).

Como se observa en la figura tres, la trasferencia del dato entre memoria y microprocesador se realiza una vez establecida la totalidad de la dirección en el segundo ciclo y en conformidad con la señal WR que determina si el ciclo es de escritura o lectura.

(0 para escritura, 1 para lectura). Observe que en la patita número 11 del integrado conmutador IC26 existe un puente opcional que podrá ir conectado a +5 ó a GND, según sea la variedad de la RAM adquirida. Este será el único puente a soldar por Vd. en el circuito impreso y su función es bloquear uno de los bits del segundo ciclo de doblamiento de dirección (al ser quince el número de bits (A08 - A14), y por tanto impares, sobra uno).

Las puertas lógicas OR y NAND de la izquierda de la figura 2 sirven para combinar las señales de control procedentes del Z-80, y producir los retardos adecuados para el desfase entre RAS y CAS y evitar que se solapen señales. La doble red RC de retardo, que se encuentra en el camino de la señal CAS (R61 con C63 y R70 con C64), asume este cometido.

El bit A15 es el encargado de direccionar este bloque de RAM tal como se dijo anteriormente. La señal MREQ tiene aquí doble sentido: por una parte, sirve para dirigirse a la memoria en los ciclos de escritura o lectura y por otra, cuando no se está accediendo a este bloque de 32 K, sirve de señal de reloj que moverá constantemente los ciclos de refresco mediante la señal RAS, la cual refresca la memoria actuando sobre las columnas. Por esta razón, MREQ penetra directamente sin retardo alguno, viéndose tan sólo amplificada en potencia por una puerta OR.

Descripción gráfica de los circuitos integrados usados en la ampliación de memoria. (Fig. 4).

Primitivo de Francisco

 
005/hardware.txt · Última modificación: d/m/Y H:i (editor externo)
Recent changes RSS feed Creative Commons License Driven by DokuWiki Made on Mac