Cómo montar el Nano SwinSIDb, un clon del SID
Sobre el SID y el SwinSID
[Índice]Este tutorial explica paso a paso cómo construir el Nano SwinSID, un clon del SID. SID (Sound Interface Device) es el sobrenombre con el que se conoce a los chips de sonido MOS6581 y MOS8580 utilizados en prácticamente todos los ordenadores de 8-bits de Commodore en los años 80 y principios de los 90, y más tarde también en algunos sintetizadores como el SIDStation.
En el momento de su aparición era el generador de sonido orientado a ordenadores domésticos más avanzado que existía. Dispone de 3 canales de audio, cada uno con su propio generador de envolvente, generador de onda (rampa, triangular, pulso y ruido), y un filtro compartido configurable para actuar como paso-alto, paso-banda o paso-bajo. Es una versión digital y muy simplificada de los sintetizadores basados en síntesis sustractiva (osciladores-ADSRs-filtros) predominantes en la época. Sus posibilidades de sonido y el hecho de que el Commodore 64 fuera uno de los ordenadores de 8-bits más vendidos de la historia, han convertido al SID en uno de los chips de referencia del sonido chiptune.
El SwinSID es un clon del SID implementado mediante microcontrolador. El SID original fue diseñado por el ingeniero Robert Yannes (quien más tarde fundaría Ensoniq) y producido por Mostek desde principios de los 80 hasta principios de los 90. A pesar de que la producción de este finalizó hace ya más de dos décadas, aún es posible encontrar unidades sueltas de origen desconocido en los sitios de subasta o tiendas de Internet, pero estas unidades suelen ser bastante caras y con frecuencia tienen alguna de sus partes estropeadas. No es raro encontrar unidades con alguno de sus filtros u osciladores dañados.
El clon SwinSID fue diseñado por Swinkels en 2005, quién hizo diferentes mejoras en este a lo largo de los años. Un usuario de la comunidad forum64.de, llamado x1541, redujo el tamaño del circuito impreso de una de las ramas del proyecto original llamada micro SwinSID. Esta versión de tamaño reducido del SwinSID es conocida como nano SwinSID. SwinSID no es 100% compatible con el SID original, pero es una de las pocas opciones que existen para reemplazar los SIDs originales. La versión actual del nano SwinSIDb no implementa las entradas analógicas para los paddles, no tiene la entrada audio EXT, y en algunas situaciones no trata el sonido de forma exactamente igual a como lo hace el SID, pero aún y así es una buena alternativa. Swinkels explica muy bien en su página web cuales son las ventajas y limitaciones del SwinSID.
A pesar de que gran parte de la información del proyecto se encuentra disponible en la web de Swinkels, esta resulta insuficiente para construir el nano SwinSID desde cero. Uno ha de rebuscar en la web del autor y también en otros foros y páginas de internet para obtener toda la información necesaria para construir sus nano SwinSID (p.ej. en nightfallcrew , lemon ó forum64). Aún así fui incapaz de localizar algunos de los recursos necesarios y tuve que crearlos a partir de la información recopilada de otros sitios. La finalidad de este tutorial es facilitar el trabajo a aquellos interesados en montarse sus propios nano SwinSID, proporcionando toda la información y explicando los pasos necesarios para ello.
Materiales y herramientas
[Índice]Este es el listado de materiales y herramientas necesarias para montar el nano SwinSIDb:
Circuito impreso del nano SwinSIDb
[Índice]Uno se puede hacer sus propios PCBs (printed circuit board o circuito impreso) en casa (algo complejo si no se tiene experiencia en ello) o encargarlos a un fabricante de PCBs (existen algunos fabricantes muy económicos por Internet). Para fabricar los PCBs el fabricante solo necesita que se le proporcionen los Gerbers. Los Gerbers son unos ficheros que describen la disposición de las capas de cobre, de la máscara de soldadura, la posición de los agujeros etc. que conforman el PCB.
Como no pude localizar los Gerbers de la última versión conocida del nano SwinSID (la que tiene 2 jumpers) decidí crearlos yo mismo con el programa de diseño electrónico Altium. Primero creé los esquemáticos basándome en otros que localicé en Internet, y luego, a partir de estos, el diseño del PCB. Con el diseño del PCB listo ya pude generar los Gerbers. Como se puede ver, los esquemáticos corresponden a la versión del SwinSID que utiliza el microcontrolador Atmega88AP. Este clon tiene dos jumpers, J1 para establecer el modo de emulación de los filtros (modo MOS6581 o MOS8580) y J2 para ajustar el nivel del voltaje de la salida de audio. También añadí un LED opcional en la parte inferior del PCB para crear un efecto de iluminación bajo el chip "al estilo tuning" cuando este se encuentra montado en la placa. Esta es la razón por la que añadí al nombre la coletilla 'b', para diferenciarla de la versión original de nano SwinSID sin LED creada por el usuario x1541.
Estos son los parámetros de producción recomendados para los PCBs del nano SwinSIDb:
- Grosor de PCB:1.6mm
- Acabado de superfície: HASL
- Grosor de cobre: 1oz
- Color de PCB: el que se desee...
Componentes electrónicos del Nano SwinSIDb
[Índice]Estos son los componentes que han de soldarse en el PCB. Al hacer el pedido es importante prestar atención al tipo de encapsulados. La mayoría de componentes son SMD (de montaje superficial). Se recomienda echar una ojeada a las fotos que acompañan a este tutorial para estar seguro de que se piden los encapsulados correctos. Estos son los componentes del nano SwinSIDb:
- Resistencias: todas en encapsulado SMD en formato 0805, R1: 1K, R2: 240K, R3: 1K, R4: 2K2, R5: 4K7
- Condensador: en encapsulado SMD en formato 0805, 1206 o también throug-hole, C: 100n
- Microcontrolador: en encapsulado TQFP de 32 pines, U2: ATmega88 AP
- Oscilador: encapsulado SMD, U5: 32Mhz
- Jumpers: throug-hole de 2mm de paso, J1 , J2.
- Tira de pines: throug-hole de 2.54mm de paso, 2 x 14 pines. Para evitar problemas al insertar el clon en algunos zócalos más estrechos se recomienda el uso de tiras de pines torneados.
- Opcional: SMD en formato 0805, R6: 330 y 5V LED.
Recordar también comprar el zócalo para alimentar el chip mientras se programa, y la tira de pines ( 1.27 mm de paso ) y cables finos para el cable adaptador de programación.
Soldador y otras herramientas
[Índice]Para soldar los componentes SMD es necesario un soldador de punta fina y de no mucha potencia (11 W son suficientes). También es necesario el hilo de estaño y unas pinzas para sujetar los componentes SMD sobre la placa mientras se sueldan. Es muy recomendable tener a mano malla de desoldar, flux y algún tipo de soporte para fijar la placa mientras se trabaja en ella.
Firmware y herramientas de programación
[Índice]El microcontrolador debe programarse con el firmware del SwinSID, y para ello se necesita:
- Un programador con soporte para el protocolo ISP de Atmel.
- Un cable especial para conectar el programador ISP a la placa del nano SwinSIDb.
- La aplicación de programación compatible con el programador ISP.
- Una fuente de 5V o un zócalo de adaptación para proporcionar 5V al nano SwinSID mientras se programa.
Existen varios programadores compatibles con el protocolo ISP de Atmel. En este tutorial se muestra un clon del JTAGICE mkII de Atmel, pero existen otros programadores más sencillos y baratos como el AVRISP que deberían funcionar igualmente. Si se quiere ahorrar dinero y se dispone de un ordenador con puerto paralelo, es posible construirse un programador sencillo con un conector DB25 y una par de resistencias.
Para enviar el firmware al microcontrolador mediante el programador hace falta también una aplicación de programación compatible con este. Algunas de las aplicaciones útiles para ello son Atmel Studio, AVR Studio, AVR Dude o cualquier otra que implemente el protocolo Atmel ISP y sea compatible con el programador.
Pasos
[Índice]Estos son los pasos para montar el nano SwinSIDb:
Conseguir los PCBs
[Índice]Se los puede crear uno mismo en casa o encargarlos a un fabricante de PCBs. La segunda opción es la más sencilla y la que proporciona mejores resultados, pero primero hay que localizar un fabricante de PCBs. Existen algunos fabricantes de PCBs como Itead Studio o Seed Studio dedicados al prototipaje con unos precios muy razonables para series pequeñas. Una vez localizado el fabricante de PCBs este nos solicitará los Gerbers y también los parámetros de producción... y su dinero :)
Obtener los componentes
[Índice]Es probable que uno no pueda encontrar todos los componentes del nano SwinSIDb en la tienda de componentes de su ciudad, y por eso la mejor opción es recurrir a alguna de las tiendas on-line, tipo RS-Amidata, Farnell, Mouser or Digikey. Prestar atención a los encapsulados al hacer el pedido.
Soldar los componentes electrónicos
[Índice]El siguiente paso tras obtener los componentes electrónicos es soldarlos en el PCB. Los componentes electrónicos SMD requieren de cierta pericia para ser soldados, especialmente los que tienen muchas patas como es el caso del microcontrolador. Ir con cuidado y no cortocircuitar ninguno de los pines. Antes de soldar asegurarse de que la orientación de los componentes es la correcta. Prestar también atención a la polaridad de LED opcional, ya que si se monta al revés este no lucirá. Una vez soldados los componentes se recomienda revisar todas las soldaduras, comprobar que la orientación es la correcta y que no hay cortocircuitos entre los pines.
El oscilador y el microcontrolador son la parte más delicada de soldar. Algunos osciladores tienen unos pequeños puntos metálicos cerca de los pads de soldadura. Al soldar hay que ir con cuidado y evitar que el estaño llegue hasta estos puntos o hasta la carcasa metálica del encapsulado. Esto podría hacer que los componentes no funcionen correctamente.
Programar el microcontrolador
[Índice]Antes de programar el microcontrolador con el firmware, la placa del nano SwinSIDb montada, ha de conectarse al programador ISP con el cable adaptador citado anteriormente, y luego alimentarse con 5VDC (pin 14 a GND y pin 25 a 5VDC). Para programar las unidades que se muestran en las fotos de este tutorial cree una pequeña placa de alimentación con un regulador LM7805 pero existen alternativas más sencillas. Una opción bastante más simple es utilizar un zócalo ancho DIP de 28 pines, cortarle todos los pines menos el 14-GND y el 25-VCC y luego conectar el nano SwinSIDb con este zócalo al Commodore 64 o sintetizador SID para obtener los 5VDC.
Tras conectar el nano SwinSIDb al programador ISP y haberlo alimentado con los 5VDC, hay que utilizar la herramienta software que acompaña al programador (Atmel Studio, AVR Studio, AVR Dude...) para programar:
- El contenido de la memoria Flash: con el binario de la aplicación del SwinSID.
- Los fuses: para establecer la fuente de reloj y la frecuencia correcta.
Ir con cuidado al programar los fuses. Una configuración incorrecta puede hacer que el microcontrolador no funcione correctamente y en algunos casos que sea muy difícil, o incluso imposible, volver a programarlo. Los lock bits no deben tocarse, hacerlo puede dejar el microcontrolador bloqueado.
Test
[Índice]Una vez montado, para comprobar que el nano SwinSIDb funciona correctamente, hay que instalarlo en un Commodore de 8-bits o en cualquier sintetizador que haga uso del SID, y reproducir en este alguna melodía o sonido (probar los diferentes canales, filtro etc). Recordar poner los jumpers en la configuración correcta:
- J1: este jumper permite seleccionar el modo de emulación de los filtros del nano SwinSIDb. Con J1 montado se activa el modo de emulación de filtros del MOS6581, y sin jumper montado se activa el modo de emulación de filtros del MOS8580.
- J2: el circuito de salida de audio del nano SwinSID está formado por una pequeña red de resistencias entre las que se encuentra R3 (1K), la cual une la salida de audio con GND. J2 permite conectar a GND o dejar al aire esta resistencia. Si el clon se va montar en un C64 que utiliza el MOS6581 entonces se ha de dejar el jumper abierto. Si en cambio se va a montar en un C64 que utiliza el MOS8580, el jumper J2 se ha de dejar puesto. En caso de que el nano SwinSIDb se use en un sintetizador habrá que investigar la línea de audio de salida para ver si esta incorpora o no alguna resistencia hacia GND.
Como una configuración incorrecta de los jumpers no debería dañar nada, la opción más simple para saber como poner los jumpers es probando si suena mejor con jumper o sin jumper.
Descargas
[Índice]Estos son los ficheros necesarios para construir el nano SwinSIDb:
- Gerbers: ZIP con los ficheros de producción del PCB del nano SwinSIDb. Este contiene todos los ficheros que hay que enviar al fabricante de PCBs.
- Firmware del nano SwinSID (v24/5/2012): es el fichero.hex con el binario a cargar en la memoria flash del microcontrolador. Esta es la última versión del firmware del nano SwinSID y se ha obtenido de la página del autor del proyecto.
Otros recursos de interés relacionados con el proyecto:
- Esquemáticos y diseño del PCB del nano SwinSIDb:este ZIP contiene los esquemas del circuito del nano SwinSIDb y el diseño del PCB que cree en Altium 14.1.15 en base a la información recopilada de Internet. Los Gerbers proporcionados más arriba están generados a partir de este proyecto.
- Esquemáticos y diseño del PCB del nano SwinSID realizados por el usuario x1541: este ZIP contiene los ficheros del nano SwinSID original diseñado por el usuario de forum64.de x1541. Se encuentran en formato Eagle y únicamente tienen el jumper J1 para selección del modo de funcionamiento de los filtros. Se han obtenido de este sitio web.
- Una versión anterior del firmware del nano SwinSID ? (?/?/2011): ZIP con el firmware que utilicé antes de disponer de la versión del 24/5/2012 proporcionada más arriba. Aunque es más antigua que la versión más reciente tiene un tamaño mayor (23.1Kb vs 17.8Kb) pero no se bien a que se debe esta diferencia de tamaño.