Desarrollo de una tarjeta ISA de transputer
En los años 1993-1996 desarrollé software para transputer. Hace poco escribí algunos artículos sobre mi experiencia, y más recientemente desarrollé
un emulador de transputer en Javascript.
Después de que mi emulador de transputer en Javascript funcionara, me dio curiosidad de correr mi software en una computadora PC. Tengo varios motherboards de PC con conectores ISA, y decidí construir una tarjeta compatible con la Inmos B004 (una tarjeta para probar procesadores transputer). Por curiosidad me decidí por la compatibilidad, ya que quería correr el compilador Occam de Inmos.
Un rápido vistazo en eBay y obtuve dos tarjetas de transputer (TRAMs) por $25 dólares cada una. Ambas basadas en el transputer Inmos T805 corriendo a 30 mhz.
Obtuve los números de puerta de las tarjetas de
Geekdot, y diseñé un esquema para decodificación basado en circuitos TTL.
Mi primer esquema para la tarjeta.
La tarjeta del TRAM contiene el transputer y su memoria. Se conecta a la tarjeta ISA con un chip Inmos C011 que serializa y deserializa el enlace de comunicaciones. Este chip se accesa a través de las puertas 0150H-0153H. Mi tarjeta ISA también provee un oscilador de 5 mhz, dos flip-flops para resetear y analisar el transputer, y una compuerta triestado para leer el estatus de error.
Puertas de una tarjeta Inmos B004 |
Offset | Franja |
0150H Lectura | Recibir datos |
0151H Escritura | Enviar datos |
0152H Lectura | Estatus de recepción |
0153H Lectura | Estatus de envío |
0160H Escritura | Latch en bit 0 = Directo a Reset |
0161H Escritura | Latch en bit 0 = Directo a Analyse |
0160H Lectura | Bit 0 = Directo de notError |
Requería una tarjeta ISA perforada para el desarrollo. Consideré comprar una tarjeta de eBay por $35 dólares enviada, pero consideré que era demasiado costosa. Después de buscar un poco, encontré la librería de PCBWay, donde este mismo tablero estaba disponible para venta. Y mejor, podía obtener 5 tarjetas de 10x10cm por $25 dólares enviada.
La tarjeta ISA para desarrollo.
Una vez que obtuve la tarjeta, comencé a poner bases para los chips. Me tomó un rato hacer que funcionara el oscilador. Cuando generó los 5 mhz, empecé a alambrar las demás partes, probando como fuera posible. Estaba tan feliz haciendo esto, que nunca observé que puse los componentes por el lado de soldadura. Mi primera inserción en un motherboard de PC destruyó dos 74LS08 cuando pasaron 12V+ a través de ellos, hasta que me dí cuenta que la tarjeta estaba al revés.
La tarjeta también tenía bastante ruido producido por el alambrado. Después de agregar algunos capacitores de desacoplo, pude correr
mi compilador de Pascal y software de ray tracing de 1993.
La tarjeta de transputer funcionando con el ray tracer. Note el lado equivocado de montaje.

La tarjeta ISA que construí.
Yendo al camino del PCB
Unas semanas después, decidí aprender un poco sobre KiCAD 9, y lo instalé en mi Macbook Air. Habiendo usado OrCAD hace muchos años, y mis propios programas que desarrollé después (debo escribir algo acerca de eso), reconocí muchas de las herramientas, y afortunadamente para este artículo, KiCAD viene con un componente prediseñado para un bus ISA.
Una vez que puse el componente de bus ISA en la hoja, me pregunté si había un 74LS245 en la librería, y sí. Comencé a agregar los componentes, alambré las patas, y también utilicé el diseñador de componentes para crear el chip Inmos C011 y el módulo del TRAM.
En menos de dos horas tenía un esquema de mi tarjeta de transputer. Lucía muy bien, y de algunos tutoriales en Youtube había escuchado que hay una camino muy fácil para hacer el circuito impreso a partir del esquema, así que exporté la netlist, solucioné algunos errores, e invoqué el programa de circuitos impresos. Descubrí que me faltaba el componente del TRAM.
Con el componente diseñado, todos aparecieron casi mágicamente en el espacio de trabajo. Solo tenía que clickear y arrastrar y soltar los componentes a su lugar. ¡Fue genial! No encontré un autorouter, así que comencé a dibujar algunas líneas.
Ya había trabajado cinco horas en esto, y estaba muy aburrido porque tenía que redibujar línea tras línea para hacer espacio en la tarjeta, o básicamente cada vez que una línea cruzaba por el lugar equivocado y bloqueaba otras líneas. Había escuchado de un autorouter para KiCAD, pero requería instalar Java (recuerdo por 2010 como evitaba el lento y raro instalador de Oracle), pero no pude encontrar como decirle a KiCAD que había bajado un autorouter.
Resulta que KiCAD ha pasado por tantas iteraciones que existen tutoriales desde KiCAD 6, y estaba leyendo información de la versión equivocada. En KiCAD 9 solo se requiere abrir la ventana de complementos desde la ventana inicial, seleccionar Freerouter, y también se requiere instalar una versión compacta de Java llamada Eclipse Temurin.
La autoruta no funcionó en el primer intento, porque la silueta de mi tarjeta estaba abierta. Después de un poco de trabajo, pude lograr que la silueta fuera un polígono cerrado. Me aseguré de que el chequeo de reglas de diseño fuera correcto (DRC), y con un poco de trabajo más volví al esquema para anotar las líneas sin uso, y corregir las líneas de voltaje.
Piqué en el icono de autoruta, y Freerouter apareció. Esperé la cuenta regresiva de 5 segundos, entonces mi tarjeta apareció ¡y 10 segundos después estaban todas las líneas dibujadas correctamente!
¡Fue tan sorpresivo! Mis recuerdos vinieron de la niebla de los tiempos, cuando el único software disponible era Ultiboard y tenía un precio de $5,000 USD, después Orcad PCB con su autoruta lenta y terrible, y ahora tenía mi tarjeta completada gracias al esfuerzo de innumerables personas.
También fue muy agradable poder seleccionar una opción de menú para obtener una vista 3D de la tarjeta.
La vista 3D de mi primer PCB de transputer.
PCBWay
KiCAD exportó los archivos Gerber y Excellon. En los viejos tiempos, existía un plotter Gerber que hacía una versión a escala 1:1 de la tarjeta para el proceso de negativos, y el formato de archivo (con mejoras) todavía se usa en estos tiempos modernos. Parece que voy rápido, pero en realidad solo es que ya conocía mucho de esto.
Lo que no esperaba es que arrastrando un zip de los archivos Gerber en la página web de PCBWay te da una cotización inmediata, hice el cargo a mi tarjeta, y diez minutos después el PCB estaba siendo fabricado en Shenzhen, China. Eso es el poder de Internet desatado.
Al siguiente día, estaba mirando de nuevo mi tarjeta de circuito, y descubrí que debido a mi impulsividad, todas las líneas de poder eran de 7 mils de ancho. ¡Rayos! El transputer necesita un amper para trabajar, pero por suerte 7 mils es suficiente para 1 amper. Sin embargo, nunca se deben hacer líneas tan delgadas, se necesita tolerancia, así que encontré la configuración de diseño e hice las líneas de voltaje más anchas para la siguiente revisión.
Una semana después obtuve mis primeras tarjetas, y la primera cosa que noté fue que algunas referencias de componentes no estaban. Mi error, nunca noté que KiCAD muestra dos etiquetas en la tarjeta, y creí que ambas se iban a imprimir, pero en lugar de eso es una para referencia local, y la otra es para la mascara.
Además al construir la tarjeta, el primer paso del oscilador de 5 mhz. no producía ninguna señal. Me tomó como tres horas descrubrir que había intercambiado por accidente los lugares del cristal y el capacitor en el diagrama. Afortunadamente pude intercambiar los componentes en la tarjeta.
En el último paso de la construcción, descubrí que las patas de Reset y Analyse estaban invertidas. Estaba confundido porque el esquema parecía correcto. No fue hasta que hice un zoom enorme que vi el error (KiCAD brilla aquí, ya que me mostró el número de pin dentro del pad de componente). Había diseñado incorrectamente el componente, nunca noté que puse primero el pad en la locación del pin 10, y luego el siguiente en la locación del pin 9, pero KiCAD asignó los números secuencialmente. Así que los pins 9 y 10 de la TRAM estaban invertidos (Reset y Analyse), y el autorouter lo siguió ciegamente. Raspé las líneas en la tarjeta, puse cables, y la tarjeta funcionó correctamente.
Las revisiones de mis tarjetas de transputer.
Más errores
No quedé satisfecho con esto. Otra cosa que olvidé es que como ahora usaba una tarjeta de circuito impreso, la cantidad de ruido en las señales había disminuido, así que podía usar la velocidad de 20 megabits del serializador. Sin embargo, como había conectado las líneas de configuración directamente a tierra, no había una forma fácil de separarlas.
Modifiqué el esquema, añadí dos jumpers; uno para seleccionar la velocidad y otro para la puerta. Porque quería poner dos tarjetas de transputer en mi PC, solo por hacerlo y ver algún trabajo en paralelo, pero no compatible con el software de Inmos.
Revisé todo cuidadosamente, ejecuté todas las pruebas DRC, y lo envié a PCBWay para tener el producto terminado. Esta vez en color rojo.
Cuando recibí el PCB, me quedé asombrado de que la tarjeta sola detuviera la PC. Resulta que cuando moví un componente en el diagrama, de alguna forma KiCAD decidió agregar un punto de conexión en una línea para hacer el crossover definitivo entre la línea de datos D0 y la línea de dirección A4. El DRC no reconoció el error porque D0 es triestado, así que entra en el reino de las posibilidades tener D0 conectado a A4.
Fue muy triste porque la línea D0 se usa en varios lugares, pero tuve la suerte de que la autoruta dejó las líneas en un lugar perfecto y solo tuve que cortar en dos lugares y agregar un cable. ¡La tarjeta funcionó!
Corté las líneas en las otras tarjetas en caso de que algún día construya más. No quedé satisfecho, así que ordené otra tarjeta corregida de PCBWay, pero esta vez en color azul y aproveché para organizar algunos componentes.
La revisión final del diagrama.
La tarjeta azul
Una semana después tenía la PCB en mis manos, la construí en menos de una hora, y comencé a probarla. Todo funcionó perfectamente, incluso una
demo de Mandelbrot que obtuve de Geekdot.
Se sintió bien, así que decidí (al fin) probar el compilador original Occam de Inmos. Después una instalación latosa, configurar muchos dispositivos y directorios (me acabo de dar cuando de que había pasado muchos años sin editar archivos CONFIG.SYS y AUTOEXEC.BAT), logré ejecutar el compilador, y solo dijo "Transputer error set".
WTF? La única cosa que podía suceder era que requería el flag de error sin modificar. Yo utilicé un 74LS368 que invierte su salida, porque decidí que si se pone Reset y Analyse a 1, entonces probablemente también espera un 1 como error. Desoldé el chip, y estaba a punto de soldar el 74LS367 cuando decidí desensamblar el archivo ISERVER.EXE de Inmos para asegurarme de que estaba haciendo lo correcto.
Encontré fácilmente el código que pone la puerta 0150H como base, y deriva varios números de puerta. Encontré la puerta para leer el estatus en el primer intento, y entonces el código para leer el bit. El programa extraé el bit menos significativo (esto confirma que los valores en D1-D7 no son importantes), y lo complementa. Esto significa que espera el bit NotError sin modificar.
Con este voto de confianza, soldé el único 74367 que tenía a mano ¡y el compilador de Occam funcionó! Por cierto, el 74LS367 y el 74LS368 tienen pins compatibles.
Hice el cambio en el diagrama y en la mascara del circuito impreso para publicarlo.
La revisión final del PCB.
Diagramas y tarjeta PCB
Los esquemas en formato PDF y KiCAD estan disponibles en
https://github.com/nanochess/transputer. Preferí poner el PCB solamente en formato Gerber junto con los archivos de perforado. Solo se necesita comprimir los archivos en formato ZIP para mandarlos a PCBway.
Varias personas han sugerido pedir el PCB con conector con chapado de oro y la orilla biselada. Esto es a tu opción.
Como tengo varias tarjetas extra, puedes obtener uno armado y probado por $74 USD, envío incluído. Válido mientras tenga existencia. Necesitas proveer tu propio TRAM (la tarjeta con el transputer) y el chip Inmos C011.
Finalmente, el
software de apoyo esta disponible en el mismo repositorio. Contiene el programa
comm.com para ejecutar mi compilador de Pascal o el ray traer, y el programa
comm2.com para correr mi sistema operativo pequeño autocontenido desde un disco floppy de 1.44mb. Todavía tengo que escribir otro programa de comunicaciones para mi sistema operativo grande.
Ligas relacionadas
Última actualización: 03-jul-2025