2 points par GN⁺ 2025-12-21 | 1 commentaires | Partager sur WhatsApp
  • Dans le concours de démo Tiny Tapeout 8, deux démos ASIC capables de produire des graphismes VGA et un audio 1 bit ont été réalisées avec seulement environ 4 000 portes logiques
  • La première est une intro dans le style traditionnel de la demoscene, avec damier 3D, fond étoilé, texte défilant et musique, implémentée comme une pure machine à états sans CPU ni RAM
  • La seconde est une animation Nyan Cat, utilisant du VGA 640x480 et un audio synchronisé sur la vidéo, avec presque tout le circuit intégré dans une seule tile
  • Tous les effets visuels et sonores sont générés directement par des circuits logiques en Verilog, avec un minimum de ressources pour reproduire la musique, via notamment synthétiseur à ondes triangulaires et impulsionnelles, bruit LFSR, DAC sigma-delta
  • La fabrication a été interrompue à cause de la faillite d’Efabless, mais les puces ont ensuite été récupérées et il a été confirmé qu’elles fonctionnaient parfaitement sur le matériel réel

Démo d’intro TT08

  • Composition graphique comprenant un champ d’étoiles en arrière-plan, un damier 3D, un texte défilant ondulant et des effets d’ombre
    • Résolution VGA de 1220x480, horloge à 48 MHz
    • Génération vidéo en convertissant via Verilator en C++, puis rendu dans une fenêtre SDL
  • 293 bascules et un total de 3 374 cellules utilisés, au plus près de la limite de surface
    • L’encodage de la police consommait beaucoup de surface logique, donc les valeurs de couleur ont été abandonnées au profit d’un motif de bandes diagonales
  • Sans ROM, l’encodage des données est exprimé directement par des portes logiques
    • La pipeline de synthèse Yosys convertit la table de vérité en cellules standard
    • Une simplicité algorithmique selon l’adresse est plus avantageuse pour réduire la surface que la complexité des données
  • Le scroller sinusoïdal est implémenté par rotation vectorielle sans table
    • Génération d’une trajectoire circulaire avec la méthode du symplectic integrator de Minsky
  • La projection du plan en damier est réalisée en arithmétique à virgule fixe
    • Le module recip16 calcule l’inverse de la coordonnée y pour effectuer la transformation de perspective
    • Le motif de couleur est généré par opération XOR, avec variation de la hauteur du plan sur le rythme de la batterie

Détails graphiques

  • L’effet d’ombre projette le texte défilant dans le repère du plan et décale les bits de couleur
  • Le fond étoilé (Starfield) génère des nombres pseudo-aléatoires par ligne de balayage avec un LFSR
    • Combiné à un compteur de frames pour déterminer position et vitesse des étoiles, avec variation de la longueur de traîne sur le timing de la caisse claire

Synthèse musicale

  • Une structure répétitive ABACABAD minimise la duplication de portes logiques
  • Trois canaux
    • Bruit + décroissance exponentielle (caisse claire)
    • Arpège en onde carrée (mélodie/accords)
    • Onde triangulaire + décroissance exponentielle (kick/basse)
  • Sortie audio via DAC sigma-delta
    • Implémentation simple en sortant le bit de retenue de l’accumulateur au lieu d’un PWM
  • Reprise de la progression d’accords du morceau Crooner (C64 SID)
    • Basé sur une gamme de 8 notes, sur 2 octaves, avec arpèges au niveau du bit
    • Rythme swing obtenu en alternant des tempos de 15 et 25 ticks

Retour d’expérience

  • La séparation des horloges audio et vidéo a provoqué un désalignement entre musique et image
  • Le choix de la résolution non standard 1220x480 a entraîné une baisse de qualité d’affichage sur LCD
  • L’effet de dithering paraît naturel sur CRT, mais la capture numérique produit des distorsions

Démo Nyan Cat

  • Réalisée juste avant la date limite de Tiny Tapeout 8, avec VGA 640x480 et audio synchronisé à 60 Hz
    • Extraction des frames et de la palette depuis le GIF d’origine, puis conversion avec dithering en RGB222
    • Réutilisation du fond étoilé basé sur LFSR
  • Les données musicales ont été obtenues en analysant un fichier MIDI puis remappées sur une gamme de 8 notes
    • Utilisation de seulement deux canaux : basse/kick et mélodie
    • Application d’une enveloppe à décroissance exponentielle au début de chaque frame (60 Hz)
  • La mélodie est générée par une onde impulsionnelle à cycle utile de 25 %
    • Ajustement de la fréquence par sélection des bits de poids fort selon l’octave
    • Ajout d’un filtre passe-bas pour ajuster le timbre

Fabrication et résultats

  • Tiny Tapeout 8 a été lancé en fabrication en septembre 2024, puis interrompu à cause de la faillite d’Efabless
    • Une nouvelle équipe opérationnelle a récupéré et distribué les puces au second semestre 2025
  • Lors des tests sur puce réelle, tous les designs ont fonctionné correctement
    • Seule la démo Donut a nécessité d’abaisser l’horloge à 45 MHz pour rester stable
  • La démo Nyan Cat a été reproduite parfaitement sur LCD comme sur CRT
    • Présentée dans un live YouTube de Bitluni

Conclusion

  • Après plus d’un an d’attente, confirmation d’une démo tournant parfaitement sur silicium réel
  • Un exemple d’implémentation d’effets visuels et sonores dans l’environnement Tiny Tapeout avec de purs circuits logiques, sans CPU ni RAM
  • Mention de projets futurs pour développer des techniques de démo matérielle bas niveau encore plus avancées

1 commentaires

 
GN⁺ 2025-12-21
Avis Hacker News
  • J’ai fait des études d’informatique, mais je m’intéresse aussi à l’ingénierie informatique, donc j’aimerais vraiment construire moi-même ce genre d’architecture de rendu rétro et aller jusqu’au tape-out
    C’est une structure simple mais vraiment amusante, et j’adore ce type de projet

    • Comme l’auteur, je recommande de commencer par la simulation puis de passer au FPGA
      Rien qu’avec un FPGA, on peut déjà aller très loin. Le fait de pouvoir concevoir soi-même un SoC reste toujours grisant
      Par exemple, si on se dit « il me faut 9 ports I2C », il suffit de copier-coller le bloc.
      Et s’il y a une opération lente en logiciel, on peut aussi créer soi-même un accélérateur matériel
    • C’est impressionnant de voir comment Internet relie ce genre de petites communautés d’intérêt
      Le fait que tout le monde soit connecté tend aussi à uniformiser la culture, mais c’est formidable que quelques dizaines de personnes dispersées dans le monde puissent se réunir pour un concours aussi chouette
  • J’aime bien l’effet où la grille pulse au rythme de la grosse caisse. C’est un détail très soigné

  • Je me demandais quelle était la stabilité à long terme du générateur sin/cos HAKMEM cité, alors je suis allé regarder
    On trouve une vue d’ensemble ici
    (apparemment, c’est stable sous des conditions arithmétiques exactes)
    Par coïncidence, c’est aussi lié à la vidéo sur l’intégration de Verlet publiée la semaine dernière

    • Dans certaines conditions, ça fonctionne exactement. C’est en quelque sorte le même truc mathématique
      J’ai vu cette vidéo aussi dans les recommandations YouTube, et je l’ai trouvée assez plaisante
  • Ça me rappelle mes années à l’université — cette phrase me revient : « le matériel et le logiciel sont logiquement équivalents »

    • Écrire du matériel ressemble à écrire du logiciel, mais le parallélisme coûte bien moins cher et les erreurs coûtent bien plus cher
  • Travail vraiment impressionnant. Je faisais souvent de la demoscene en JS avant, surtout sur dwitter, mais là on est à un tout autre niveau
    Grâce à ce commentaire, je viens aussi de découvrir que TinyTapeout était de retour

  • J’aimerais essayer de faire un FPAA avec Tiny Tapeout, mais je doute que ça tienne dans la surface allouée

    • Sur TT, on peut aussi faire un design multi-bloc en payant un supplément
  • Comme des formulations du type « No x, no y, just z » sont souvent utilisées par ChatGPT, on dirait que même les utilisateurs ordinaires commencent à les reprendre

    • La langue est fluide. Les LLM ont beaucoup de mauvais côtés, mais ce genre de changement linguistique me semble inoffensif
    • En fait, je me souviens avoir utilisé un slogan du genre « no x, no y, just z » quand je me présentais comme délégué de classe à l’école primaire
    • Il se peut même que ChatGPT ait au contraire appris cette tournure auprès des utilisateurs ordinaires
  • Ça me rappelle l’époque où je réparais des flippers dans une école professionnelle. De très bons souvenirs

  • Vraiment génial !

  • En regardant l’Open Shuttle actuel, je vois qu’il faut 20 $ pour utiliser dans un projet la licence SRAM de 4 KB
    En contrepartie, l’interface Wishbone Bus est incluse

    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