2 คะแนน โดย GN⁺ 2025-12-21 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ในการแข่งขันเดโมของ Tiny Tapeout 8 มีการสร้างเดโม ASIC สองชิ้นที่แสดงผล กราฟิก VGA และเสียง 1 บิต โดยใช้ลอจิกเกตราว 4,000 ตัวเท่านั้น
  • ชิ้นแรกเป็นอินโทรสไตล์เดโมซีนแบบดั้งเดิมที่มี กระดานหมากรุก 3D, พื้นหลังดาว, ข้อความเลื่อน, เพลง และถูกสร้างด้วย state machine ล้วน ๆ โดยไม่มี CPU·RAM
  • ชิ้นที่สองคือ แอนิเมชัน Nyan Cat ซึ่งใช้ 640x480 VGA และ เสียงที่ซิงก์กับวิดีโอ โดยบรรจุวงจรแทบทั้งหมดไว้ในไทล์เดียว
  • เอฟเฟกต์ภาพและเสียงทั้งหมดถูกสร้างขึ้นโดยตรงด้วย วงจรลอจิกบน Verilog และสร้างเพลงใหม่ด้วยทรัพยากรน้อยที่สุด เช่น ตัวสังเคราะห์คลื่นสามเหลี่ยม·คลื่นพัลส์, สัญญาณรบกวน LFSR, Sigma-Delta DAC
  • แม้ว่า การผลิตจะหยุดลงจากการล้มละลายของ Efabless แต่ภายหลังชิปได้รับการกู้คืน และยืนยันได้ว่าทำงานได้สมบูรณ์บนฮาร์ดแวร์จริง

เดโมอินโทร TT08

  • กราฟิกประกอบด้วย พื้นหลังดาว, กระดานหมากรุก 3D, ข้อความเลื่อนแบบเป็นคลื่น และเอฟเฟกต์เงา
    • ความละเอียด VGA 1220x480 ใช้สัญญาณนาฬิกา 48MHz
    • ใช้ การจำลองด้วย Verilator แปลงเป็น C++ แล้วเรนเดอร์ลงหน้าต่าง SDL เพื่อสร้างวิดีโอ
  • ใช้ ฟลิปฟลอป 293 ตัว รวมทั้งหมด 3374 เซลล์ ซึ่งเกือบชนขีดจำกัดพื้นที่
    • เนื่องจากการเข้ารหัสฟอนต์กินพื้นที่เกตมาก จึงตัดค่าสีทิ้งและแทนที่ด้วย แพตเทิร์นแถบทแยง
  • เพื่อ เข้ารหัสข้อมูลโดยไม่มี ROM จึงแสดงแพตเทิร์นโดยตรงด้วยลอจิกเกต
    • ไปป์ไลน์สังเคราะห์ของ Yosys จะ แปลง truth table เป็น standard cell
    • เมื่อเทียบกับความซับซ้อนของข้อมูลแล้ว ความเรียบง่ายเชิงอัลกอริทึมตามแอดเดรส ช่วยประหยัดพื้นที่ได้มากกว่า
  • ตัวเลื่อนแบบไซน์เวฟ ถูกสร้างด้วยการหมุนเวกเตอร์โดยไม่ใช้ตาราง
    • ใช้วิธี symplectic integrator ของ Minsky เพื่อสร้างวิถีวงกลม
  • การฉายระนาบกระดานหมากรุก ทำด้วยการคำนวณ fixed-point
    • โมดูล recip16 คำนวณค่ากลับของพิกัด y เพื่อทำ การแปลงเพอร์สเปกทีฟ
    • สร้างแพตเทิร์นสีด้วยการทำ XOR และปรับระดับความสูงของระนาบตามจังหวะกลอง

รายละเอียดกราฟิก

  • เอฟเฟกต์เงา ทำโดยฉายข้อความเลื่อนไปยังระบบพิกัดของระนาบแล้วเลื่อนบิตสี
  • พื้นหลังดาว (Starfield) สร้างเลขสุ่มในแต่ละสแกนไลน์ด้วย LFSR
    • เมื่อนำไปรวมกับตัวนับเฟรม จะใช้กำหนดตำแหน่งและความเร็วของดาว และปรับความยาวหางให้เข้ากับจังหวะสแนร์

การสังเคราะห์เพลง

  • ใช้โครงสร้างซ้ำแบบ ABACABAD เพื่อลดการซ้ำซ้อนของลอจิกเกตให้น้อยที่สุด
  • ประกอบด้วย สามช่องสัญญาณ
    • นอยส์+การลดทอนแบบเอ็กซ์โปเนนเชียล (สแนร์)
    • อาร์เพจจิโอคลื่นสี่เหลี่ยม (เมโลดี้/คอร์ด)
    • คลื่นสามเหลี่ยม+การลดทอนแบบเอ็กซ์โปเนนเชียล (คิก/เบส)
  • ส่งออกเสียงด้วย Sigma-Delta DAC
    • แทนที่จะใช้ PWM จะส่งออกบิตแคร์รีของตัวสะสมเพื่อให้โครงสร้างเรียบง่าย
  • ยืมคอร์ดโปรเกรสชันจากเพลง Crooner (C64 SID)
    • อิงกับสเกล 8 โน้ต ช่วง 2 อ็อกเทฟ และใช้อาร์เพจจิโอระดับบิต
    • สร้างจังหวะสวิงด้วยการสลับเทมโป 15·25 ทิก

ข้อสังเกตย้อนหลัง

  • การออกแบบที่แยกนาฬิกาออดิโอกับวิดีโอทำให้เกิด ความคลาดเคลื่อนของซิงก์ระหว่างเพลงกับภาพ
  • การเลือกใช้ความละเอียดนอกมาตรฐาน 1220x480 ทำให้ คุณภาพการแสดงผลบน LCD ลดลง
  • บน CRT จะมีเอฟเฟกต์ dithering ที่เป็นธรรมชาติ แต่ในการแคปเจอร์แบบดิจิทัลจะเกิดความเพี้ยน

เดโม Nyan Cat

  • สร้างขึ้นก่อนเดดไลน์ของ Tiny Tapeout 8 ไม่นาน โดยใช้ 640x480 VGA และเสียงซิงก์ที่ 60Hz
    • ดึงเฟรมและพาเลตจาก GIF ต้นฉบับแล้วแปลงเป็น dithering แบบ RGB222
    • นำ พื้นหลังดาวแบบ LFSR กลับมาใช้ซ้ำ
  • ข้อมูลเพลง มาจากการพาร์สไฟล์ MIDI แล้วรีแมปเป็นสเกล 8 โน้ต
    • ใช้เพียงสองช่องคือช่องเบส/คิก และช่องเมโลดี้
    • ใช้ เอนเวโลปการลดทอนแบบเอ็กซ์โปเนนเชียล ทุกครั้งที่เริ่มแต่ละเฟรม (60Hz)
  • สร้างเมโลดี้ด้วย คลื่นพัลส์แบบ duty cycle 25%
    • ปรับความถี่โดยเลือกบิตระดับบนตามแต่ละอ็อกเทฟ
    • เพิ่มตัวกรอง low-pass เพื่อปรับโทนเสียง

การผลิตและผลลัพธ์

  • Tiny Tapeout 8 เริ่มการผลิตในเดือนกันยายน 2024 แต่หยุดลงเพราะ Efabless ล้มละลาย
    • ในช่วงครึ่งหลังของปี 2025 ทีมปฏิบัติการชุดใหม่ได้นำชิปกลับมาและแจกจ่าย
  • จากการทดสอบชิปจริง ทุกดีไซน์ทำงานได้ตามปกติ
    • มีเพียงเดโม Donut ที่ต้องลดสัญญาณนาฬิกาลงเหลือ 45MHz เพื่อความเสถียร
  • เดโม Nyan Cat เล่นได้สมบูรณ์ทั้งบน LCD และ CRT
    • มีการสาธิตในไลฟ์ YouTube ของ Bitluni

สรุป

  • หลังจากรอนานกว่าหนึ่งปี ในที่สุดก็ยืนยันได้ว่าเป็น เดโมที่ทำงานได้สมบูรณ์บนซิลิคอนจริง
  • เป็นตัวอย่างของ การสร้างเอฟเฟกต์ภาพและเสียงด้วยวงจรลอจิกล้วนในสภาพแวดล้อม Tiny Tapeout โดยไม่มี CPU·RAM
  • มีการกล่าวถึงแผนพัฒนา เทคนิคเดโมฮาร์ดแวร์ระดับล่าง ให้ก้าวหน้าขึ้นในอนาคต

1 ความคิดเห็น

 
GN⁺ 2025-12-21
ความเห็นจาก Hacker News
  • แม้จะเรียนเอกวิทยาการคอมพิวเตอร์ แต่ก็สนใจวิศวกรรมคอมพิวเตอร์ด้วย เลยอยากลองสร้าง สถาปัตยกรรมการเรนเดอร์แบบเรโทร แบบนี้ด้วยตัวเองและไปจนถึงขั้น tapeout
    เป็นโครงสร้างที่เรียบง่ายแต่สนุกมาก เลยชอบโปรเจ็กต์แบบนี้สุดๆ

    • แนะนำแบบเดียวกับผู้เขียนคือ เริ่มจากการจำลองก่อนแล้วค่อยไป FPGA
      แค่ FPGA อย่างเดียวก็ไปได้ไกลพอสมควรแล้ว การได้ออกแบบ SoC เองนี่น่าตื่นเต้นเสมอ
      เช่นถ้าคิดว่า “ต้องมีพอร์ต I2C 9 พอร์ตแฮะ?” ก็แค่คัดลอกบล็อกแล้ววางเพิ่มได้เลย
      ถ้ามีงานคำนวณที่ช้าบนซอฟต์แวร์ ก็สามารถทำ hardware accelerator ขึ้นมาเองได้ด้วย
    • น่าทึ่งที่อินเทอร์เน็ตช่วยเชื่อม คอมมูนิตี้เล็กๆ ตามความสนใจเฉพาะทาง แบบนี้เข้าด้วยกัน
      แม้การที่ทุกคนเชื่อมถึงกันจะทำให้วัฒนธรรมมีความเป็นเนื้อเดียวกันมากขึ้นด้วย แต่การที่มีคนไม่กี่สิบคนจากทั่วโลกมารวมตัวกันเพื่อการแข่งขันเจ๋งๆ แบบนี้ได้ก็สุดยอดมาก
  • ชอบการกำกับภาพที่ทำให้กริด เต้นเป็นจังหวะตามเสียงคิกดรัม รายละเอียดเล็กๆ แบบนี้ดีมาก

  • สงสัยเรื่องเสถียรภาพระยะยาวของ ตัวสร้าง sin/cos แบบ HAKMEM ที่ถูกอ้างถึง เลยไปค้นดู
    สรุปภาพรวมที่เกี่ยวข้องอยู่ ที่นี่
    (บอกว่าเสถียรภายใต้เงื่อนไขทางคณิตศาสตร์ที่แม่นยำ)
    บังเอิญว่าเกี่ยวข้องกับ วิดีโอ Verlet integration ที่โพสต์เมื่อสัปดาห์ก่อนด้วย

    • ภายใต้เงื่อนไขบางอย่างมันทำงานได้อย่างแม่นยำ เท่ากับว่าใช้ ทริกทางคณิตศาสตร์ แบบเดียวกัน
      ผมก็เห็นวิดีโอนั้นจากคำแนะนำใน YouTube เหมือนกัน และดูเพลินมาก
  • ทำให้นึกถึงสมัยเรียนมหาวิทยาลัย — นึกถึงคำพูดที่ว่า “ฮาร์ดแวร์กับซอฟต์แวร์มีความเท่าเทียมกันในเชิงตรรกะ

    • การเขียนฮาร์ดแวร์คล้ายกับการเขียนซอฟต์แวร์ แต่ ความขนานนั้นถูกกว่ามาก และความผิดพลาดก็แพงกว่ามาก
  • เป็นงานที่น่าประทับใจจริงๆ เมื่อก่อนผมเล่น JS demoscene บ่อย โดยเฉพาะ dwitter แต่นี่คนละระดับกันเลย
    พอเห็นคอมเมนต์นี้เลยไปเช็กดู ถึงได้รู้ว่า TinyTapeout กลับมามีชีวิตอีกครั้งแล้ว

  • อยากลองทำ FPAA ด้วย Tiny Tapeout แต่คิดว่าน่าจะไม่พอดีกับพื้นที่ที่จัดสรรไว้

    • บน TT ถ้าจ่ายเพิ่มก็ทำ ดีไซน์แบบหลายบล็อก ได้เหมือนกัน
  • พอแพตเทิร์นอย่าง “No x, no y, just z” ถูกใช้ใน ChatGPT บ่อยๆ ตอนนี้ดูเหมือนแม้แต่ผู้ใช้ทั่วไปก็เริ่มใช้กันแล้ว

    • ภาษามีการเปลี่ยนแปลงอยู่เสมอ LLM มีด้านลบเยอะก็จริง แต่การเปลี่ยนแปลงทางภาษาแบบนี้ผมว่าไม่เป็นพิษเป็นภัย
    • จริงๆ แล้วผมก็จำได้ว่าตอนประถมเคยใช้วลีประมาณ “no x, no y, just z” เป็นสโลแกนหาเสียงหัวหน้าห้องเหมือนกัน
    • หรือบางที ChatGPT อาจเป็นฝ่าย เรียนรู้สำนวนจากผู้ใช้ทั่วไป ก็ได้
  • ทำให้นึกถึงตอนที่เคย ซ่อมเครื่องพินบอลในโรงเรียนอาชีวะ เป็นความทรงจำที่ดี

  • เจ๋งมาก!

  • ตอนนี้พอดู Open Shuttle แล้ว ถ้าจะใช้ไลเซนส์ 4KB SRAM ในโปรเจ็กต์ต้องจ่าย $2500
    แต่จะรวมอินเทอร์เฟซ Wishbone Bus มาด้วย

    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