2 pontos por GN⁺ 2025-12-21 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2025-12-21
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

    • Como o autor, recomendo começar pela simulação e depois passar para FPGA
      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
    • É impressionante como a internet conecta essas pequenas comunidades de nicho
      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

    • Em certas condições, funciona exatamente. É basicamente o mesmo truque matemático
      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

    • Escrever hardware é parecido com escrever software, mas paralelismo é muito mais barato e erros são muito mais caros
  • 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

    • No TT, também dá para fazer um design multi-bloco pagando um custo extra
  • 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

    • A linguagem é fluida. Há muitos lados negativos dos LLMs, mas acho que esse tipo de mudança linguística é inofensivo
    • Na verdade, eu também me lembro de ter usado um slogan como “no x, no y, just z” numa eleição de representante de turma quando estava no ensino fundamental
    • Talvez o ChatGPT, na verdade, só tenha aprendido expressões dos usuários comuns
  • 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

    1024x32 Commercial SRAM
    CF_SRAM_1024x32
    Commercial SRAM: 1024 words x 32 bits (4KB) with Wishbone Bus interface
    Area: 0.17mm²
    License: Commercial - $2500 per project