Esquema eléctrico de la interface
Valoración de usuario: / 5
PeorMejor 
Sábado, 11 de Octubre de 2008 04:53

La interface usa varios circuitos integrados convencionales, memoria DRAM, una GAL20V8, y por supuesto, un TMS9929 o 9918A. El empleo de la GAL ha permitido por una parte reducir el número de integrados necesarios para el diseño, y por otra parte, corregir fallos de diseño con la simple re-programación del integrado, en lugar de tener que recurrir a cortes en las pistas y chips en "piggybacking".

English version is in progress. In the meanwhile, please use this Google automated translation version. It may be a little odd to read, but at least, you will get an idea of what's going on, if you can't read spanish.

Concretamente, la GAL20V8 se ha programado para actuar de control de decodificación de puertos de la interface: a sus entradas llegan las señales IORQ, WR, RD, para el acceso a puertos, los bits A0-A7 del bus de direcciones, y la señal de RESET (no usada en este prototipo).

La GAL activa una de sus salidas, etiquetada en el circuito como CSR, que vale 0 cuando se lee de los puertos 98h o 99h. Otra de ellas, CSW, se pone a 0 cuando se escribe en los puertos 98h o 99h. Van conectadas a los pines homónimos en el TMS9929.

La selección de puerto, 98h o 99h dentro del TMS, se hace mediante el pin MODE. Este pin va unido directamnente a A0, de tal forma que cuando se accede al puerto 98h, MODE vale 0, indicando un acceso a VRAM. MODE=1 indica un acceso a los registros del chip, y esto ocurre cuando se direcciona el puerto 99h (A0=1).

La GAL también responde a los puertos BEh y BFh. Cualquier acceso, sea de lectura o escritura, a cualquiera de estos dos puertos, hace que la salida etiquetada como CLKBI pase a nivel alto. CLKBI está conectada a la entrada de reloj de uno de los biestables del 7474. La salida DATABI, unida en el interior de la GAL a A0, va a la entrada D del mismo biestable. Al reiniciar el Spectrum, la señal de RESET del mismo, aplicada al pin CLR del biestable, lo inicializa a 0. La salida \Q del biestable, como ya se ha comentado, controla uno de los buffers triestado del circuito 74125, que permite o inhibe las interrupciones desde el TMS hacia el Spectrum.

Asimismo, la GAL también genera la señal IOULA, que ejerce de control de triestado para otro de los buffers del 74125, el que fuerza un 1 en IORQGE para deseleccionar la ULA al acceder a un puerto par.

La señal de reloj que necesita el TMS9929 es de 10,738 MHz (3 veces la frecuencia de reloj de color de NTSC). Ante la dificultad de encontrar cristales de cuarzo de esa frecuencia en concreto, se ha optado por generarla externamente, mediante un circuito integrado de montaje superficial especialmente diseñado para este fin: el LTC6900CS5. Este es un integrado que puede generar una señal cuadrada periódica de hasta 20 MHz. La selección de frecuencia se realiza simplemente mediante una resistencia. En el prototipo de la interface se ha cambiado la resistencia fija por dos: una fija, con un valor tal que la frecuencia ofrecida es cercana a la que necesitamos, y otra variable, en forma de potenciómetro de ajuste multivuelta de poco valor, de tal forma que la resistencia máxima del mismo, más la resistencia fija, den como resultado una frecuencia ligeramente mayor que la necesaria. Al ser multivuelta, es posible realizar un ajuste muy fino de la frecuencia entregada, para que sea lo más cercana posible a la nominal.

En las pruebas del prototipo, hemos encontrado que el TMS9929, que genera una señal de video por componentes, da una salida correcta incluso con una variación notable de la frecuencia respecto de la nominal. Sin embargo, el TMS9918A, que da señal en video compuesto en norma NTSC, tiende a distorsionar los colores en cuanto cambia ligeramente la frecuencia de trabajo.

Del 7404 sólo se usan dos puertas, necesarias para acomodar la señal de reloj generada por el circuito anterior: el TMS9918A/9929 necesita dos fases opuestas de la misma frecuencia. La salida del oscilador pasa por un primer inversor, cuya misión es escuadrar la señal y adaptar impedancias para prevenir desajustes en la frecuencia al aplicar carga. La salida de este primer inversor es una de las fases de la señal de reloj, y se aplica a XTAL1 en el TMS. Esa misma señal pasa por un segundo inversor, que la vuelve a invertir y la aplica a XTAL2.

El TMS9929 dispone de un bus interno al cuál van conectados los chips de memoria dinámica que conforman la VRAM. El diseño interno del TMS se pensó desde un principio para ser usado con memorias dinámicas tipo 4116 (las mismas que se usan para implementar los primeros 16K en el Spectrum). De hecho, este chip sólo permite chips DRAM en los que la entrada y la salida de datos están separadas, como es el caso de la DRAM mencionada. Actualmente las memorias DRAM integran en un único pin las funciones de entrada y salida de datos, así que para implementar la VRAM se ha tenido que optar por usar memoria procedente de NOS (New Old Stock), es decir, procedente de equipos viejos o excedentes de almacén.

Aunque el TMS sólo puede direccionar hasta 16K de VRAM, emplear chips de tipo 4116 es engorroso, ya que estas memorias son difíciles de encontrar, necesitan tres tensiones de alimentación, y además dichas tensiones deben ser aplicadas en un cierto orden, o hay riesgo de que el chip de memoria se estropee. Afortundamente, también existen memorias con la entrada y salida de datos separadas en formato de 64Kbit (4164) y 256Kbit (41256), que son además más comunes que la de 16Kbit (4116), y tienen la ventaja de que sólo necesitan una tensión de alimentación. Así, el diseño contempla el uso de memorias de tipo 4164 o 41256. Obviamente, hay líneas de direcciones no usadas: en el circuito, dichas líneas están permanentemente conectadas a 0 voltios.

Existen desarrollos posteriores del TMS, el TMS9129 y TMS9118, que soportan un bus de datos bidireccional para la comunicación con la memoria, eliminando la necesidad de usar chips DRAM con la entrada y salida de datos separadas.

La gran diferencia entre el TMS9929 y el TMS9918A es el tipo de salida de video que ofrecen. El primero genera una señal PAL de 50 campos por segundo, y usa un formato por componentes (YPbPr). Habitualmente, esta salida iba a parar a un circuito codificador PAL basado en el LM1889, que acepta precisamente video por componentes.

El TMS9918A por el contrario, aprovecha el hecho de que la frecuencia de reloj que usa es un múltiplo entero de la frecuencia de la portadora de color NTSC. Así, este chip genera, en el mismo pin que usa el TMS9929 para generar la señal Y, una señal en video compuesto compatible NTSC, si bien el fabricante advierte en el datasheet que la subportadora de color no tiene la frecuencia exacta, y es necesario corregir el resultado en el receptor de TV usando el control de "Tint" (sólo existente en receptores NTSC).

A partir de este esquema, se ha realizado un prototipo que permite utilizar tanto el TMS9929 como el TMS9918A. Para el primero, se puede usar el jack amarillo, donde se envía la señal Y que permite ver la imagen en blanco y negro en un receptor con entrada de video compuesto. Para verla en color se necesita un conversor YPbPr conectado a los tres jacks: Y (amarillo), Pb (negro) y Pr (rojo). El mismo jack amarillo emite una señal de video compuesto en color, según norma NTSC, si se usa un TMS9918A.

 
ZX Projects, Powered by Joomla! and designed by SiteGround web hosting