archivo

Archivos Mensuales: May 2021

El peligro de tener una alimentación dual 5V/9V es que puedes meter 9V en una tarjeta configurada para 5V. Eso me pasó a mí con mi QubIDE. Vi claramente cómo salía humo de uno de los chips. Pues nada, esta QubIDE hay que arreglarla.

Lo primero que pensé fue cambiar los chips GAL, que eran los que estaban más cerca de donde salió el humo. Por fortuna el contenido de los GAL está publicado en Internet, así que me compré unos chips Lattice GAL16V8D-15 y un grabador TL866 II PLUS, grabé los chips y a probar. Aquello no funcionó. Probé con varias versiones de ficheros Jedec que encontré para los GAL, pero ninguna funcionó.

Lo siguiente fue comprar el resto de chips de la QubIDE. Mirando las datasheets, en todas más o menos se decía que los chips soportaban instantáneamente una tensión máxima de 7V, luego con unos 9V durante varios segundos va a ser que se han quemado todos. Conseguí todos los chips (los 74HCT646 me salieron muy caros, pero no había otra) y a probar. Tampoco funcionó. Empecé a pensar que se había quemado alguna pista o alguna otra parte que no veía.

Si tuviera una QubIDE funcionando podría comprobar cada uno de los chips por separado hasta encontrar el problema, pero no tengo. Así que pensé: como están publicados los esquemas y los jedec, pues me la fabrico.

Cogí el esquema publicado por Zeljko Nastasic, el autor del hardware de la QubIDE, y me puse a dibujarlo en KiCad.

Se trataba de hacerlo lo más parecido posible al original, si no idéntico. En algunos detalles me tuve que fijar en la QubIDE real para ponerlos iguales. En el proceso dibujé símbolos especiales para los GAL, como si fueran componentes por sí mismos, y también dibujé símbolos especiales para los conectores de bus ATA y de bus QL.

Después pasé a dibujar el PCB, posicionando los componentes y fijándome en las pistas tal y como están en la QubIDE real, pero la placa original es de cuatro capas y las pistas interiores no se ven, así que tuve que tirar de FreeRouting para colocar el resto de pistas en mi dibujo, por supuesto, también de cuatro capas.

Aquí disponía de todas las huellas necesarias para el dibujo de la placa, pero también quise verla en 3D porque me apetecía, y los modelos 3D no estaban todos, de modo que tuve que modelar los conectores DIN 41612 para ver la infografía a gusto.

Los modelos 3D los he hecho con OpenSCAD, de OpenSCAD los he pasado por partes como STL a FreeCAD, y de FreeCAD los he exportado a WRL para finalmente importarlos en KiCad.

El siguiente paso es hacer un pedido de componentes a Mouser y un lote de placas a JLCPCB. Las placas han de ser como mínimo cinco, y los componentes, cuantos más mejor para ahorrar, y, bueno, compré componentes suficientes para montarme dos, por si metía la pata con una de ellas. Un tiempo después llegaron los componentes, y un poco más tarde las placas.

Hora de ponerse a soldar.

Mientras tanto grabo las EPROM con el nuevo driver que hizo Alain Haoui, para esto también me vino bien el grabador que compré al principio de esta historia.

Estando ya todo en su sitio la enciendo por primera vez sin conectar ningún dispositivo y esto es lo que sale:

Hasta ahora todo bien. Me alegro de que no hubo ningún error en el PCB. Conecto una tarjeta SD con un adaptador ATA de 40 pines y la reconoce, bien. Pruebo con varios dispositivos más y todos los reconoce, bien.

Escribo unos comandos para formatear una tarjeta y empezar a usarla.

WIN_FORMAT 1

WIN_DISK “INITIALIZE”,1

WIN_DISK “CREATE”,1,1,121

FORMAT “WIN1_SD128M”

WIN_FORMAT 0

Aparentemente va todo bien. Escribo algunos ficheros y parece funcionar. Reseteo el ordenador y no lee bien la tarjeta SD, no reconoce la FAT. A veces sí, a veces no. Tiene un funcionamiento errático.

Repaso los GAL, tengo tres versiones diferentes, la versión 1 que sólo sirve para las versiones 1.xx de la ROM; y la versión 2 de varias formas, para las versiones 2.xx y 3.xx de la ROM. Pruebo con todas las versiones, usando los diferentes chip GAL que tengo, pero nunca consigo un funcionamiento estable. Ya empiezo a desesperar y me pongo a mirar el código fuente y además descompilo a mano los ficheros Jedec para comparar, y después repaso la lógica y trato de entender lo que hace, lo reescribo en CUPL y lo compilo. Y sigue fallando esporádicamente.

Entonces repaso todo lo que he realizado hasta el más mínimo detalle y me doy cuenta de que los chip GAL originales no son iguales, los originales son AMD PALCE16V8H-15 para el GAL1 y AMD PALCE16V8H-25 para el GAL2, los míos son todos de 15, así que por si acaso compro unos de 25. Y regrabo de nuevo y al final pongo Lattice GAL16V8D-15 para GAL1 y Lattice GAL16V8D-25 para GAL2. Ya todo en su sitio vuelvo a probar y voilá, funciona.

Ya tengo QubIDE que funciona. Ahora puedo probar los chips originales de la QubIDE original, voy probando uno por uno y resulta que sólo los GAL están mal, con lo cual volvemos a mi primera opción, que era cambiar sólo los chips GAL, que en su momento no funcionó y no sé por qué. Incluso el chip de ROM funciona bien, así que le dejo la versión 2.01, que es la que tenía.

Bueno, ahora con la tontería tengo tres QubIDEs. Y además con todo esto he aprendido…

A dibujar esquemas, nuevos símbolos y circuitos impresos en KiCad,

A trazar rutas de forma automática con FreeRouting,

A modelar en 3D con OpenSCAD y FreeCAD para KiCad,

A programar GALs con WinCUPL.

Y como final quiero dar las…

Gracias a Zeljko Nastasic, por diseñar el hardware de la QubIDE y publicarlo en Internet.

Gracias a Andrew Reed y Phil Borman por programar el driver y liberarlo con licencia GPL.

Gracias a Alain Haoui por hacer un nuevo driver mejorado y publicarlo para que podamos utilizarlo.