2 Punkte von GN⁺ 2025-12-21 | 1 Kommentare | Auf WhatsApp teilen
  • Beim Tiny Tapeout 8-Demo-Wettbewerb wurden zwei ASIC-Demos erstellt, die mit nur rund 4.000 Logik-Gates VGA-Grafik und 1-Bit-Audio ausgeben
  • Das erste Werk ist ein Intro im traditionellen Demoscene-Stil mit 3D-Schachbrett, Sternenhintergrund, Scrolltext und Musik, umgesetzt als reine Zustandsmaschine ohne CPU und RAM
  • Das zweite ist eine Nyan-Cat-Animation, die 640x480 VGA und videosynchrones Audio nutzt und nahezu die gesamte Schaltung in einem Tile integriert
  • Alle visuellen und akustischen Effekte werden direkt durch Verilog-basierte Logikschaltungen erzeugt; Musik wird mit minimalen Ressourcen durch Dreieckwellen- und Pulswellensynthese, LFSR-Rauschen, Sigma-Delta-DAC usw. reproduziert
  • Die Fertigung wurde durch die Insolvenz von Efabless gestoppt, später wurden die Chips jedoch gerettet und liefen nachweislich auf echter Hardware perfekt

TT08-Intro-Demo

  • Grafischer Aufbau mit Sternenfeld im Hintergrund, 3D-Schachbrett, wellenförmigem Scrolltext und Schatteneffekten
    • VGA-Auflösung 1220x480, 48-MHz-Takt
    • Videoerzeugung durch Verilator-Simulation, Umwandlung nach C++ und Rendering in ein SDL-Fenster
  • Mit 293 Flip-Flops und insgesamt 3374 Zellen nahe an der Flächengrenze
    • Da die Font-Kodierung viel Gate-Fläche belegte, wurden Farbwerte aufgegeben und durch ein diagonales Streifenmuster ersetzt
  • Für Datenkodierung ohne ROM wurden Muster direkt mit Logik-Gates beschrieben
    • Die Yosys-Synthese-Pipeline wandelt truth tables in Standardzellen um
    • Für die Flächeneinsparung war algorithmische Einfachheit abhängig von der Adresse günstiger als Datenkomplexität
  • Der Sinus-Scroller wurde ohne Tabelle über Vektorrotation umgesetzt
    • Erzeugung einer Kreisbahn mit Minskys symplectic integrator
  • Die Projektionsberechnung der Schachbrett-Ebene wurde mit Festkommaarithmetik umgesetzt
    • Das Modul recip16 berechnet den Kehrwert der y-Koordinate und führt damit die Perspektivtransformation aus
    • Farbmuster werden per XOR erzeugt, die Ebenenhöhe verändert sich passend zum Drumbeat

Grafische Details

  • Der Schatteneffekt projiziert den Scrolltext in das Koordinatensystem der Ebene und verschiebt dabei Farbbits
  • Der Sternenhintergrund (Starfield) erzeugt mit einem LFSR Zufallswerte für jede Scanline
    • In Kombination mit dem Frame-Zähler werden Position und Geschwindigkeit der Sterne bestimmt; passend zum Snare-Timing verändert sich die Länge der Schweife

Musiksynthese

  • Eine ABACABAD-Struktur aus Wiederholmustern minimiert doppelte Logik-Gates
  • Aufbau aus drei Kanälen
    • Rauschen + exponentielle Dämpfung (Snare)
    • Rechteckwellen-Arpeggio (Melodie/Akkorde)
    • Dreieckwelle + exponentielle Dämpfung (Kick/Bass)
  • Audioausgabe über Sigma-Delta-DAC
    • Statt PWM wird zur einfachen Umsetzung das Carry-Bit eines Akkumulators ausgegeben
  • Verwendet die Akkordfolge aus Crooner (C64 SID)
    • Basierend auf einer 8-Ton-Skala, über zwei Oktaven, mit bitweisem Arpeggio
    • Swing-Rhythmus durch abwechselndes Tempo von 15 und 25 Ticks

Rückblick

  • Durch ein Design mit getrennten Audio- und Video-Takten kam es zu Asynchronität zwischen Musik und Bild
  • Die Wahl der nicht standardkonformen Auflösung 1220x480 führte zu schlechterer Darstellungsqualität auf LCDs
  • Auf CRTs ergibt sich ein natürlicher Dithering-Effekt, bei digitaler Aufnahme treten jedoch Verzerrungen auf

Nyan-Cat-Demo

  • Kurz vor dem Tiny-Tapeout-8-Deadline erstellt, mit 640x480 VGA und 60-Hz-synchronem Audio
    • Frames und Palette wurden aus dem Original-GIF extrahiert und per Dithering nach RGB222 konvertiert
    • Der LFSR-basierte Sternenhintergrund wurde wiederverwendet
  • Die Musikdaten wurden durch Parsen einer MIDI-Datei auf eine 8-Ton-Skala remappt
    • Verwendet werden nur ein Bass/Kick-Kanal und zwei Melodiekanäle
    • Zu Beginn jedes Frames (60 Hz) wird eine exponentiell abklingende Envelope angewendet
  • Die Melodie wird mit einer Pulswelle mit 25 % Duty Cycle erzeugt
    • Frequenzanpassung durch Auswahl höherer Bits je Oktave
    • Zusätzlicher Tiefpassfilter zur Klangformung

Fertigung und Ergebnis

  • Bei Tiny Tapeout 8 begann die Fertigung im September 2024, wurde aber durch die Insolvenz von Efabless gestoppt
    • In der zweiten Jahreshälfte 2025 holte ein neues Betriebsteam die Chips zurück und verteilte sie
  • Tests mit echten Chips zeigten, dass alle Designs ordnungsgemäß funktionierten
    • Nur bei der Donut-Demo musste der Takt für Stabilität auf 45 MHz gesenkt werden
  • Die Nyan-Cat-Demo lief auf LCD und CRT gleichermaßen perfekt
    • Vorgeführt im YouTube-Livestream von Bitluni

Abschluss

  • Nach mehr als einem Jahr Wartezeit wurde bestätigt, dass die Demo auf echtem Silizium perfekt läuft
  • Ein Beispiel dafür, wie sich im Tiny-Tapeout-Umfeld visuelle und akustische Effekte ohne CPU und RAM allein mit reiner Logikschaltung umsetzen lassen
  • Erwähnt werden Pläne, künftig weiterentwickelte Low-Level-Hardware-Demo-Techniken zu entwickeln

1 Kommentare

 
GN⁺ 2025-12-21
Hacker-News-Kommentare
  • Ich habe zwar Informatik studiert, interessiere mich aber auch für Computer Engineering, deshalb würde ich so eine Retro-Rendering-Architektur gern selbst bauen und sogar bis zum Tape-out bringen
    Eine einfache, aber wirklich spannende Struktur, deshalb liebe ich solche Projekte

    • Wie der Autor empfehle ich, mit der Simulation anzufangen und dann auf FPGA zu wechseln
      Schon allein mit FPGA kommt man ziemlich weit. Dass man ein eigenes SoC entwerfen kann, ist immer wieder aufregend
      Wenn man zum Beispiel denkt: „Ich brauche wohl 9 I2C-Ports?“, dann kopiert man einfach den Block und fügt ihn ein.
      Wenn es in der Software eine langsame Operation gibt, kann man auch direkt selbst einen Hardware-Beschleuniger bauen
    • Es ist erstaunlich, wie das Internet solche kleinen Interessens-Communities miteinander verbindet
      Natürlich hat die totale Vernetzung auch die Kehrseite kultureller Vereinheitlichung, aber dass sich ein paar Dutzend Leute aus aller Welt für so einen tollen Wettbewerb zusammenfinden können, ist großartig
  • Mir gefällt, wie das Grid im Takt der Kickdrum pulsiert. Ein schöner, sorgfältiger Touch

  • Ich war neugierig auf die Langzeitstabilität des zitierten HAKMEM-Sin/Cos-Generators und habe das nachgeschlagen
    Eine passende Übersicht gibt es hier
    (Unter den exakten arithmetischen Bedingungen soll er stabil sein)
    Zufällig hat das auch mit dem Verlet-Integration-Video zu tun, das letzte Woche gepostet wurde

    • Unter bestimmten Bedingungen funktioniert es exakt. Es ist gewissermaßen derselbe mathematische Trick
      Ich habe das Video auch über YouTube-Empfehlungen gesehen und fand es ziemlich unterhaltsam
  • Das erinnert mich an meine Uni-Zeit — ich muss an den Satz denken: „Hardware und Software sind logisch äquivalent

    • Hardware zu schreiben ist ähnlich wie Software zu schreiben, aber Parallelität ist viel billiger und Fehler sind viel teurer
  • Wirklich beeindruckende Arbeit. Früher habe ich oft JS-Demoscene gemacht, besonders dwitter, aber das hier ist noch einmal ein ganz anderes Niveau
    Durch diesen Kommentar habe ich nachgesehen und erfahren, dass TinyTapeout wieder da ist

  • Ich würde gern mit Tiny Tapeout ein FPAA bauen, aber ich glaube nicht, dass es in die zugewiesene Fläche passt

    • Bei TT sind gegen Aufpreis auch Multi-Block-Designs möglich
  • Muster wie „No x, no y, just z“ werden von ChatGPT so oft benutzt, dass inzwischen wohl sogar normale Nutzer sie übernehmen

    • Sprache ist im Fluss. LLMs haben viele negative Seiten, aber solche sprachlichen Veränderungen halte ich für harmlos
    • Ehrlich gesagt erinnere ich mich auch daran, in der Grundschule bei der Klassensprecherwahl einen Spruch wie „no x, no y, just z“ benutzt zu haben
    • Vielleicht hat ChatGPT am Ende einfach Ausdrucksweisen normaler Nutzer gelernt
  • Das erinnert mich an die Zeit, als ich auf der Berufsschule Flipperautomaten repariert habe. Gute Erinnerungen

  • Wirklich cool!

  • Wenn ich mir das aktuelle Open Shuttle anschaue, kostet die Nutzung der 4KB-SRAM-Lizenz im Projekt offenbar 2500 $
    Dafür ist allerdings eine Wishbone-Bus-Schnittstelle enthalten

    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