Controladora TDC-600 ¿Cómo funciona?

A continuación vamos a estudiar el circuito de la placa TDC-600. Es un circuito muy sencillo y claro ejemplo de como construir un interfaz. Está compuesto de una memoria ROM que contiene una ampliación de la BIOS del sistema, y un WD37C65B-PL que es un chip controlador de unidades de disco (floppy drives). Este es el esquema del circuito:

Teoría de circuitos informáticos y señales digitales:

Vamos a partir de la base de que todos conocéis algunos conceptos de electrónica general como que es un voltio o una resistencia y tampoco vamos a profundizar especialmente en los conceptos de electrónica digital, computación o código máquina… Ya veremos si más adelante los desarrollo en otro artículo.

Para no adentrarme en debates eternos haré algunas afirmaciones muy discutibles, pero las daremos por sentado para poder avanzar aun si hay que matizarlo más tarde.

En electrónica digital y computación se utiliza la lógica digital.

La lógica digital está compuesta por una serie de circuitos con entradas y salidas digitales, es decir, que tienen 2 valores como voltaje: 5V en algunos casos y 0V en otros, y esos voltajes son considerados como Verdaderos o Falsos.

Es lo que se llama 1 o 0 lógicos, también mencionado como H (alto) y L (bajo). Cómo digital proviene de dígito, pues también es como levantar o bajar un dedo.

Algunas señales de estos circuitos serán consideradas verdaderas cuando son H y otras en cambio cuando son L.

Para identificar cada señal se le suele dar un nombre, cuando las señales son ciertas en L se suele indicar en el nombre con una barra sobre el nombre, una barra inclinada antes o un asterisco al final:

_______
ejemplo, /ejemplo o ejemplo*

En este esquema en cambio he identificado estas señales como n_ejemplo, ya que también se les llama señales negadas (o invertidas).

Casi todos los circuitos se pueden dividir en sub-circuitos que hacen funciones muy especificas, y lo bueno es que estos sub-circuitos se pueden aprovechar para diseñar otros circuitos complejos con distinto propósito.

Dividamos el circuito de este adaptador por sub-circuitos. Primero vamos a analizar este fragmento:

A la izquierda vemos P1 que representa el conector de borde de tarjeta. Este conector tiene los pines pares en una cara de la tarjeta y los impares en la opuesta.

El conector de cartuchos es muy parecido a un BUS del sistema o como quizás lo conozcáis más “un conector para tarjetas de los PC”, pero tiene algunas características que lo diferencian relacionadas con el diseño de memoria en el estándar MSX. Para dominar la construcción de cualquier interfaz MSX, convendría estudiar este puerto de conexiones en profundidad, aunque de nuevo esta misión requiere un capítulo a parte.

Para aquellos que no sepáis interpretar un esquema electrónico,… estas conexiones que tiene el esquema de color verde representan un hilo de cobre independiente, y normalmente están identificadas con un nombre, mientras que las conexiones azules representan una “manguera de cables”, donde los hilos verdes entran por un extremo y salen por cualquier otro. Sería imposible de distinguir cual es cual si no tuvieran etiquetas identificativas, por eso pone esos nombres como “A0”. Al final todos los cables con “A0” están conectados entre sí.

Las señales identificadas como A0-15 pertenecen al BUS de direcciones y las señales identificadas con D0-D7 el BUS de datos.

El BUS de direcciones indica una posición de memoria a la que se quiere acceder y el BUS de datos contiene el dato en tránsito.

Es bien conocido que aunque el procesador Z80 no puede ver más de 64K, el sistema MSX esta compuesto de páginas y slots que nos permiten llegar mucho más lejos.

Así que cuando conectamos un cartucho al sistema, hay líneas de dirección conectadas, líneas de datos también, pero para saber cuando una memoria está en uso hay que mirar además otras señales como por ejemplo “slot select” (abreviada como SLTSL). Esta señal está activa cuando la memoria de un slot determinado está conectada a la memoria principal, como es una señal independiente, cada slot tiene la suya.

Fijaros ahora en el esquema de arriba, veréis que hay una conexión directa entre N_SLTSL (que significa lo mismo que /SLTSL) y /CE en el chip de memoria. Como ambas señales son negadas, significa que cuando el ordenador active “L” esa señal /SLTSL el chip de memoria considerará cierta esa entrada /CE. Para saber que significa CE miraremos en el documento técnico (datasheet) de ese chip que es una memoria (27C256), esto es lo que aparece:

Nota: este fabricante indica /E en lugar de /CE pero se trata del mismo número de PIN y con el mismo significado.

Esta es su función según la ficha técnica:

Bien, así pues, el chip requiere de que tanto la señal llamada /CE (/E) como la señal llamada /OE (/G) estén activas (L). Como la señal /OE del chip está conectada directamente a N_CS1 del BUS (o lo que es lo mismo /CS1), concluyo que el chip de memoria solo mostrará datos a la salida si tanto /CS1 como /SLTSL están activas (L).

¿Pero que es /CS1? Es una señal del sistema que solo está activa cuando el procesador se está dirigiendo a la segunda página de memoria, dicho de otro modo, cuando el bus de direcciones muestra un número entre 16384 (4000 en hexadecimal) y 32768 (8000h).

Es decir, cuando el Z80 se está dirigiendo a la memoria entre 16K y 32K.

Y bien, ¿que sucederá entonces? Que la memoria ROM 27C256B devolverá el dato que tenga en una posición de memoria ¿Cual?

Veamos, como A0 del conector de cartuchos esta conectada con A0 del chip y lo mismo sucede con A1… hasta A13, el número binario terminará igual en ambos sitios. La señal A14 en el chip no está conectada con el conector de cartucho si no que está conectado a GND directamente, esto significa directamente que solo se mostrará la mitad inferior de su memoria por tanto sólo 16K. Y como ni la línea A14 ni la A15 del conector de cartucho están conectadas a esta memoria, significa que el chip respondería el mismo dato repetido cada 16K, salvo que solo tiene la salida habilitada (/OE) cuando el bus de direcciones está en la segunda página (4000h – 8000h o entre 16K y 32K).

¿Y que hay de la señal /SLTSL, estará activa? pues cuando el MSX se enciende busca programas ROM en los slots del sistema y selecciona esas paginas en la memoria principal si es posible. Si la CPU se dirige a una dirección de memoria, la señal /SLTSL de ese slot está activa.

Todo ello a la vez significa que cuando la CPU pida leer la posición de memoria 4000h de ese slot, la memoria devolverá el valor de su posición interna 0000h.

Ahora analizaremos otra porción del circuito:

Esta porción del circuito se encarga de generar una señal de reloj cuadrada con la frecuencia del cristal indicado. El cristal es un elemento de cuarzo que permite el paso de la corriente a una determinada frecuencia según sea el cristal. En el ejemplo 16Mhz. El chip 74LS04 contiene varias puertas inversoras. Una puerta inversora suministra a su salida una señal digital inversa a la de su entrada (0 o 1). Si necesitáis más información sobre este integrado, podéis revisar su ficha técnica:

Explicar el funcionamiento del circuito generador de reloj requeriría de una larga explicación y dibujar las señales analógicas en tiempo real, aunque en realidad os basta con saber que este circuito genera una señal que cambia de estado lógico de manera constante a una frecuencia dada. Es decir, genera una señal de reloj a la salida, el pin 4 de U1.

Dicha señal alimenta la pata 23 del chip principal de la placa, el controlador de disco Western Digital WD37C65. Analicemos pues la siguiente sección:

Vemos aquí el punto de conexión entre el WD37C65 y el MSX, un integrado 74LS138N. Este es un circuito llamado de-multiplexor ya que convierte una entrada binaria en salidas independientes. los pines 1 a 3 (etiquetados como A0 a A2) activan una de las salidas (00-07) si los pines de inhibición (E1-E3) lo permiten.

Estos pines tienen que estar todos en un estado que habilite la salida, y sólo con que uno de ellos la bloquee el estado de los otros dos no importa. Quizás para algunos sea más fácil viendo la tabla de la verdad:

Según el fabricante etiqueta las patillas un poco diferente, aquí E1 es G1 o A2 es C, pero igualmente E1 ha de ser “H” y tanto /E2 como /E3 han de ser “L” para que la salida esté habilitada. En otro caso todas las salidas serán falsas (“H”).

Como estas señales están conectadas a /A14 (negado por una puerta inversora) y a /SLTSL, sólo si el slot está seleccionado y A14 es “L” las salidas estarán activas, en cuyo caso se activará (“L”) la salida correspondiente al número binario en las entradas A0-A2. Ojo, no confundir que estas entradas del integrado estén etiquetadas como A0 con la señal A0 del circuito, estas líneas están conectadas: A12 con A0 del integrado (pin 1) A13 con A1 (pin 2) y GND con A2 (revisad el esquema más arriba).

Como sólo las salidas 00 y 01 están conectadas a algún sitio (la conexión de 06 es un pequeño fallo del esquema original) el resumen es que cuando la entrada binaria es igual a “000” se activa la salida 00 y cuando es un “001” se activa la salida 01, todo ello si las señales A14 y /SLTSL lo permiten.

Aquí tenéis la ficha técnica completa de este integrado por si queréis ampliar información:

Siguiendo el circuito…

Las salidas del 74LS138 están conectadas a dos entradas del WD37C65. Que las señales del bus A14-A12 tengan que estar en “000” para activar /CS (“chip select”) en este chip, significa que el chip recibirá datos del bus cuando la dirección sea inferior a 1000h (sin tener en cuenta A15). Y que las señales A14-A12 tengan que estar en “001” para activar /LDOR en el WD37C65, significa que que este chip estará en el modo “LOAD OPERATIONS REGISTER” cuando la dirección esté entre 1000h y 1FFFh, de nuevo sin tener en cuenta A15 para este cálculo.

¿Que pasa con A15? No está conectada a este circuito. Aunque todo parece indicar que el segmento al que estará conectado este chip es el segmento alto (A15=”H”), sólo analizando el circuito eléctrico no podemos determinarlo, habría que analizar el código contenido en esta ROM o comprobar el estado de A15 con el ordenador en funcionamiento. Como el segmento bajo estaría en la misma página que la BIOS del sistema, es probable que /SLTSL sólo se active al acceder a la segunda o tercera página de memoria de este slot.

Así pues, el controlador de disco debe estar comunicando datos entre la unidad de disco y el sistema cuando la memoria accedida está entre 8000h y 8FFFh, y usando el registro de operaciones cuando la memoria accedida esté entre 9000h y 9FFFh.

Para saber más sobre el funcionamiento del WD37C65 deberemos buscarlo en su ficha técnica. Veamos el último fragmento del circuito.

Sería imposible explicar todo lo que está haciendo aquí el WD37C65 sin reproducir por completo la información en su ficha técnica, así que me conformaré con dar una explicación parcial.

El WD37C65 es un chip específicamente diseñado para comunicar diferentes tipos de ordenadores con unidades de disco de flexible de 5.15″ y de 3.5″

Entre las entradas que tiene conectadas en este circuito integrado están:

  • /RD y /WR que son dos pines conectados a las señales del sistema /RD y /WR. Sirven para establecer el sentido de la comunicación, sea del sistema a la unidad de disco o a la inversa.
  • /CS conectada a las señales provenientes del 74LS138 como se ha explicado anteriormente. Activa en el chip las comunicaciones de entrada o salida de datos del disco.
  • CLK1 está conectada al circuito generador de reloj. Marca el ritmo de trabajo del circuito WD37C65.
  • /LDOR conectada a las señales provenientes del 74LS138 como se ha explicado anteriormente. Carga el contenido del bus de datos en el registro de operaciones y permite que el MSX ordene ciertos comandos operativos (parar el motor, cambiar de sector, etc.).
  • DB0-DB7 conectado al BUS de datos del sistema D0-D7. Contiene el dato que se quiere comunicar al WD37C65 o que se está leyendo de él, sean datos de memoria o comandos dirigidos al propio chip.

/A0 establece el modo de acceso al registro, siendo 1 para datos y 0 para información del estado. No está permitido acceder al estado cuando está activo el modo de escritura (/WR).

El resto de salidas están conectadas a Vcc o GND para mantener fijo su estado. Por tanto pertenecen a opciones de este chip que no son aprovechadas en este circuito.

Y en cuanto a las salidas conectadas al WD37C65… hay que decir que son señales específicamente diseñadas para el propósito del chip, controlar la unidad de disco utilizando un conector para disco flexible de 34 pines, así que es básicamente una conexión directa entre varias salidas del chip y el pin del conector que cumpla ese cometido. Hay que recalcar que los conectores SU1 – SU4 sirven para cambiar el orden de ciertos pines y permitir así la conexión de diferentes tipos de disquetera, y por otro lado, las resistencias R1 a R4 son PULL-UP necesarias en ciertos tipos de conexiones para establecer el valor binario a “1” salvo que algún chip conectado fuerce esa salida a “0”.

Espero que esta explicación del funcionamiento de la controladora de disco TDC-600 os ayude a comprender el funcionamiento básico de la mayoría de cartuchos de interfaz sencillos.

J. Solís

MSXmakers member.

2 comentarios sobre “Controladora TDC-600 ¿Cómo funciona?

  1. Thank you! You are right, the IDC connector is on the wrong way. You must connect the ribbon cable rotated 180 degrees as detailed in the step-by-step instructions. We did not create this design, but I will let it know it in the text.

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Crea tu sitio web con WordPress.com
Empieza ahora
A %d blogueros les gusta esto: