本篇文章更新時間:2025/12/22
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
編輯前言:這篇來自 Pure Silicon Demo Coding: No CPU, No Memory, Just 4k Gates,作者分享了他如何在沒有 CPU、沒有記憶體、邏輯閘只有 4000 個的 ASIC 平台上,硬寫出完整的視覺與音樂 Demo。這不是一般的程式設計,而是純電路級的創作挑戰。讀完最大的感覺是:這其實是另一種形式的 Demo scene。
內容目錄
核心觀點 (Key Takeaways)
- 這是一場在極端硬體限制下的「純電路」Demo 創作:沒有 ROM、沒有 RAM、沒有 CPU。
- 所有資料、音樂、動畫都必須以「邏輯結構」存在,真正把 ROM 壓縮成邏輯函式,而不是位元表。
- Tiny Tapeout 雖小,但完整實現了從 Verilog → 硬化 → 製程 → 最終可運作晶片的真實體驗。
深入解析
作者在 Tiny Tapeout 8 中提交三個 Demo,其中包含一支 Full-screen intro 與一個 Nyan Cat。限制是殘酷的:
every bit of state is a flipflop … you get no ROM, no RAM, and every pixel must be produced every clock cycle.
換句話說,所有的畫面、音樂邏輯,都必須在「沒有儲存體、只能即時計算」的條件下工作。作者靠著三個策略完成:
- 用計算取代資料:如不放 sine table,而是用 Minsky 的向量旋轉技巧產生正弦。
- 讓資料變成邏輯:ROM 以大型 truth table 給 yosys 壓縮成邏輯電路,而非位元陣列。
- 避免 flip-flop:因為 flip-flop 佔面積,他盡量以純組合邏輯決定音符與節奏。
視覺層:checkerboard、sine scroller、starfield
作者拆成多個小模組:
- checkerboard 透過每行執行 1 次除法(non-restoring division)取得 1/y 的比例,避免大量 LUT。
- scrolling text shadow 使用「不精準但近似」的 sine。
- starfield 用 LFSR 為每一 scanline 產生一致星星序列。
整體美感極度 Demo scene:checkerboard、sine wave、色彩 dithering、oscilloscope 小窗。
音樂層:三個 channel,純邏輯合成
音樂部分完全沒有樣本儲存:
- 三聲部:LFSR 噪音、square wave、triangle kick。
- 指令序列 透過最小化邏輯表達(ABACABAD),取代存表。
- envelope = right shift:以位移實現指數衰減。
- sigma-delta DAC:最簡 DAC,但在 TT08 上會帶來不同邊緣速度 → 失真。
整首歌其實是 Python 中用字串寫出的 patterns,自動轉成 Verilog 用的資料表。
Nyan Cat:把前面學到的都重新做一次
後來 Discord 有人喊「挑戰做 Nyan Cat」,作者兩天內做出:
- 解析原 GIF、提取 palette、做 RGB222 dither。
- 重做 starfield。
- 從 MIDI 拉旋律與 bass,重新 mapping 成 8-note 音階。
- 聲音只用兩聲部:square bass/kick 與 25% duty melody。
本來想把所有邏輯塞入「一 tile」,但 routing 過不去,最後用兩 tiles 並塞了 sunglasses「deal with it」彩蛋。
筆者心得與啟發
讀完最大的震撼是:這不是「用 Verilog 做遊戲」,而是「直接用晶體管在跳舞」。在沒有 CPU、沒有記憶體的情況下,作者依然讓動畫、音樂、節奏同步、影格轉場全部建立起來。這種思維完全不同於軟體工程,而更像:
- 用代數去壓縮資料
- 用時序取代迴圈
- 用組合邏輯重現 ROM
這讓我重新思考「程式」這件事:我們平常依賴 CPU、RAM、緩衝區、資料結構,但這篇文章展示了當這些抽象全都不在時,純電路仍能創造複雜的藝術效果。
也讓我重新理解 Tiny Tapeout 的價值:它讓創作者不是跑模擬器,而是把作品「刻進矽片」。這種過程的等待與不確定性(尤其是 Efabless 破產的插曲),也讓作品更有紀念性。
如果你對 low-level rendering、音樂合成、Demo scene、美學壓縮有興趣,這篇文章會是極佳的深入案例。作者說他有「更好的技巧」要用在下一個作品,我真心期待。
