- En la competencia de demos de Tiny Tapeout 8 se crearon dos demos ASIC que generan gráficos VGA y audio de 1 bit con apenas unas 4 mil compuertas lógicas
- La primera obra es una intro de estilo demoscene tradicional con tablero 3D, fondo de estrellas, texto con scroll y música, implementada como una máquina de estados pura sin CPU ni RAM
- La segunda es una animación de Nyan Cat, que usa VGA 640x480 y audio sincronizado con el video para integrar casi todo el circuito dentro de un solo tile
- Todos los efectos visuales y sonoros se generan directamente con circuitos lógicos basados en Verilog, reproduciendo música con recursos mínimos mediante sintetizador de onda triangular y de pulso, ruido LFSR y DAC sigma-delta, entre otros
- La fabricación se detuvo por la quiebra de Efabless, pero después el chip fue recuperado y se confirmó que funciona perfectamente en hardware real
Demo intro de TT08
- Composición gráfica con campo de estrellas de fondo, tablero 3D, texto ondulante con scroll y efecto de sombra
- Resolución VGA de 1220x480, usando reloj de 48MHz
- El video se genera convirtiendo a C++ mediante simulación con Verilator y renderizando en una ventana SDL
- Usa 293 flip-flops y un total de 3374 celdas, rozando el límite de área
- Como la codificación de fuentes consumía mucha área de compuertas, se descartaron los valores de color y se reemplazaron por un patrón de franjas diagonales
- Para codificar datos sin ROM, los patrones se expresan directamente con compuertas lógicas
- El pipeline de síntesis de Yosys convierte la tabla de verdad en celdas estándar
- Más que la complejidad de los datos, la simplicidad algorítmica según la dirección favorece la reducción de área
- El scroller senoidal se implementó con rotación de vectores, sin tablas
- Genera una órbita circular con el método de integrador simpléctico de Minsky
- La proyección del plano ajedrezado se implementó con aritmética de punto fijo
- El módulo
recip16 calcula el recíproco de la coordenada y para realizar la transformación de perspectiva
- Se genera un patrón de color con operaciones XOR, y la altura del plano cambia al ritmo del golpe de batería
Detalles gráficos
- El efecto de sombra proyecta el texto con scroll sobre el sistema de coordenadas del plano y desplaza los bits de color
- El fondo de estrellas (Starfield) genera números aleatorios para cada scanline con un LFSR
- Combinado con el contador de cuadros, determina la posición y velocidad de las estrellas, y cambia la longitud de la estela al ritmo de la caja
Síntesis musical
- Estructura repetitiva ABACABAD para minimizar la duplicación de compuertas lógicas
- Configuración de tres canales
- ruido + decaimiento exponencial (caja)
- arpegio de onda cuadrada (melodía/acordes)
- onda triangular + decaimiento exponencial (bombo/bajo)
- Salida de audio mediante DAC sigma-delta
- En lugar de PWM, se usa el bit de acarreo de un acumulador para una implementación simple
- Toma prestada la progresión de acordes de Crooner (C64 SID)
- Basada en escala de 8 notas, con un rango de 2 octavas y arpegio a nivel de bits
- Se alterna el tempo entre 15 y 25 ticks para lograr un ritmo swing
Reflexión
- El diseño separó los relojes de audio y video, lo que provocó desajuste de sincronía entre música e imagen
- La elección de una resolución no estándar de 1220x480 produjo peor calidad de visualización en LCD
- En CRT hay un efecto de dithering natural, pero en capturas digitales aparece distorsión
Demo de Nyan Cat
- Creada justo antes del cierre de Tiny Tapeout 8, usa VGA 640x480 y audio sincronizado a 60Hz
- Se extrajeron los cuadros y la paleta del GIF original y se convirtieron con dithering a RGB222
- Se reutilizó un fondo de estrellas basado en LFSR
- Los datos musicales se obtuvieron parseando un archivo MIDI y remapeándolo a una escala de 8 notas
- Solo se usan dos canales: bajo/bombo y melodía
- Al inicio de cada cuadro (60Hz) se aplica una envolvente de decaimiento exponencial
- La melodía se genera con una onda de pulso de ciclo de trabajo del 25%
- La frecuencia se ajusta seleccionando los bits superiores según la octava
- Se añadió un filtro pasa-bajos para ajustar el timbre
Fabricación y resultado
- La fabricación de Tiny Tapeout 8 comenzó en septiembre de 2024 y se interrumpió por la quiebra de Efabless
- En la segunda mitad de 2025, un nuevo equipo operativo recuperó y distribuyó los chips
- En las pruebas con chips reales, todos los diseños funcionaron correctamente
- Solo el demo Donut necesitó bajar el reloj a 45MHz para ser estable
- El demo de Nyan Cat se reprodujo perfectamente tanto en LCD como en CRT
- Fue mostrado en el live de YouTube de Bitluni
Cierre
- Tras esperar más de un año, se confirmó un demo que corre perfectamente en silicio real
- Un caso de implementación de efectos visuales y sonoros con circuitos lógicos puros, sin CPU ni RAM, dentro del entorno de Tiny Tapeout
- Se menciona el plan de desarrollar en el futuro técnicas de demos de hardware de bajo nivel aún más avanzadas
1 comentarios
Comentarios en Hacker News
Estudié ciencias de la computación, pero también me interesa la ingeniería en computación, así que me gustaría intentar construir una arquitectura de renderizado retro como esta y hasta llevarla a tapeout
Es una estructura simple pero realmente divertida, así que este tipo de proyectos me encanta
Solo con FPGA ya se puede llegar bastante lejos. Siempre emociona poder diseñar tu propio SoC
Por ejemplo, si piensas “¿necesito 9 puertos I2C?”, simplemente copias y pegas el bloque.
Si en software hay una operación lenta, también puedes crear tú mismo un acelerador por hardware
Aunque al estar todos conectados la cultura también se homogeniza, es increíble que unas cuantas decenas de personas en todo el mundo puedan reunirse por una competencia tan genial
Me gustó la pulsación de la cuadrícula al ritmo del kick drum. Es un detalle muy cuidado
Me dio curiosidad la estabilidad a largo plazo del generador sin/cos de HAKMEM citado, así que lo busqué
Hay un resumen relacionado aquí
(dicen que es estable bajo condiciones aritméticas exactas)
Casualmente también está relacionado con el video sobre integración de Verlet que publicaron la semana pasada
Yo también vi ese video porque me lo recomendó YouTube, y estuvo bastante entretenido
Me hizo recordar mis años en la universidad — pensé en la frase “hardware y software son lógicamente equivalentes”
Es un trabajo realmente impresionante. Antes participaba mucho en la demoscene de JS, especialmente en dwitter, pero esto está en otro nivel
Gracias a este comentario fui a revisar y me enteré de que TinyTapeout volvió a la vida
Me gustaría intentar hacer un FPAA con Tiny Tapeout, pero no creo que quepa en el área asignada
Como patrones del tipo “No x, no y, just z” se usan mucho en ChatGPT, parece que ahora hasta los usuarios comunes empezaron a usarlos
Me recordó la época en que reparaba máquinas de pinball en la escuela técnica. Qué buenos recuerdos
¡Está increíble!
Viendo el Open Shuttle actual, parece que usar la licencia de 4KB SRAM en un proyecto cuesta $2500
A cambio incluye una interfaz Wishbone Bus