- 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.