- Tiny Tapeout 8 demo yarışmasında yalnızca yaklaşık 4 bin mantık kapısıyla VGA grafikleri ve 1 bit ses üreten iki ASIC demosu hazırlandı
- İlk çalışma, 3D dama tahtası, yıldız arka planı, kayan metin ve müzik içeren geleneksel demoscene tarzı bir intro olup CPU ve RAM olmadan, saf bir durum makinesi olarak gerçekleştirildi
- İkincisi, 640x480 VGA ve videoyla senkronize ses kullanan bir Nyan Cat animasyonu; neredeyse tüm devre tek bir tile içine sığdırıldı
- Tüm görsel ve işitsel efektler Verilog tabanlı mantık devreleri ile doğrudan üretiliyor; üçgen dalga ve pulse wave sentezleyiciler, LFSR gürültüsü, sigma-delta DAC gibi bileşenlerle çok sınırlı kaynakla müzik yeniden üretildi
- Efabless'in iflası nedeniyle üretim durdu, ancak daha sonra çipler kurtarıldı ve gerçek donanımda kusursuz çalıştıkları doğrulandı
TT08 intro demosu
- Grafik yapısı; arka planda yıldız alanı, 3D dama tahtası, dalgalanan kayan metin ve gölge efektleri içeriyor
- VGA çözünürlüğü 1220x480, 48MHz saat kullanılıyor
- Görüntü, Verilator simülasyonu ile C++'a dönüştürülüp SDL penceresinde render edilerek üretiliyor
- 293 flip-flop ve toplam 3374 hücre kullanılarak alan sınırına yaklaşıldı
- Font kodlaması kapı alanının büyük kısmını tükettiği için renk değerlerinden vazgeçilip çapraz şerit deseni kullanıldı
- ROM olmadan veri kodlamak için desenler doğrudan mantık kapılarıyla ifade edildi
- Yosys sentez hattı, truth table'ları standart hücrelere dönüştürüyor
- Veri karmaşıklığından çok, adrese bağlı algoritmik sadelik alan tasarrufu açısından daha avantajlı oldu
- Sinüs kaydırıcı, tablo kullanmadan vektör döndürme ile gerçekleştirildi
- Minsky'nin symplectic integrator yöntemiyle dairesel yörünge üretildi
- Dama tahtası düzleminin projeksiyonu sabit noktalı aritmetik ile gerçekleştirildi
recip16 modülü, y koordinatının tersini hesaplayarak perspektif dönüşümünü yapıyor
- Renk deseni XOR işlemiyle üretiliyor, düzlemin yüksekliği de davul vuruşlarına göre değişiyor
Grafik ayrıntıları
- Gölge efekti, kayan metni düzlem koordinat sistemine yansıtıp renk bitlerini kaydırarak oluşturuluyor
- Yıldız arka planı (Starfield), her scanline için LFSR ile rastgele değer üretiyor
- Kare sayacıyla birleştirilerek yıldızların konumu ve hızı belirleniyor, kuyruk uzunluğu da snare davul zamanlamasına göre değişiyor
Müzik sentezi
- Mantık kapısı tekrarını en aza indirmek için yineleyen ABACABAD yapısı kullanıldı
- Üç kanallı yapı
- Gürültü + üstel sönümleme (snare)
- Kare dalga arpejleri (melodi/akorlar)
- Üçgen dalga + üstel sönümleme (kick/bas)
- Ses çıkışı sigma-delta DAC ile veriliyor
- PWM yerine birikimcinin carry bit'inin çıkış alınmasıyla daha basit bir uygulama sağlandı
- Akor ilerleyişi, Crooner (C64 SID) parçasından uyarlandı
- 8 notalı dizi tabanlı, 2 oktav aralığında, bit tabanlı arpejler kullanılıyor
- Tempo 15 ve 25 tick arasında dönüşümlü kullanılarak swing ritim elde edildi
Geriye dönük değerlendirme
- Ses ve video saatlerinin ayrıldığı tasarım nedeniyle müzik-görüntü senkronu bozuldu
- Standart dışı 1220x480 çözünürlük seçimi yüzünden LCD görüntü kalitesi düştü
- CRT'de doğal bir dithering etkisi oluşurken dijital yakalamada bozulma görüldü
Nyan Cat demosu
- Tiny Tapeout 8 son teslim tarihine hemen önce üretildi; 640x480 VGA ve 60Hz senkron ses kullanıyor
- Orijinal GIF'ten kareler ve palet çıkarılıp RGB222'ye dithering ile dönüştürüldü
- LFSR tabanlı yıldız arka planı yeniden kullanıldı
- Müzik verisi, MIDI dosyası parse edilerek 8 notalı diziye yeniden eşlendi
- Yalnızca bas/kick kanalı ile melodi kanalı olmak üzere iki kanal kullanıldı
- Her kare başlangıcında (60Hz) üstel sönümleme zarfı uygulanıyor
- Melodi, %25 duty cycle pulse wave ile üretiliyor
- Frekans ayarı için oktava göre üst bitler seçiliyor
- Tınıyı ayarlamak için alçak geçiren filtre eklendi
Üretim ve sonuç
- Tiny Tapeout 8, 2024 Eylül'ünde üretime başladıktan sonra Efabless iflası nedeniyle durdu
- 2025'in ikinci yarısında yeni operasyon ekibi çipleri geri alıp dağıttı
- Gerçek çip testlerinde tüm tasarımlar düzgün çalıştı
- Yalnızca Donut demosunda kararlılık için saat frekansının 45MHz'e düşürülmesi gerekti
- Nyan Cat demosu, hem LCD'de hem CRT'de kusursuz oynatıldı
- Bitluni'nin YouTube canlı yayınında gösterildi
Kapanış
- 1 yıldan uzun bekleyişin ardından gerçek silikonda kusursuz çalışan demo doğrulandı
- Tiny Tapeout ortamında CPU ve RAM olmadan, saf mantık devreleriyle görsel ve işitsel efekt üretimine dair bir örnek sunuldu
- Gelecekte daha gelişmiş düşük seviyeli donanım demo teknikleri geliştirme planlarından söz ediliyor
1 yorum
Hacker News yorumları
Bilgisayar bilimi mezunuyum ama bilgisayar mühendisliğine de ilgim var; böyle bir retro render mimarisini kendim yapıp tapeout aşamasına kadar götürmeyi isterdim
Basit ama gerçekten çok eğlenceli bir yapı, o yüzden bu tür projeleri çok seviyorum
Sadece FPGA ile bile oldukça ileri gidilebilir. Kendi SoC'ni tasarlayabiliyor olmak her zaman heyecan verici
Mesela “9 tane I2C portu gerekiyor?” dersen, bloğu kopyalayıp yapıştırman yeterli.
Yazılımda yavaş kalan bir işlem varsa, donanım hızlandırıcısını da kendin yapabilirsin
Herkes bağlandıkça kültürün tekdüzeleştiği yönler de var ama dünyanın dört bir yanından birkaç düzine insanın böyle harika bir yarışma için bir araya gelebilmesi müthiş
Gridin kick drum'la birlikte nabız atar gibi titreşen efektini sevdim. Hoş bir ince dokunuş
Alıntılanan HAKMEM sin/cos üretecinin uzun vadeli kararlılığını merak edip araştırdım
İlgili genel bakış burada
(kesin aritmetik koşulları altında kararlı olduğu söyleniyor)
Tesadüfen, geçen hafta paylaşılan Verlet integration videosuyla da bağlantılı
Ben de o videoyu YouTube önerilerinde görmüştüm, epey keyifliydi
Üniversite yıllarımı hatırlattı — “donanım ve yazılım mantıksal olarak eşdeğerdir” sözü aklıma geldi
Gerçekten etkileyici bir iş. Eskiden JS demoscene, özellikle de dwitter ile çok uğraşırdım; ama bu bambaşka bir seviye
Bu yorum sayesinde kontrol edince TinyTapeout'un yeniden canlandığını öğrenmiş oldum
Tiny Tapeout ile bir FPAA yapmayı isterdim ama ayrılan alana sığmaz gibi görünüyor
“No x, no y, just z” gibi kalıplar ChatGPT'de çok sık kullanıldığı için artık sıradan kullanıcılar da kullanmaya başlamış gibi görünüyor
Eskiden meslek okulunda pinball makinesi tamir ettiğim günleri hatırlattı. Güzel anılar
Gerçekten harika!
Şu anki Open Shuttle'a baktığımda, projede 4KB SRAM lisansını kullanmak için $2500 gerektiğini görüyorum
Bunun yerine Wishbone Bus arayüzü de dahil