2 points par GN⁺ 2025-12-21 | Aucun commentaire pour le moment. | 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

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.