การเร่งความเร็วฮาร์ดแวร์: Arduino + FPGA
โปรเซสเซอร์ Arduino มาตรฐานจะรันคำสั่งตามลำดับ: บรรทัดที่ 1, จากนั้นบรรทัดที่ 2, จากนั้นบรรทัดที่ 3 สำหรับงานที่ต้องการความเร็วสูงมาก เช่น การระบุใบหน้าจากฟีดกล้องสด โปรเซสเซอร์แบบ sequential ขนาด 48MHz แทบจะหยุดนิ่งไปเลย ขอแนะนำ FPGA (Field Programmable Gate Array)

หลักการของ MKR Vidor 4000
Arduino MKR Vidor 4000 เป็นบอร์ดที่ปฏิวัติวงการ โดยมีโปรเซสเซอร์ ARM Cortex มาตรฐาน (สำหรับโค้ด C++ ของคุณ) เชื่อมต่อโดยตรงกับชิป Intel Cyclone FPGA
- ความแตกต่าง: คุณไม่ได้ตั้งโปรแกรม FPGA ด้วย "software loop" คุณเขียน HDL (Hardware Description Language) ซึ่งคุณกำลังต่อวงจรเกทซิลิกอนภายในชิปใหม่ในทันที!
- การประมวลผลแบบขนาน: เนื่องจากซิลิกอนได้รับการกำหนดเส้นทางใหม่ทางกายภาพ FPGA จึงสามารถประมวลผลสมการ 100,000 รายการพร้อมกันได้ในรอบ clock cycle เดียวกัน ทำให้ประมวลผลข้อมูลได้ทันที
อินเทอร์เฟซกล้อง
กรณีการใช้งานที่พบบ่อยที่สุดคือ Machine Vision
- ชิป Arduino มาตรฐานไม่สามารถจัดเก็บรูปภาพเดียวใน RAM ได้ด้วยซ้ำ
- บอร์ด Vidor มีคอนเน็กเตอร์ MIPI Camera โดยเฉพาะ
- ชิป FPGA จะดึงฟีดวิดีโอสด 60FPS มาใช้ รันอัลกอริทึม edge-detection ที่เร็วอย่างน่าทึ่ง (เขียนด้วย Verilog) คำนวณพิกัด X/Y ของวัตถุ และส่งต่อ เฉพาะพิกัดสุดท้ายที่เรียบง่ายเท่านั้น ไปยังชิป Arduino
- โค้ด C++ ของ Arduino มาตรฐานของคุณจะพูดง่ายๆ ว่า:
if(object_x > 100) { turn_servo(); }
คำเตือนด้านความซับซ้อน
การทำงานกับ FPGA โดยทั่วไปสงวนไว้สำหรับวิศวกรรมไฟฟ้าในระดับมหาวิทยาลัย แต่ไลบรารี Vidor ที่คอมไพล์ไว้ล่วงหน้าช่วยให้ Makers ขั้นสูงสามารถทดลองใช้การเร่งความเร็วฮาร์ดแวร์ที่น่าทึ่งนี้ได้โดยไม่ต้องเขียนโค้ด VHDL ดิบตั้งแต่เริ่มต้น