- Na competição de demos Tiny Tapeout 8, foram criadas duas demos ASIC que geram gráficos VGA e áudio de 1 bit usando apenas cerca de 4 mil portas lógicas
- A primeira obra é uma intro em estilo demoscene tradicional com tabuleiro 3D, fundo estrelado, texto com rolagem e música, implementada como uma máquina de estados pura, sem CPU nem RAM
- A segunda é uma animação do Nyan Cat, usando VGA 640x480 e áudio sincronizado com o vídeo, com quase todo o circuito integrado em um único tile
- Todos os efeitos visuais e sonoros são gerados diretamente por circuitos lógicos em Verilog, reproduzindo música com recursos mínimos como sintetizador de onda triangular e de pulso, ruído LFSR e DAC sigma-delta
- A fabricação foi interrompida pela falência da Efabless, mas depois os chips foram recuperados e foi confirmado que funcionam perfeitamente em hardware real
Demo de intro TT08
- Composição gráfica com campo de estrelas ao fundo, tabuleiro 3D, texto ondulante com rolagem e efeito de sombra
- Resolução VGA de 1220x480, usando clock de 48MHz
- Geração do vídeo convertendo a simulação com Verilator para C++ e renderizando em uma janela SDL
- Uso de 293 flip-flops e 3374 células no total, chegando perto do limite de área
- Como a codificação da fonte consumia muita área em portas, os valores de cor foram abandonados e substituídos por um padrão de listras diagonais
- Sem ROM, os dados foram codificados diretamente em portas lógicas
- O pipeline de síntese do Yosys converte a tabela-verdade em células padrão
- Mais do que a complexidade dos dados, a simplicidade algorítmica em função do endereço era mais vantajosa para reduzir a área
- O scroller senoidal foi implementado por rotação vetorial, sem tabela
- Geração de trajetória circular com o método de integrador simplético de Minsky
- A projeção do plano quadriculado foi implementada com aritmética de ponto fixo
- O módulo
recip16 calcula o inverso da coordenada y para fazer a transformação de perspectiva
- O padrão de cor é gerado com operações XOR, e a altura do plano varia no ritmo da batida da bateria
Detalhes gráficos
- O efeito de sombra projeta o texto rolante no sistema de coordenadas do plano e desloca os bits de cor
- O fundo estrelado (Starfield) usa LFSR para gerar números aleatórios em cada scanline
- Combinado com o contador de frames, isso determina a posição e a velocidade das estrelas, e o comprimento da cauda muda no tempo da caixa
Síntese musical
- Estrutura repetitiva ABACABAD para minimizar a duplicação de portas lógicas
- Composição com três canais
- Ruído + decaimento exponencial (caixa)
- Arpejo de onda quadrada (melodia/acordes)
- Onda triangular + decaimento exponencial (bumbo/baixo)
- Saída de áudio por DAC sigma-delta
- Em vez de PWM, a implementação simples envia o bit de carry do acumulador
- Uso da progressão de acordes da música Crooner (C64 SID)
- Base em escala de 8 notas, alcance de 2 oitavas e arpejo em nível de bit
- Ritmo swing implementado alternando o tempo entre 15 e 25 ticks
Retrospectiva
- O projeto separou os clocks de áudio e vídeo, causando desalinhamento de sincronização entre música e imagem
- A escolha da resolução não padrão 1220x480 causou queda na qualidade de exibição em LCD
- Em CRT há um efeito de dithering natural, mas na captura digital ocorre distorção
Demo do Nyan Cat
- Produzida pouco antes do prazo final do Tiny Tapeout 8, usando VGA 640x480 e áudio sincronizado a 60Hz
- Frames e paleta foram extraídos do GIF original e convertidos com dithering para RGB222
- Reutilização do fundo estrelado baseado em LFSR
- Os dados musicais foram obtidos analisando um arquivo MIDI e remapeados para uma escala de 8 notas
- Foram usados apenas o canal de baixo/bumbo e dois canais de melodia
- Em cada início de frame (60Hz), é aplicado um envelope de decaimento exponencial
- A melodia é gerada com onda de pulso com duty cycle de 25%
- A frequência é ajustada selecionando os bits mais altos de cada oitava
- Um filtro passa-baixa adicional ajusta o timbre
Fabricação e resultado
- A fabricação do Tiny Tapeout 8 começou em setembro de 2024 e foi interrompida pela falência da Efabless
- No segundo semestre de 2025, a nova equipe operacional recuperou e distribuiu os chips
- Nos testes com chips reais, todos os designs funcionaram normalmente
- Apenas a demo Donut precisou reduzir o clock para 45MHz para ficar estável
- A demo do Nyan Cat foi reproduzida perfeitamente tanto em LCD quanto em CRT
- Foi demonstrada em uma live no YouTube do Bitluni
Encerramento
- Depois de mais de um ano de espera, foi confirmada uma demo rodando perfeitamente em silício real
- Um caso de implementação de efeitos visuais e sonoros no ambiente Tiny Tapeout usando circuitos lógicos puros, sem CPU nem RAM
- Menciona planos de desenvolver no futuro técnicas de demo em hardware de baixo nível ainda mais avançadas
1 comentários
Comentários no Hacker News
Sou formado em ciência da computação, mas também me interesso por engenharia da computação, então gostaria muito de construir eu mesmo uma arquitetura de renderização retrô como essa e até levar isso até o tapeout
É uma estrutura simples, mas realmente muito divertida, então adoro esse tipo de projeto
Só com FPGA já dá para ir bem longe. Projetar seu próprio SoC é sempre emocionante
Por exemplo, se você pensa “preciso de 9 portas I2C?”, é só copiar e colar o bloco.
Se houver alguma operação lenta no software, você também pode criar seu próprio acelerador de hardware
Existe esse lado de que, com todo mundo conectado, a cultura acaba ficando mais homogênea, mas é incrível que algumas dezenas de pessoas ao redor do mundo possam se reunir para uma competição tão legal
Gostei da pulsação da grade no ritmo do kick drum. Um toque muito caprichado
Fiquei curioso sobre a estabilidade de longo prazo do gerador sin/cos do HAKMEM citado, então fui procurar
Há uma visão geral relacionada aqui
(dizem que é estável sob condições aritméticas exatas)
Por coincidência, isso também se relaciona com o vídeo sobre integração de Verlet postado na semana passada
Eu também vi esse vídeo nas recomendações do YouTube e gostei bastante
Isso me fez lembrar da época da faculdade — aquela frase de que hardware e software são logicamente equivalentes veio à mente
Trabalho realmente impressionante. Eu costumava brincar bastante com a demoscene em JS, especialmente no dwitter, mas isso está em outro nível
Graças a este comentário, fui conferir e descobri que o TinyTapeout voltou à ativa
Quero tentar fazer um FPAA com Tiny Tapeout, mas acho que não vai caber na área alocada
Como padrões do tipo “No x, no y, just z” são muito usados no ChatGPT, parece que agora até usuários comuns começaram a usar isso
Isso me lembrou da época em que eu consertava máquinas de pinball numa escola técnica. Boas lembranças
Muito legal!
Olhando o Open Shuttle atual, parece que usar a licença de 4KB de SRAM no projeto custa $2500
Em compensação, a interface Wishbone Bus está incluída