1 คะแนน โดย GN⁺ 5 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • จอ Eink ขนาด 13.3 นิ้วรีเฟรชได้ 60 ครั้งต่อวินาทีที่ 300ppi และผ่านการพัฒนาคอนโทรลเลอร์ ฮาร์ดแวร์ และเฟิร์มแวร์ของตัวเองตลอด 4 ปีจนกลายเป็นผลิตภัณฑ์จริง
  • คอนโทรลเลอร์ Eink แบบเดิมต้องรอ การอัปเดตทั้งหน้าจอประมาณ 100ms จึงต้องแลกความเร็วกับคอนทราสต์ แต่แนวทางอัปเดตรายพิกเซลจะรีเฟรชเฉพาะพิกเซลที่เปลี่ยนทันที
  • การรีเฟรชรายพิกเซลทำให้ความต้องการแบนด์วิดท์ของจอขาวดำขนาด 13 นิ้วเพิ่มจาก 20MB/s เป็น 540MB/s จึงต้องใช้ DDR3 และ DisplayPort
  • โทน grayscale แบบไม่กะพริบทำไม่ได้ จึงต้องผสม Bayer dithering, blue noise, error diffusion และ โหมดแสดงผลแบบไฮบริด
  • ผลลัพธ์สุดท้ายคือ จอ Eink รีเฟรชเรตสูง ที่มีทัชสกรีน ไฟหน้า ตัวเลือกสี หลายโหมดการแสดงผล และฮาร์ดแวร์, FPGA gateware, เฟิร์มแวร์แบบโอเพนซอร์ส

จุดเริ่มต้น: จากแล็ปท็อป Eink สู่คอนโทรลเลอร์ของตัวเอง

  • จอ Eink 60fps ทำงานที่ 300ppi และรีเฟรชได้ 60 ครั้งต่อวินาที ทั้งที่ Eink ไม่ใช่จอที่ขึ้นชื่อเรื่องความเร็ว
  • จุดเริ่มต้นของการพัฒนาคือแล็ปท็อป Eink และในตอนนั้น SoC ที่รองรับ Eink ถูกออกแบบมาสำหรับเครื่องอ่านอีบุ๊ก จึงผูกอยู่กับข้อจำกัดด้านพลังงานต่ำ โปรเซสเซอร์ช้า และอินเทอร์เฟซที่จำกัด
  • การทำแล็ปท็อปต้องแยก SoC ออกจากหน้าจอ และใส่ชิปไดรเวอร์บน FPGA ไว้ตรงกลาง จนกลายเป็นสถาปัตยกรรมที่ต้องมี คอนโทรลเลอร์ Eink ของตัวเอง
  • แบบแล็ปท็อประยะแรกมี LCD ทรงแถบที่ทำงานคล้าย touch bar ขนาดใหญ่ โดยตั้งสมมุติฐานว่างานบางอย่างต้องใช้จอเร็ว ส่วน Eink จะช้าก็ได้
  • ตอนแรก 60fps ไม่ใช่เป้าหมายหลัก ขอแค่เร็วพอสำหรับแล็ปท็อปก็พอ และถ้าไปไม่ถึง 60fps เป้าหมาย 15fps ก็ยังถือว่าใช้ได้

ความเร็วและคุณภาพจากการอัปเดตระดับพิกเซล

  • คอนโทรลเลอร์ Eink แบบเดิมใช้ ตัวจับเวลาการอัปเดตทั้งหน้าจอ ทำให้เวลาจะรีเฟรชภาพใหม่ต้องรอให้การอัปเดตก่อนหน้าจบก่อน
  • การอัปเดตแบบเดิมใช้เวลาประมาณ 100ms ดังนั้นในกรณีแย่ที่สุด ภาพใหม่อาจต้องรอ 100ms ตั้งแต่ก่อนเริ่มประมวลผลเสียอีก
  • ถ้าทำให้ตัวจับเวลาเดินเร็วขึ้น เฟรมเรตจะสูงขึ้น แต่อนุภาค Eink จะมีเวลาตอบสนองไม่พอจนภาพดูเหมือนถูกล้างจาง
  • วิธีเดิมจึงเป็นการประนีประนอมระหว่าง รีเฟรชเรตกับคอนทราสต์ และคอนโทรลเลอร์บางตัวก็พยายามบรรเทาด้วยการอัปเดตแยกกัน 4 ถึง 16 โซน
  • วิธีบรรเทาแบบแบ่งโซนทำให้ซอฟต์แวร์ต้องจัดการโซนเองโดยตรง และก็ยังมีข้อจำกัดอยู่ดี
  • แนวทางอัปเดตรายพิกเซลจะปฏิบัติต่อทุกพิกเซลราวกับเป็นโซนอัปเดตอิสระ ดังนั้นพิกเซลใดก็ตามที่เปลี่ยนจะเริ่มรีเฟรชได้ทันทีโดยไม่ต้องรอ
  • วิธีนี้ทำให้ได้ทั้งเฟรมเรตสูงและคอนทราสต์สูงพร้อมกัน ลบข้อแลกเปลี่ยนด้านความเร็วกับคุณภาพแบบเดิมออกไป
  • ข้อเสียคือ แบนด์วิดท์หน่วยความจำ โดยบนพาเนลขนาด 13 นิ้วที่แสดงภาพขาวดำ คอนโทรลเลอร์แบบเดิมต้องการ 20MB ต่อวินาที แต่แนวทางนี้ต้องการ 540MB ต่อวินาที
  • เพราะต้องใช้แบนด์วิดท์สูง จึงจำเป็นต้องใช้ DDR3 แทน SDRAM พื้นฐาน และต้องใช้ DisplayPort แทน USB ทำให้ต้นทุนสูงขึ้น
  • สำหรับการอ่านหนังสือ โครงสร้างนี้อาจไม่จำเป็น แต่สำหรับการใช้เป็นจอมอนิเตอร์ ความแตกต่างนั้นชัดเจนมาก

คุณภาพการแสดงผล: dithering และ grayscale แบบไฮบริด

  • โปรเจกต์เปลี่ยนทิศทางจากการทำแล็ปท็อปไปสู่การทำมอนิเตอร์ที่ดีให้ได้ก่อน และหลังจากนั้นก็พัฒนาต่อในเวลาว่างอีกหลายปี
  • Eink ไม่สามารถทำ grayscale แบบไม่กะพริบได้ จึงจำเป็นต้องใช้ dithering
  • อัลกอริทึม dithering ที่นำมาใช้มีสามแบบคือ Bayer dithering, blue noise และ error diffusion
  • Bayer dithering เร็วแต่ทำให้เกิดลวดลายที่สังเกตเห็นได้, blue noise ให้ภาพที่ดูดีกว่า, ส่วน error diffusion ให้คุณภาพดีที่สุดแต่ขยายไปใช้กับความละเอียดสูงได้ยาก
  • แม้ dithering จะใช้งานได้ แต่มันก็ยังไม่ใช่ grayscale จริง ๆ โดยข้อยกเว้นมีเพียง grayscale แบบกะพริบ
  • มอนิเตอร์รุ่นก่อน ๆ จึงมักเลือกใช้โหมดกะพริบที่ช้า หรือไม่ก็ข้าม grayscale ไปเลย
  • แนวทางไฮบริดคือเมื่อภาพกำลังเปลี่ยน จะสลับไปใช้โหมดไบนารีที่เร็ว และเมื่อภาพนิ่งอยู่ช่วงสั้น ๆ จึงค่อยเรนเดอร์กลับเป็น grayscale
  • วิธีนี้เหมาะกับการอ่านมาก แต่เหมาะกับงานประเภทอื่นน้อยกว่า และด้วยคอนโทรลเลอร์ที่พัฒนาขึ้นเอง จึงไม่ต้องติดอยู่กับโหมดพรีเซ็ต สามารถปรับให้เหมาะกับแต่ละการใช้งานได้

วนซ้ำงานฮาร์ดแวร์และกระบวนการทำเป็นสินค้า

  • ต้นแบบแรกใช้ DisplayPort แบบเต็มขนาด ก่อนจะเปลี่ยนมาเป็น USB Type-C ที่รวม DisplayPort
  • เมื่อ IC จัดการพลังงานแบบรวมเลิกผลิต ก็จำเป็นต้องเปลี่ยนไปใช้ DC-DC converter แยกชิ้น
  • เพื่อป้องกันหน้าจอจากเหตุการณ์ latch-up ที่ไม่คาดคิด จึงเพิ่มระบบมอนิเตอร์แรงดันและกระแสไฟทั้งบอร์ด
  • ทุกการเปลี่ยนแปลงต้องใช้ PCB revision ใหม่ และแต่ละ revision ก็พาไปสู่บทเรียนใหม่
  • เมื่องานออกแบบเคสชุดแรกจากผู้รับจ้างส่งกลับมา มันก็เริ่มดูเหมือนผลิตภัณฑ์จริง ไม่ใช่แค่ PCB เปลือยบนโต๊ะอีกต่อไป
  • มีการสาธิตที่งาน Hackaday Supercon, LatchUp และงาน Teardown ของ Supply และผู้คนก็อยากเห็นผลิตภัณฑ์นี้ออกมาจริง
  • เพราะเทคโนโลยีใช้งานได้ มีความต้องการ และมีแบบพร้อมอยู่แล้ว จึงลาออกจากงานเพื่อเร่งช่วงสุดท้าย
  • แผนคือทุ่มเวลาไม่กี่เดือนเพื่อเกลางานออกแบบ ผลิต และส่งมอบสินค้า

ออกแบบใหม่ทั้งชุด ปัญหาซัพพลายเออร์ และฟีเจอร์สุดท้าย

  • ไม่นานหลังเปลี่ยนมาทำเต็มเวลา Eink ก็ประกาศพาเนลใหม่ที่ความละเอียดสูงกว่า สเปกดีกว่า และราคาถูกกว่า
  • พาเนลใหม่นี้มีศักยภาพจะทำให้สินค้าออกมาดีกว่าเดิม แต่เพราะความละเอียดที่สูงขึ้น จึงต้องใช้ IC ถอดรหัสแบนด์วิดท์สูง หน่วยความจำ DDR แบนด์วิดท์สูง FPGA ตัวใหม่ และภาคจ่ายไฟที่รองรับกระแสสูงกว่า
  • การเปลี่ยนนี้แทบจะเท่ากับเปลี่ยนบอร์ดใหม่เกือบทั้งหมด และทำให้ล่าช้าไปอย่างน้อยครึ่งปี
  • ในผลิตภัณฑ์สุดท้าย วิธีทำงานเปลี่ยนจากการออกแบบบอร์ดก่อนแล้วค่อยทำเคสให้พอดี ไปเป็นการกำหนดฟอร์มแฟกเตอร์ก่อน เช่น แชสซี ขนาดที่แน่นอน และจุดยึดต่าง ๆ แล้วค่อยออกแบบบอร์ดให้เข้ากัน
  • วิธีใหม่นี้ทำให้การออกแบบโดยรวมเหมาะสมและสอดคล้องกันมากขึ้น แต่ก็ต้องมี revision ใหญ่อีกครั้ง
  • ต้นแบบที่ประกอบสมบูรณ์ถูกนำไปโชว์ที่ Design Shenzhen แต่ยังไม่เสถียรพอจะส่งมอบได้ เพราะมีทั้งอาการ glitch แบบสุ่ม ภาพขาดหาย และรีเซ็ตไม่สำเร็จ
  • ซัพพลายเออร์ชิปถอดรหัสวิดีโอปฏิเสธที่จะช่วย แม้จะมีทั้ง NDA และสัญญาบริการ และตั้งแต่แรกก็ไม่ได้ให้โค้ดไดรเวอร์มา
  • ต้องจ่ายเงินเพิ่มเพื่อให้ได้ซอร์สโค้ดสำหรับใช้งานชิป แต่โค้ดนั้นกลับใช้งานไม่ได้ และหากต้องการโค้ดที่ใช้ได้จริงก็ยังถูกเรียกเงินเพิ่มอีก
  • หลังจากนั้นจึงเปลี่ยนไปใช้ซัพพลายเออร์อีกราย ซึ่งทำงานด้วยกันได้ดีกว่ามาก แต่ตอนเริ่มโปรเจกต์ยังไม่สามารถหาชิปของรายนั้นได้
  • จากนั้นมีการเพิ่มการรองรับทัชสกรีน ซึ่งต้องรวมทัชคอนโทรลเลอร์ตัวใหม่ เขียนไดรเวอร์ และทำระบบคาลิเบรต
  • มีการเพิ่มไฟหน้าแบบไม่กะพริบ ตัวจำกัดเฟรมเรตที่ช่วยเรื่องความคมชัด โหมดประหยัดพลังงานเมื่อไม่ได้เสียบไฟ และ on-screen display สำหรับควบคุมฟังก์ชันเหล่านี้
  • แต่ละฟีเจอร์ดูเหมือนง่ายเมื่ออธิบายในประโยคเดียว ทว่าการทำให้สมบูรณ์จริงใช้เวลาหลายสัปดาห์ และเส้นตายก็เลื่อนออกไปเรื่อย ๆ
  • หลังมาทำเต็มเวลา กลับทำงานมากกว่าตอนมีงานประจำเสียอีก เส้นแบ่งระหว่างกลางคืนกับสุดสัปดาห์เริ่มเลือนหาย และเวลาเล่นเกมกับเวลาว่างก็น้อยลง
  • ข้อดีคือเมื่อตัดสินใจเอง ก็ลงมือได้ทันที และเมื่อแก้ปัญหาแล้ว ปัญหานั้นก็จบจริงโดยไม่ต้องไปโน้มน้าวคนอื่นให้ยอมทำฟีเจอร์ที่ต้องการ
  • หลังผ่านไป 4 ปี ผลลัพธ์คือมอนิเตอร์ขนาด 13.3 นิ้ว ที่ทำได้สูงสุด 60fps หน่วงต่ำมาก มีหลายโหมดการแสดงผล ทัชสกรีน ไฟหน้า และตัวเลือกสี
  • แบบฮาร์ดแวร์, FPGA gateware และเฟิร์มแวร์ทั้งหมดเปิดเป็น โอเพนซอร์ส จึงสามารถสร้างเองได้ด้วย

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

 
GN⁺ 5 시간 전
ความคิดเห็นจาก Lobste.rs
  • ปีนี้เจอ Alex ที่งาน FOSDEM แล้วได้ดูเดโมนี้ ดูดีทีเดียว

    • ผมก็เห็นเหมือนกัน และให้ความรู้สึกแบบ ในที่สุดก็มาแล้ว
      ยังเป็นแค่ต้นแบบและเคสก็ยังทำไม่เสร็จ เลยยังไม่กล้าฟันธงเต็มที่ แต่ดูมีแววมาก และการซื้อ e-ink ครั้งถัดไปของผมน่าจะเป็นผลิตภัณฑ์ของ modos
  • ผมมี development kit ที่ได้มาตอนแคมเปญ Crowd Supply ก่อนหน้านี้ ถ้าอยากรู้อะไรก็ถามได้

    • เหมาะกับการเขียนโค้ดไหม?
    • มีค่าที่วัด การใช้พลังงาน แบบเชิงปริมาณไหม? สเปกที่ผมหาเจอมีแค่ประมาณว่า “ต่ำ” ถึง “สูง” แบบ e-paper ทั่วไป
      แล้วคอนทราสต์ใต้แดดจ้าล่ะเป็นอย่างไร และฝั่งซอฟต์แวร์เคยมีปัญหาอะไรบ้างไหม
  • เป็นจอที่เจ๋งมาก อยากให้ไปอยู่ในโน้ตบุ๊กหรือแท็บเล็ต แต่ถ้าเป็นจอนอกขนาดเล็กแบบเดี่ยว ๆ ยังไม่แน่ใจว่าจะได้ใช้ไหม
    คำอธิบายที่ว่า “ระหว่างเดินทาง สามารถใช้สาย USB Type-C เส้นเดียวขับ Flow ได้สูงสุด 40Hz และเมื่ออยู่ที่โต๊ะก็เสียบไฟเพิ่มเพื่อใช้รีเฟรชเรตเต็ม 60Hz ได้” ฟังดูแปลกนิดหน่อย
    ผมหาตัวเลขการใช้พลังงานไม่เจอ แต่แค่สาย USB-C เส้นเดียวก็จ่ายไฟให้โน้ตบุ๊กระดับสูงได้ทั้งเครื่องแล้ว เลยสงสัยว่าจอเดียวจะกินมากกว่านั้นได้ยังไง

    • ไม่แน่ใจว่าผมเข้าใจถูกไหม แต่ดูเหมือนจะเป็นประเด็นว่าอินพุตรองรับ USB Power Delivery หรือเปล่า
      จอเดสก์ท็อปที่มีอินพุต AC/DC สามารถจ่าย PD ออกมาได้ระดับ 60W หรือ 100W แต่โน้ตบุ๊กของผมจ่าย PD ออกไม่ได้
      ผมมีกล้องที่ชาร์จผ่าน PD เท่านั้น ซึ่งต่อกับโน้ตบุ๊กผ่าน USB-C ได้ไม่มีปัญหา แต่ชาร์จไม่ได้เพราะต้องการประมาณ 25W หรือ 30W
      อย่างไรก็ดี จอพกพาอื่น ๆ ที่บ้านผมใช้ไฟจาก USB-C ของโน้ตบุ๊กได้เลย แต่ e-ink ต้องใช้แรงดันสูงกว่า 5V เพื่อรีเซ็ตเซลล์ ดังนั้นที่ 60Hz การบูสต์แรงดันอาจทำให้กินไฟมากเกินไปก็ได้
  • อันนี้ฟังดูน่าเชื่อยากนิดหน่อย จากที่ผมเข้าใจ เฟรมเรตต่ำดูจะเป็น ข้อจำกัดของซอฟต์แวร์ มากกว่าฮาร์ดแวร์ แล้วทำไมถึงยังไม่แพร่หลายกว่านี้?

    • เป็นเรื่องของต้นทุนและความน่าเชื่อถือ จอ e-ink มีการใช้งานหลักคือ พลังงานต่ำ แต่คอนโทรลเลอร์ที่กินไฟสูงและต้องใช้แบนด์วิดท์สูงกลับสวนทางกับเป้าหมายนั้น จึงมีแรงจูงใจในการลงทุนน้อย
      และก็ไม่มีเหตุผลมากนักที่จะใส่คอนโทรลเลอร์ที่แพงกว่าในเมื่อผู้ใช้ไม่ได้ต้องการ อีกทั้งถ้าขับ e-ink หนักขึ้น อายุการใช้งานก็จะสั้นลง ทำให้คุณค่าของผลิตภัณฑ์เปลี่ยนไป
      จอ e-ink เองก็แพงอยู่แล้วเพราะค่าลิขสิทธิ์สิทธิบัตรและการออกแบบเชิงกลที่ยุ่งยาก เปรียบเหมือนคุณอาจทำให้ Toyota Corolla วิ่งได้ 150 ไมล์ต่อชั่วโมง แต่ต้องเปลี่ยนองค์ประกอบภายในที่ทำมาเพื่อความสะดวกสบาย เอาอุปกรณ์ความปลอดภัยบางอย่างออก และชิ้นส่วนที่เคลื่อนไหวอาจพังหลังหมุนไปแค่รอบเดียว
    • นี่ไม่ใช่แค่ปัญหาซอฟต์แวร์ล้วน ๆ เราต้องออกแบบ คอนโทรลเลอร์ฮาร์ดแวร์เฉพาะทาง เพื่อรับมือกับข้อจำกัดทางกายภาพของพิกเซล และยังต้องจูนความเร็วในการอัปเดตอย่างละเอียด
      สุดท้ายคำพูดที่ว่า “ฮาร์ดแวร์ทั้งหมดคืออัลกอริทึม จึงเริ่มต้นจากซอฟต์แวร์” ก็จริงอยู่ แต่ในกรณีของ e-ink ตลาดคอนโทรลเลอร์ยังไม่ทันได้สุกงอมแบบเดียวกับตลาดคอนโทรลเลอร์ DVI หรือ VGA ที่พัฒนามาหลายสิบปี
      งานของ Alex เป็นโอเพนซอร์ส ดังนั้นผมคิดว่าอีกไม่นานก็น่าจะมีโอกาสถูกทำซ้ำในระดับใหญ่ได้ในสักช่วงหนึ่ง
  • ดูเหมือนจะมีความต้องการชัดเจนสำหรับจอแบบสะท้อนแสงที่มี รีเฟรชเรตสูง และ คอนทราสต์สูง แต่ก็สงสัยว่าทำไมแนวทางส่วนใหญ่ถึงเป็นแบบ “พยายามใช้หรือดัดแปลง e-paper ธรรมดาให้ได้”
    ทำไมผู้ผลิตถึงไม่ทำแผง reflective LCD ขนาดเกิน 6 นิ้วในแนวเดียวกับตระกูล Sharp Memory Display กันล่ะ?
    อีกอย่างคือ อยากให้อุตสาหกรรมอิเล็กทรอนิกส์ทำ electrowetting display ที่ซื้อได้ทั่วไปบ้าง

    • ความรู้สึกของผมคือ e-ink ดูใกล้เคียงกระดาษมากกว่า reflective LCD