5 คะแนน โดย GN⁺ 2025-07-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เพื่อสร้าง ตลับเกมบอยแบบทำเอง ผู้เขียนได้ผ่าน กระบวนการวิจัยและออกแบบหลายปี
  • บทความนี้รวบรวมข้อมูลทางเทคนิคสำคัญที่จำเป็นต่อการสร้าง ตลับเกมบอยแบบคัสตอม อย่างเป็นระบบในมุมมองของ ผู้เริ่มต้น
  • เกมบอยเป็นแพลตฟอร์มที่น่าดึงดูดสำหรับ ชุมชนพัฒนาเกมย้อนยุคและฮาร์ดแวร์แฮ็กกิง เพราะมีโครงสร้างฮาร์ดแวร์ที่ เรียบง่ายแต่ขยายต่อได้ดี
  • ตลับสามารถ บรรจุทั้งข้อมูลเกมและฮาร์ดแวร์เพิ่มเติม (เช่น RTC, เซ็นเซอร์ ฯลฯ) เพื่อเพิ่มความสามารถใหม่ให้เกมบอย
  • วงจร Memory Bank Controller (MBC) ทำให้ ขยายความจุและเข้าถึงหน่วยความจำแบบเลือกได้ จึงรองรับการทำงานของเกมได้หลากหลายรูปแบบ

บทนำและเป้าหมาย

  • ผู้เขียนตั้งเป้าหมายส่วนตัวในการ สร้างตลับเกมบอยขึ้นใหม่ทั้งหมด
  • ได้สรุปและเผยแพร่ความรู้เกี่ยวกับโครงสร้างภายในและหลักการทำงานของตลับเกมบอยในรูปแบบโอเพนซอร์ส
  • จุดประสงค์ของบทความคือการเรียบเรียงข้อมูลเทคนิคที่เข้าใจยากใหม่ให้ ทุกคนตามทันได้จากมุมมองของผู้เริ่มต้น
  • อธิบายโดยเน้น พฤติกรรม (behavior) ที่สังเกตได้จากภายนอก มากกว่าหลักการทำงานภายในของฮาร์ดแวร์
  • ใช้ SoC ของ DMG (เกมบอยรุ่นแรก) เป็นฐานในการอธิบาย และอุปกรณ์ตระกูลเกมบอยก็มีอินเทอร์เฟซตลับพื้นฐานคล้ายกัน

ความพิเศษของแพลตฟอร์มเกมบอย

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

โครงสร้างพื้นฐานของตลับเกมบอย

  • เครื่องคอนโซลยุคก่อนมี เส้นแบ่งระหว่างซอฟต์แวร์กับฮาร์ดแวร์ที่ไม่ชัดเจน
  • เกมบอย ไม่มีระบบปฏิบัติการหรืออุปกรณ์เก็บข้อมูลถาวรในตัว โค้ดที่ใช้รันทั้งหมดและฮาร์ดแวร์เสริมจะอยู่ใน ตลับ
  • เพราะเหตุนี้ ตลับต้องทำงานได้สมบูรณ์ก่อนที่ เกมบอยจะบูตและทำงานได้
  • edge connector 32 พิน ที่ด้านล่างของตลับเป็นอินเทอร์เฟซหลักสำหรับรับส่งสัญญาณกับตัวเครื่อง
  • สัญญาณระหว่างตลับกับตัวเครื่องแบ่งได้เป็น ไฟเลี้ยง, สัญญาณควบคุม (อ่าน/เขียน/เลือกชิป), address bus (16 บิต), data bus (8 บิต)

Bus และหลักการทำงาน

  • bus คือโครงสร้างที่ชิ้นส่วนหลายตัวแชร์สายสัญญาณชุดเดียวกันเพื่อส่งข้อมูลได้พร้อมกัน
  • CPU ของเกมบอยจะส่งแอดเดรสที่ต้องการไปยัง address bus และส่งข้อมูลไปยัง data bus
  • เพราะโครงสร้าง bus เป็นแบบ ขนาน (parallel) พินที่แทนแต่ละบิตจึงมีอยู่จริงบนฮาร์ดแวร์
  • แม้จะได้เปรียบด้านความเร็ว แต่เมื่อ bus เป็นทรัพยากรร่วมก็มีความเสี่ยงเรื่อง การชนกัน/คอนเทนชัน (เขียนพร้อมกัน)
  • หากมี IC หลายตัวส่งข้อมูลออกมาพร้อมกัน จะเกิด ชอร์ต (เสี่ยงร้อนเกินและเสียหาย) ดังนั้นจึงต้องให้มี IC ที่เปิดใช้งานอยู่เพียงตัวเดียวเสมอ

การแบ่งประเภทหน่วยความจำหลักของเกมบอย

  • เกมบอยสามารถติดตั้ง IC หน่วยความจำได้สูงสุด 4 ประเภท (RAM ในตัว, video RAM, cartridge ROM, cartridge RAM)
  • ในทางปฏิบัติ video RAM ใช้ bus แยกต่างหาก จึงมักไม่นับรวมในการอธิบายทั่วไป
  • ชุด RAM/ROM ในตัวและบนตลับ ใช้ address bus และ data bus ชุดเดียวกันร่วมกัน
  • ต้องมี เพียงชิปเดียวในแต่ละครั้ง ที่ทำการอ่านหรือเขียนบน data bus
  • ในทางปฏิบัติยังเรียกกันว่า RAM ในตัว (WRAM), RAM บนตลับ (SRAM), video RAM (VRAM), high RAM (HRAM)

Chip Select และโครงสร้างวงจร

  • ชิปหน่วยความจำแต่ละตัวจะมีพิน สัญญาณเลือกชิป (CS/CE, Chip Select/Chip Enable)
  • สถานะของสัญญาณเลือกชิปจะกำหนดว่าชิปใดเข้าถึง data bus ได้
  • เกมบอยนำ 3 บิตบนของ address bus (A15, A14, A13) และพิน _CS ของ CPU มาใช้ซ้ำสำหรับการเลือกชิป
  • การต่อวงจรลักษณะนี้ รับประกันว่าจะไม่เปิดใช้งานเกินสองชิปขึ้นไปพร้อมกัน
  • ตัวอย่างเช่น ROM จะถูกเปิดใช้งานก็ต่อเมื่อ A15 เป็น 0 ส่วน RAM จะถูกเปิดผ่านลอจิกอีกชุดหนึ่ง

Memory Map และมุมมองของโปรแกรมเมอร์

  • สถานะของแอดเดรสและพินในระดับฮาร์ดแวร์ถูกทำให้เป็นนามธรรม จนโปรแกรมเมอร์รับรู้เพียง memory map เชิงตรรกะ
  • ในพื้นที่แอดเดรส 16 บิต ช่วง 0x0000–0x7FFF ถูกแมปเป็น cartridge ROM, 0xA000–0xBFFF เป็น cartridge RAM, และ 0xC000–0xDFFF เป็น RAM ในตัว
  • เมื่อเข้าถึงแอดเดรสที่กำหนด หน่วยความจำช่วงที่ต้องการจะถูกเปิดใช้งานอัตโนมัติ ส่วนที่เหลือจะถูกปิดใช้งาน
  • เอกสาร memory map จึงเป็นแหล่งอ้างอิงสำคัญในเอกสารของเกมบอย

Memory Bank Controller (MBC)

  • MBC คือวงจรสำคัญในตลับเกมบอยที่ทำให้ รองรับ ROM ขนาดเกิน 32KB รวมถึง RAM และอุปกรณ์ต่อพ่วงเพิ่มเติม ได้
  • แม้จะมี MBC หลายชนิดวางจำหน่าย แต่ที่นี่อธิบายโดยอิง MBC5 ซึ่งค่อนข้างเรียบง่ายและใช้งานได้กว้าง
  • MBC5 รองรับ ROM ได้สูงสุด 8MB และ cartridge RAM 128KB ผ่านเทคนิค การสลับแบงก์ (banking)
  • ยังสามารถควบคุมการเข้าถึง RAM และฮาร์ดแวร์แยกอย่างเซ็นเซอร์ภายนอกหรือ RTC ได้ด้วย
  • ในพินแอดเดรสของ ROM บนตลับ บิตบน (A22~A14) จะถูกควบคุมแบบไดนามิกโดย MBC5 ส่วนบิตล่างจะต่อเข้ากับ address bus ของตัวเครื่องโดยตรง

หลักการของ ROM Banking

  • CPU ของเกมบอยมีพื้นที่แอดเดรสได้สูงสุด 64KB แต่ในทางปฏิบัติใช้กับ ROM เพียง 32KB (16KB+16KB)
  • MBC5 ควบคุมแอดเดรสบนของ ROM (การเลือกแบงก์) โดยตรง เพื่อแมปช่วงที่ต้องการขนาด 16KB เข้าสู่พื้นที่แอดเดรสของ CPU
  • ในเชิงฮาร์ดแวร์ 14 บิตล่างของ address bus จาก CPU (A0~A13) จะต่อเข้ากับชิป ROM โดยตรง ส่วนที่เหลือรับจาก MBC5
  • ระหว่างที่เกมกำลังทำงาน เมื่อซอฟต์แวร์เขียนค่าไปยัง แอดเดรสหน่วยความจำบางตำแหน่ง MBC จะตรวจจับ และอัปเดตค่าแบงก์ที่เลือกไว้ภายใน

โปรโตคอลและกลไกของ MBC

  • MBC5 จะตรวจจับ ชุดค่าผสมของแอดเดรส/สัญญาณควบคุมบางแบบ เพื่อทำงานอย่างการเลือก ROM bank, เลือก RAM bank, และเปิด/ปิดฟังก์ชันอื่น ๆ
  • ตัวอย่างเช่น หากมีการเขียนในช่วง A15=0, A13=1, A14=0 (0x2000~0x3FFF) ค่าที่อยู่บน data bus จะถูกบันทึกเป็นหมายเลข ROM bank
  • ในมุมของโปรแกรมเมอร์ การสลับแบงก์จึงไม่ได้ดูเหมือนการควบคุมวงจรระดับล่าง แต่เป็นเพียงการ เขียนข้อมูลไปยังแอดเดรสที่กำหนด
  • การใช้งาน cartridge RAM, เซ็นเซอร์, RTC และอื่น ๆ ก็ถูกควบคุมด้วยรูปแบบคล้ายกัน
  • เทคนิค การนำ bus กลับมาใช้ซ้ำ (reuse) แบบนี้ช่วยลดจำนวนชิ้นส่วนและลดต้นทุนได้

บทสรุปและการใช้ประโยชน์จากชุมชน

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

แหล่งอ้างอิงและเส้นทางการเรียนรู้เพิ่มเติม

  • บทความ Game Boy/Game Boy Color Architecture ของ Rodrigo Copetti
  • เอกสารเทคนิคจาก gbdev.io, Pan Docs
  • แบบออกแบบตลับและ toolchain โอเพนซอร์สหลากหลายแบบ (เช่น GBDK, RGBDS เป็นต้น)
  • ตัวอย่างโปรเจกต์ทำเอง: abc.decontextualize.com

(ในช่วงหลังของบทความต้นฉบับยังกล่าวถึงองค์ประกอบที่ซับซ้อนยิ่งขึ้น เช่น ความแปรผันของดีไซน์ MBC, EEPROM/flash memory, I/O IC และการรวมอุปกรณ์ต่อพ่วงต่าง ๆ แต่หัวข้อด้านบนคือแก่นสำคัญของหลักการทำงานของตลับเกมบอย)

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

 
GN⁺ 2025-07-23
ความเห็นจาก Hacker News
  • อยากแชร์ประสบการณ์การใช้ TI TXB0108 แม้ฟังก์ชันตรวจจับทิศทางอัตโนมัติจะดูเหมือนไม่ต้องเพิ่มลอจิกทิศทางแยก แต่ในความเป็นจริงไม่แนะนำให้ใช้ เพราะเมื่อมี electrical noise ทิศทางอาจสลับจนอินพุตกลายเป็นเอาต์พุตได้ ทุกครั้งที่เกิดขึ้นอุปกรณ์อาจทนไหว หรือถ้าหนักก็อาจเกิดสิ่งที่เรียกกันว่า "ควันวิเศษ" และถ้าโชคร้ายมากก็อาจลุกลามเป็นอุบัติเหตุในภาคอุตสาหกรรมได้ คิดว่าชิ้นส่วนแบบนี้มีความเสี่ยงแฝงสำหรับมืออาชีพมากเกินไป ไม่ควรถูกโฆษณาเกินจริง ควรใช้เฉพาะเมื่อรู้ failure mode อย่างแม่นยำ หรือไม่มีทางเลือกอื่นจริง ๆ

    • ชิ้นส่วนพวกนี้คาดเดาไม่ได้จริง ๆ แค่มี trace ฝั่งเอาต์พุตยาวสักหนึ่งสองนิ้วหรือมีคอนเน็กเตอร์ ก็อาจเกิดการกลับทิศทางอัตโนมัติบ่อยจาก output ringing ได้ เป็นระดับที่ถ้าไม่ใช่มืออาชีพแทบใช้งานไม่ได้ และยิ่งมักอยากใช้ในสถานการณ์ที่กลับใช้งานได้ยากกว่าเดิม

    • เคยเจอจริงว่าทิศทางสลับไปมาอย่างรวดเร็วมากจนเกิด noise และการสั่นรุนแรง ข้อจำกัดเรื่อง pull-down ก็มีอยู่พอสมควร แต่ถ้าทั้งสองฝั่งถูกดึงไปในทิศทางเดียวกันก็ยังพอไหว

  • ระหว่างผัดวันประกันพรุ่งเรื่องอื่นอยู่ เลยลองดูแบบ abc-pcb.pdf แล้วมีข้อสังเกตเบื้องต้นบางอย่าง

    • ควรมี decoupling capacitor รอบ ๆ U6 และ U8 เพราะลอจิก LVC กินไฟมากตอนสวิตช์ จึงควรวางใกล้เกต
    • level translator WideBus แบบ 16-wide ควรใส่ capacitor ให้กับขาไฟเข้าทุกขาแยกกัน เพราะที่มีหลายขาไฟก็มีเหตุผลของมัน
    • ทิศทางของบัสเอาต์พุต U6 ดูเหมือนจะผิด จากประสบการณ์ของฉันใช้ Altium เป็นหลักเลยไม่ค่อยรู้ KiCad แต่อาจไม่ใช่ปัญหาก็ได้
    • ไม่ควรใช้ VBUS เป็นสัญญาณลอจิกถ้าต้องการความน่าเชื่อถือ เพราะเมื่อความเร็วการขับช้า timing ของการแปลงอาจต่างกันจนทำงานผิดพลาดได้ แนะนำให้จัดรูปสัญญาณด้วย Schmitt trigger
    • พอร์ต USB ไม่มีวงจรป้องกัน ESD ถ้าอยากให้ใช้นาน ๆ ลองใช้ชิ้นส่วนอย่าง ECMF02-4CMX8 ได้ การบัดกรีอาจน่ารำคาญนิดหน่อย
    • schematic ของ Q1 ไม่ค่อยตรงไปตรงมา ถ้าวาด MOSFET สองตัวแบบปกติแล้วใส่ตัวกำกับแยก จะอ่านง่ายและเข้าใจกว่ามาก
    • สาย 4, 5, 6, 7 ของชิป IC2 (ทำไมไม่ใช่ U2 แต่เป็น IC2?) ถูก cross-drive กันอยู่ และไม่ควรกราวด์ทั้งสองฝั่ง ควรกราวด์เฉพาะฝั่งอินพุต ส่วนเอาต์พุตไม่ต้องต่อ หรือไม่ก็ใช้ตัวต้านทานดึงไว้
    • ขา SENSE ของ U7 แทบไม่กินกระแส จึงไม่จำเป็นต้องสิ้นเปลืองพลังงานกับตัวแบ่งแรงดันแบบตัวต้านทาน
    • เพื่อช่วย damping ของ PDN (power distribution network) น่าจะใส่ electrolytic capacitor ค่ามากสักหนึ่งหรือสองตัวไว้ด้วยก็ดี
  • อ่านแล้วรู้สึกเลยว่า ถ้าบทความนี้มีตั้งแต่ตอนฉันทำคาร์ทริดจ์แบบคัสตอมก็คงดีมาก
    ในเกม Cubeat ของฉัน ฉันใส่ชิป OPL3-L ที่ขา audio in ของ GB เพื่อทำเพลง FM ส่วนลอจิก MBC ใช้เพียง single logic chip ตระกูล 7400
    สักวันหนึ่งอยากทำให้เสร็จและวางขายจริง การได้ลองทำทริกแปลก ๆ แบบนี้บน GB เป็นประสบการณ์ที่สนุกมาก
    ข้อมูล Cubeat

  • นี่แหละคือระดับรายละเอียดเกี่ยวกับโครงสร้างคาร์ทริดจ์ Game Boy ที่ฉันอยากรู้มาตลอด

  • แนวคิดที่คาร์ทริดจ์ Game Boy มาพร้อมทั้ง RAM และพื้นที่ดิสก์ให้ตัวแอปด้วยนั้นสดใหม่ดี และพอคิดดูแล้วก็สมเหตุสมผล
    ถ้าโทรศัพท์ทำงานแบบนี้บ้าง ก็นึกภาพได้ว่าอาจอัปเกรดด้วยการซื้อคาร์ทริดจ์ใหม่ทุก ๆ สองสามปีเมื่อเทคโนโลยีชิปดีขึ้น เพื่อรันแอปที่แรงขึ้น หรือแม้แต่เสียบเสาอากาศแบบใหม่เข้าไป

    • โทรศัพท์แบบโมดูลาร์ถูกเสนอมาแต่ก่อนแล้ว แต่ไม่ค่อยใช้งานได้จริงหรือไม่ค่อยมีประโยชน์ เพราะถ้าเอาทุกชิ้นส่วนไปต่อผ่านซ็อกเก็ต latency ระหว่างชิปจะเพิ่มขึ้นและความน่าเชื่อถือก็ลดลง ยิ่งเป็นอุปกรณ์ที่สั่นอยู่ในกระเป๋าทั้งวันก็ยิ่งเปราะบาง
      ในความเป็นจริง ไม่ได้มีแค่ส่วนเดียวในโทรศัพท์ที่ล้าสมัย แต่เรามักอยากอัปเกรดแทบทุกอย่างพร้อมกัน ทั้งกล้อง หน้าจอ CPU RAM แบตเตอรี่ ฯลฯ ถ้าเป็นแบบนั้น การซื้อโทรศัพท์ใหม่ทั้งเครื่องก็ดีกว่าเปลี่ยนทีละชิ้น สิ่งที่ได้จากการเปลี่ยนแยกจริง ๆ อาจมีแค่ประหยัดค่าตัวเครื่องภายนอกเท่านั้น

    • ตอนนี้กำลังคุยกันเรื่องระบบ hot patch ของ ROM บนไมโครคอนโทรลเลอร์ และด้วยเหตุนี้ข้อดีของโครงสร้างที่ใส่แอปทั้งหมดลงบนชิปแล้วรันได้ทันทีจึงชัดเจนมาก เพียงแต่ความต้องการของผู้ใช้ก็เปลี่ยนไปเรื่อย ๆ เลยยิ่งซับซ้อนขึ้น

    • เป็นไอเดียที่ดีแน่นอน แต่ก็อดคิดไม่ได้ว่าฮาร์ดแวร์ของเครื่องที่ใช้เสียบจะกลายเป็นข้อจำกัดหรือเปล่า
      ต่อให้ใส่ RAM ที่เร็วกว่าไว้ในคาร์ทริดจ์ได้ ก็ยังไม่แน่ใจว่าบอร์ดเดิมจะใช้ประโยชน์จากมันได้ดีแค่ไหน
      แม้จะต่อสตอเรจที่เร็วขึ้นได้ แต่ถ้าฮาร์ดแวร์รองรับยังเหมือนเดิม ก็ไม่แน่ว่าผลที่ได้จริงจะมากแค่ไหน

    • ถึงขั้นจินตนาการว่าอาจเสียบกล้องเข้าไปได้ด้วย

  • มีคนถามว่าในเมื่อบอกว่าการทำซอฟต์แวร์คัสตอมบน Game Boy ไม่จำเป็นต้องข้ามฮาร์ดแวร์ป้องกันการคัดลอกหรือ region lock จริงหรือ ในเมื่อยังต้องผ่านการตรวจสอบโลโก้อยู่ไม่ใช่หรือ

    • น่าจะหมายถึงว่าไม่ต้องดัดแปลงหรือแฮ็กฮาร์ดแวร์ แค่ใส่ blob เฉพาะตัวไว้ใน ROM header ก็พอ และถ้าใช้ toolchain RGBDS (RGBFIX) ก็ให้แทรกอัตโนมัติได้
      อีกทั้งหลังคำพิพากษา Sega v. Accolade แล้ว วิธีตรวจสอบไตเติลแบบนี้ก็แทบไม่มีผลบังคับทางกฎหมายอีกต่อไป จึงแทบไม่มีอุปสรรคเชิงปฏิบัติในการหลบเลี่ยง
  • เสียดายที่เว็บไซต์เอกสารพัฒนา GB ที่เคยเข้าเป็นประจำอย่าง devrs.com ไม่ได้เปิดให้บริการแล้ว แม้ลิงก์ส่วนใหญ่จะเสียไปแล้ว แต่ที่นั่นเคยมีโปรเจ็กต์ที่สร้างแรงบันดาลใจไว้มากมาย

  • วิดีโอ Ultimate Game Boy Talk (บรรยายในงาน 33c3) ก็น่าดูเหมือนกัน
    Ultimate Game Boy Talk - 33c3

  • Pokemon Blue ของฉันเคยเข้าเครื่องซักผ้าและเครื่องอบผ้าเมื่อ 20 ปีก่อน แต่ตอนนี้ก็ยังทำงานได้ตามปกติ เป็นฮาร์ดแวร์ที่ทนมากจริง ๆ เลยสงสัยว่า SD card จะทนอะไรแบบนั้นได้ไหม

    • คิดว่าความร้อนจากเครื่องอบน่าจะเป็นปัญหาใหญ่กว่าน้ำเสียอีก
  • เดือนนี้เพิ่งเริ่มลอง KiCad กับการออกแบบ PCB แบบสนุก ๆ เลยสงสัยว่ามีใครเคยทำ PCB ของ Game Boy รุ่นออริจินัลขึ้นมาใหม่ทั้งแผงแล้วปล่อยเป็นโอเพนซอร์สหรือไม่

    • มีบริษัทชื่อ FunnyPlaying ที่ทำและขาย PCB สำหรับ GBC และ GBA เอง แต่เวอร์ชันโอเพนซอร์สดูจะหาได้ยาก
      ใน GitHub ของ nataliethenerd มีโปรเจ็กต์ CGB reverse engineering แต่ไลเซนส์เป็นแบบ non-commercial
      เขาอธิบายไว้ว่า "ใช้บอร์ด CGB-CPU-04 เป็นฐานในการสแกน ขัดผิว และเขียนใหม่ เพื่อจัดทำ schematic ของ CGB โดยอ้างอิงค่าต่าง ๆ จากวงจรต้นฉบับ"

    • อยากได้คำแนะนำแหล่งข้อมูลที่เหมาะใช้เป็น参考ในการออกแบบ PCB ด้วย