ในการทำงานของอุปกรณ์อิเล็กทรอนิกส์ หรือเครื่องจักรที่มีความทันสมัย มันจำเป็นต้องอาศัยสมองกลเพื่อประมวลผล, ควบคุม และสั่งการ ซึ่งก็มีชิปอยู่หลายชนิดที่ถูกนำมาใช้ที่รู้จักกันดีก็น่าจะเป็น หน่วยประมวลผลกลาง (CPU) และ ไมโครคอนโทรลเลอร์ (Microcontroller) แต่อันที่จริงมันยังมีอีกชนิดที่ได้รับความนิยมเช่นกัน แม้จะไม่มากเท่าสองชนิดแรกก็ตามนั่นคือ FPGA
FPGA มีความโดดเด่นด้านความเร็วที่สูงกว่า Microcontroller และมีความยืดหยุ่นกว่า Application-Specific Integrated Circuit (ASIC) แถมยังใช้งานแทนซอฟต์แวร์ได้ มันจึงเป็นตัวเลือกที่น่าสนใจสำหรับใครก็ตามที่ต้องการสร้างอุปกรณ์แบบฝังตัว (Embedded Device)
ด้วยความสามารถในการโปรแกรม และการปรับเปลี่ยนการทำงานได้ตามความต้องการ FPGA จึงเป็นตัวเลือกที่น่าสนใจสำหรับการพัฒนาวงจรดิจิทัลที่ซับซ้อน บทความนี้จะมาบอกเล่าว่า FPGA คืออะไร ? และมีความโดดเด่นกว่าชิปรูปแบบอื่น ๆ อย่างไรบ้าง ?
ในการจะอธิบายว่า FPGA คืออะไร ? เราต้องเข้าใจความแตกต่างระหว่างชิปแบบ "Application-Specific Integrated Circuit (ASIC)" และ "Field-Programmable Gateway Array (FPGA)" เสียก่อน
เชื่อว่าคุณผู้อ่านหลายท่าน คงเคยเห็นวงจรไฟฟ้าที่เชื่อมต่อกับตัวต้านทาน (Resistor), ตัวเก็บประจุ (Capacitor), ทรานซิสเตอร์ (Transistor) และส่วนประกอบอื่น ๆ ผ่านเส้นทองแดง ทั้งหมดถูกออกแบบ และประกอบรวมกันอยู่บน แผ่น PCB นั่นเอง
ภาพจาก : https://hillmancurtis.com/custom-pcb-cost/
คำถามคือ หากเราต้องการแก้ไข ปรับแต่งการเชื่อมต่อบนแผ่นวงจรที่ประกอบเสร็จเรียบร้อยแล้ว จะทำอย่างไร ?
การแก้ไขมันไม่ใช่เรื่องง่าย สร้าง PCB ใหม่ยังเป็นเรื่องที่ง่ายกว่า แต่การออกแบบ PCB ก็เป็นงานที่ใช้เวลา และมีค่าใช้จ่าย หรือจะในกรณีของชิป ASIC ไม่ว่าจะเป็น CPU ทั้งของ Intel, AMD, ARM หรือ ชิปหน่วยประมวลผลกราฟิก (GPU) จาก Nvidia และ AMD รวมไปถึง Microcontroller เช่น PIC, ATMEL, STM, ESP ฯลฯ ก็มีลักษณะเหมือนแผงวงจรบน PCB เช่นกัน เพียงแต่มันมีขนาดเล็กมากอยู่ในระดับนาโนเมตร ประกอบขึ้นจาก MOSFET ทรานซิสเตอร์ขนาดเล็กหลายพันล้านตัวเชื่อมต่อกันเพื่อสร้าง Logic Operation อย่าง AND, OR, NAND, NOR ฯลฯ
ภาพจาก : https://www.nisenet.org/catalog/media/zoom_microchip_video
เราไม่สามารถแก้ไข PCB ได้ฉันใด (อันที่จริงก็พอดัดแปลงชิปที่ติดตั้งไปแล้วได้นิดหน่อย) การเชื่อมต่อของ MOSFET ภายในชิป ASIC ก็ไม่สามารถแก้ไขได้ฉันนั้น และทางออกสำหรับปัญหานั้นคือ ชิป FPGA
FPGA เป็นชิปที่ถูกออกแบบมาให้สามารถจัดเรียงการเชื่อมต่อใหม่ได้ตามความต้องการของนักพัฒนา เพื่อจำลองการทำงานของ Logic Gates ในรูปแบบไหนก็ได้ นั่นหมายความว่าในทางทฤษฏีแล้ว เราสามารถปรับเปลี่ยนชิป FPGA ให้สลับการทำงานเป็น CPU หรือ GPU ก็ได้ แต่ในขณะนี้ เรายังไม่มีชิป FPGA ที่มีประสิทธิภาพสูงขนาดนั้น ส่วนใหญ่แล้ว FPGA ในปัจจุบันนี้ จะจำลองการทำงานของ CPU ได้ที่ความเร็วเพียง 100-300MHz เท่านั้น
บอร์ด Nexys A7 ที่ใช้ชิป Artix-7 Field Programmable Gate Array (FPGA) จาก Xilinx
ภาพจาก : https://digilent.com/reference/programmable-logic/nexys-a7/start?srsltid=AfmBOorlj2eoA2C87Z_AkXgmYwIsfOPPrMJk_XeYaCu2h5EKT3-pQ7dR
FPGA นิยมใช้ในอุตสาหกรรมต่างๆ เช่น โทรคมนาคม, ยานยนต์, การบิน และอุตสาหกรรม รวมไปถึงการพัฒนาระบบแบบฝังตัว (Embedded System) ด้วย เพราะพวกมันสามารถเริ่มต้นการพัฒนาซอฟต์แวร์ระบบ ไปพร้อมกับฮาร์ดแวร์ได้เลย อำนวยความสะดวกในการจำลองประสิทธิภาพของระบบตั้งแต่เริ่มต้นกระบวนการพัฒนา และอนุญาตให้มีการทดลองระบบ และแก้ไขได้หลายครั้ง ก่อนที่จะเสร็จสิ้นการพัฒนา
Field-Programmable Gateway Array (FPGA) มีการออกแบบที่แตกต่างจาก ASIC ซึ่งเป็นชิปที่ถูกผลิตขึ้นมาเพื่อใช้งานเพียงอย่างเดียว ผู้ใช้ไม่สามารถกำหนดค่าการทำงานของมันใหม่ได้ แล้วก็ยังแตกต่างไปจาก Microcontroller ที่เป็นฮาร์ดแวร์แบบตายตัว และรันซอฟต์แวร์ผ่าน CPU
ในขณะที่ FPGA ถูกโปรแกรมในระดับฮาร์ดแวร์ สามารถทำงานได้โดยไม่ต้องใช้ซอฟต์แวร์เลย อย่างไรก็ตาม FPGA บางรุ่น ก็ถูกออกแบบมาให้มี Microcontroller Core ในตัว เพื่อเพิ่มความยืดหยุ่นในการนำไปประยุกต์ใช้งาน สามารถกำหนดค่าให้ FPGA ทำงานแบบ Microcontroller ได้ด้วย
ภาพจาก : https://docs.verilogtorouting.org/en/latest/vpr/graphics/
ที่ใจกลางของ FPGA จะมี Configurable Logic Block (CLB) เชื่อมต่อกันอยู่เป็นจำนวนมาก ผู้ใช้กำหหดฟังก์ชัน Logic ที่ต้องการเชื่อมได้ด้วยการใช้ Hardware Description Language (HDL) อย่าง Verilog หรือ VHSIC Hardware Description Language (VHDL) ในการระบุฟังก์ชันลอจิก และการเชื่อมต่อที่ต้องการ ความยืดหยุ่นนี้ช่วยให้สามารถสร้างวงจรที่ปรับแต่งได้อิสระ เพื่อให้เหมาะกับการประยุกต์ใช้งานเฉพาะด้าน
VHSIC Hardware Description Language (VHDL)
ภาพจาก : https://ecenote.wordpress.com/wp-content/uploads/2019/09/012af-mainwindow.jpg
ภายในสถาปัตยกรรมของ FPGA จะมีองค์ประกอบหลักอยู่ 3 ส่วน คือ Configurable Logic Blocks (CLB), Switch Matrix และ Interconnection Wire ทั้งหมดทำงานร่วมกันอยู่บน Logic Block ที่เรียงกันแบบ 2 มิติ ซึ่งสามารถจัดเรียงในรูปแบบไหนก็ได้ ขึ้นกับความต้องการของผู้ใช้
ภาพจาก : https://www.logic-fruit.com/blog/fpga/fpga-vs-cpu/
จุดเริ่มต้นของ FPGA ถือกำเนิดขึ้นจาก Programmable Read-Only Memory (PROM) หน่วยความจำแบบอ่านอย่างเดียว ที่สามารถตั้งโปรแกรมได้ และ Programmable Logic Devices (PLDs) อุปกรณ์ลอจิกที่ตั้งโปรแกรมได้ ทั้งคู่สามารถกำหนดโปรแกรมได้ตั้งแต่ผลิตที่โรงงาน หรือนักพัฒนาจะเอามาเขียนโปรแกรมเองก็ได้
บริษัท Altera ก่อตั้งขึ้นในปี ค.ศ. 1983 (พ.ศ. 2526) และเป็นผู้ผลิตรายแรกที่เปิดตัวอุปกรณ์ลอจิกสำหรับใช้ในอุตสาหกรรม ที่สามารถตั้งโปรแกรมใหม่ได้ออกมาในปี ค.ศ. 1984 (พ.ศ. 2527) ในชื่อ EP300 โดยมันมีช่องโปร่งใส ที่ช่วยให้ผู้ใช้งานสามารถฉายแสงอัลตราไวโอเลต (UV) เพื่อลบข้อมูลการตั้งค่าที่ถูกเก็บไว้ใน EPROM ได้
ภาพจาก : https://www.flickr.com/photos/gbraad/4578576323
ในปี ค.ศ. 1985 (พ.ศ. 2528) บริษัท Xilinx ได้วางจำหน่ายชิป FPGA ในเชิงพาณิชย์เป็นครั้งแรก มีชื่อรุ่นว่า XC2064 มันมี Gate และ Interconnect ที่สามารถตั้งโปรแกรมได้ พร้อม CLB ที่ตั้งค่าได้จำนวน 64 Block และตารางค้นหา Input Loopup Table (LUT) จำนวน 2 ชุด
ในปี ค.ศ. 1987 (พ.ศ. 2530) ศูนย์สงครามพื้นผิวนาวิกโยธินสหรัฐฯ (Naval Surface Warfare Center) ได้มอบทุนสนับสนุนโครงการที่ Steve Casselman ได้เสนอขึ้นมา โดยเขาต้องการพัฒนาคอมพิวเตอร์ที่ Gate ที่สามารถตั้งโปรแกรมใหม่ได้จำนวน 600,000 Gate ซึ่งเขาก็ทำมันได้สำเร็จ จนสามารถจดสิทธิบัตรเกี่ยวกับระบบนี้ในปี ค.ศ. 1992 (พ.ศ. 2535)
ในช่วงทศวรรษ ค.ศ. 1990 (พ.ศ. 2533) เป็นช่วงเวลาที่ FPGA เติบโตอย่างรวดเร็ว ทั้งในด้านความซับซ้อนของวงจร และปริมาณการผลิต ในช่วงนี้ FPGA ส่วนใหญ่ถูกใช้ในงานโทรคมนาคม และเครือข่าย หลังจากนั้นก็ได้ก้าวเข้าสู่วงการยานยนต์ และอุตสาหกรรม บริษัทต่าง ๆ เช่น Microsoft เริ่มนำ FPGA มาใช้เพื่อเร่งความเร็วของระบบประมวลผลของเครื่องมือค้นหาอย่าง Bing รวมถึงแพลตฟอร์มการประมวลผลคลาวด์ Azure
แม้จะไม่เป็นที่รู้จักมากนัก แต่ปัจจุบันนี้ ชิป FPGA ก็มีใช้งานอยู่ในอุปกรณ์หลายชนิด ใน MacBook, รถยนต์, ระบบเครือข่าย ฯลฯ แล้วก็มีแนวโน้มที่บทบาทของมันจะขยายตัวเพิ่มขึ้นอีก
FPGA เหมาะสำหรับงานที่ต้องการการประมวลผลข้อมูลจำนวนมากอย่างรวดเร็ว อย่างไรก็ตาม ความง่ายในการพัฒนาโปรแกรม การใช้งานที่หลากหลายของ CPU ก็ทำให้มันมีความครอบคลุมต่อการใช้งานได้กว้างกว่า
แต่ในอนาคต การผสมผสานคุณสมบัติที่เป็นจุดแข็งของ FPGA และ CPU เข้าด้วยกัน เป็นสิ่งที่น่าจะเกิดขึ้น ซึ่งจะช่วยในการใช้ทรัพยากรให้ดีขึ้น และประหยัดพลังงาน วันนั้นจะมาถึงเมื่อไหร่ ? ก็ต้องคอยจับตามองกันต่อไป
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |