Research

FPGA ออพติมัสไพร์มแห่งการออกแบบวงจรรวม


ดร.ปนันท์ โพธิพันธุ์ทอง  
อาจารย์ประจำภาควิชาวิศวกรรมคอมพิวเตอร์  
คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเทคโนโลยีมหานคร  
18 เมษายน 2556  

     สำหรับนักศึกษา วิศวกร นักวิจัย หรือบุคลากรที่อยู่ในสายงานที่เกี่ยวข้องกับการออกแบบวงจรรวมคงจะคุ้นเคยกับอุปกรณ์ที่ชื่อเอฟพีจีเอ (FPGA) อยู่บ้างไม่มากก็น้อย แต่ท่านทราบหรือไม่ว่าจริง ๆ แล้วภายในอุปกรณ์รูปร่างสี่เหลี่ยมแบน ๆ นี้ภายในบรรจุอะไรหรือทำงานอย่างไรบ้าง?

รูปที่ 1 อุปกรณ์เอฟพีจีเอเปรียบดังออพติมัสไพร์ม

     ก่อนอื่นต้องขออธิบายก่อนว่าเอฟพีจีเอคืออะไร เอฟพีจีเอย่อมาจากคำว่า  Field Programmable Gate Array แปลเป็นไทยแบบงง ๆ ตามแบบของผมเองได้ว่า อุปกรณ์แถวลำดับเกตที่มีความสามารถในการโปรแกรมได้สำหรับงานภาคสนาม!  เอาเป็นว่าอุปกรณ์เอฟพีจีเอเป็นไมโครชิพขนาดเล็กหน้าตาคล้าย ๆ กับหน่วยประมวลผลในคอมพิวเตอร์ (CPU) ถูกใช้ในงานด้านวิศวกรรมที่เกี่ยวข้องกับการออกแบบวงจรรวมสายดิจิตอล (Integrated Circuit หรือ IC) เราสามารถกำหนดให้เอฟพีจีเอทำงานเป็นวงจรดิจิตอลแบบใดก็ได้ ตั้งแต่ขั้นพื้นฐาน เช่น ออร์เกต (Or Gate) แอนด์เกต (And Gate) ฟลิบฟลอบ (Flip-Flop) จนถึงเป็นวงจรรวมขนาดใหญ่และซับซ้อน เช่น วงจรประมวลผลภาพกราฟฟิก 3 มิติ วงจรประมวลผลสัญญาณในระบบสื่อสารไร้สายความเร็วสูง หรือแม้แต่ซีพียูในโทรศัพท์สมาร์ทโฟนและคอมพิวเตอร์ที่เราใช้กันอยู่ทุกวัน ถึงตรงนี้พอจะสรุปได้ว่าเอฟพีจีเอสามารถแปลงร่างตัวมันให้กลายเป็นวงจรดิจิตอลชนิดใดก็ได้ เปรียบได้กับ “ออพติมัส ไพร์ม” แห่งวงการการออกแบบวงจรรวม เอฟพีจีเอช่วยให้นักวิจัยและวิศวกรสามารถสร้างวงจรดิจิตอลหรือวงจรประมวลผลที่พวกเค้าต้องการได้อย่างรวดเร็วเป็นอย่างมาก เทียบกับในอดีตที่การสร้างวงจรเหล่านี้ต้องใช้ระยะเวลา ความอดทน บุคลากร และค่าใช้จ่ายที่สูง เอฟพีจีเอได้รวมเอาข้อดีของซอฟท์แวร์ในด้านการโปรแกรมซ้ำได้ (Reprogrammable) เข้ากับข้อดีของฮาร์ดแวร์ในด้านความเร็วของการประมวลผลเอาไว้ด้วยกัน กลายเป็นอุปกรณ์ที่เป็นส่วนผสมที่ลงตัวระหว่างซอฟท์แวร์และฮาร์ดแวร์ ทำให้มันถูกขนานนามว่าเป็นอุปกรณ์ที่มีความสามารถในด้านการปรับเปลี่ยน หรือ Reconfigurable Device การกำหนดให้เอฟพีจีเอแปลงร่างเป็นวงจรอะไรสามารถทำได้ง่ายเหมือนกับการเขียนโปรแกรมซอฟท์แวร์ทั่ว ๆ ไป โดยใช้ภาษาที่ออกแบบมาเป็นการเฉพาะที่ชื่อภาษาวีเอชดีแอล (VHDL) หรือภาษาเวอร์ริลอก-เอชดีแอล (Verilog-HDL) ทั้งสองเป็นภาษาที่ถูกใช้ในการอธิบายพฤติกรรมการทำงานของฮาร์ดแวร์ด้วยการเขียนซอฟท์แวร์ สำหรับโปรแกรมเมอร์ที่อ่านมาถึงตรงนี้อาจจะมึน ๆ ว่ามันมีภาษาอะไรแบบนี้บนโลกด้วยหรือ คำตอบคือ มีครับ แล้วก็เขียนสนุกอย่าบอกใครเชียว ไว้ผมจะเขียนอธิบายเรื่องนี้ในบทความถัด ๆ ไป

รูปที่ 2 โครงสร้างภายในอุปกรณ์เอฟพีจีเอ

รูปที่ 3 โครงสร้างตารางความจริง 3 อินพุต

     เราพอรู้จักเอฟพีจีเอกันไปในเบื้องต้นแล้ว ต่อจากนี้ก็มาดูว่าอุปกรณ์ขั้นเทพที่ดูเหมือนมาจากดาวไซเบอร์ตรอนบ้านของออพติมัสกับบัมเบิลบี มันแปลงร่างตัวมันได้อย่างไร ในความเป็นจริงแล้วตัวเอฟพีจีเอเองก็เป็นวงจรรวมชนิดหนึ่งที่มีโครงสร้างที่รองรับการปรับเปลี่ยนการทำงานได้ตามแต่กำหนดด้วยการโปรแกรมข้อมูลเข้าไป โครงสร้างหลัก ๆ ของเอฟพีจีเอมีพื้นฐานมาจากเทคโนโลยีของหน่วยความจำอย่าง สแตติกแรม (Static RAM) และอีสแควร์พรอม (EEPROM) ภายในชิพเอฟพีจีเอประกอบไปด้วยส่วนประกอบหลัก ๆ สองส่วน คือ ลอจิกบล็อก (Logic blocks) และตัวเชื่อมต่อ (Interconnects) ลอจิกบล็อกทำหน้าที่ในการจำลองตนเองเป็นวงจรลอจิกซึ่งเป็นส่วนย่อยของวงจรดิจิตอลขนาดใหญ่ โดยใช้เทคนิคที่เรียกว่าการมองจากตาราง (Look-up Table หรือ LUT) หรืออีกนัยหนึ่งก็คือการสร้างตารางที่อ้างอิงจากข้อมูลอินพุตไปยังข้อมูลเอาต์พุตของวงจรลอจิกนั้น ๆ ตารางดังกล่าวจะเก็บข้อมูลที่เป็นไปได้ทั้งหมดของวงจรลอจิก เราอาจเรียกตารางนี้ว่าตารางความจริง (Truth-table) ในขณะทำงานเมื่อลอจิกบล็อกได้รับข้อมูลอินพุตก็จะให้ข้อมูลเอาต์พุตออกไปโดยอ้างอิงจากตารางนี้ ในเอฟพีจีเอหนึ่งตัวประกอบไปด้วยลอจิกบล็อกจำนวนมาก ยิ่งมีจำนวนลอจิกบล็อกมากเท่าใดก็หมายความว่าเอฟพีจีเอตัวนั้นสามารถรองรับวงจรดิจิตอลขนาดใหญ่และซับซ้อนได้มากตามไปด้วย ลอจิกบล็อกเหล่านี้จะไม่สามารถทำงานได้เลยหากขาดส่วนประกอบสำคัญอีกอย่างของเอฟพีจีเอนั่นคือตัวเชื่อมต่อ จะว่าไปแล้วตัวเชื่อมต่อก็เปรียบเสมือนสายไฟเส้นเล็ก ๆ จำนวนมากที่เชื่อมโยงข้อมูลและการทำงานของลอจิกบล็อกเข้าหากันและยังเชื่อมโยงข้อมูลเข้าและออกจากตัวเอฟพีจีเอสู่โลกภายนอกอีกด้วย สายไฟเหล่านี้พิเศษตรงที่มันสามารถปรับเปลี่ยนการเชื่อมต่อของมันไปยังจุดใดภายในเอฟพีจีเอก็ได้ โดยอาศัยสิ่งที่เรียกว่า สวิตช์เมตริกซ์ (Switch Matrix) ซึ่งทำหน้าที่เหมือนสะพานไฟคอยสลับสับเปลี่ยนทิศของข้อมูลที่ส่งมาตามสายไฟไปในจุดต่าง ๆ ตามต้องการ ทำให้ลอจิกบล็อกสามารถเชื่อมโยงข้อมูลและการทำงานระหว่างกันได้เป็นโครงข่ายขนาดใหญ่ที่มีจุดประสงค์การทำงานตามที่วิศวกรผู้ออกแบบต้องการและได้เขียนอธิบายไว้ในรูปแบบซอฟท์แวร์ดังที่กล่าวไปแล้วข้างต้น มาถึงจุดนี้อาจเกิดข้อสงสัยตามมาอีกว่าจากซอฟท์แวร์ภาษาวีเอชดีแอลหรือเวอร์ริลอกที่เขียนขึ้นเพื่ออธิบายพฤติกรรมการทำงานของฮาร์ดแวร์ใด ๆ จะถูกเปลี่ยนเป็นตารางความจริงในลอจิกบล็อกและการเชื่อมต่อของตัวเชื่อมต่อได้อย่างไร คำตอบก็คืออาศัยซอฟท์แวร์ที่ทำหน้าที่สังเคราะห์ทางตรรกะ (Logic Synthesis Software) เข้ามาช่วย เปรียบได้กับคอมไพเลอร์ (Compiler) ทางฝั่งของซอฟท์แวร์นั่นเอง รายละเอียดการทำของซอฟท์แวร์สังเคราะห์ทางตรรกะผมจะขอกล่าวถึงในโอกาสหน้า
     ในปัจจุบันอุปกรณ์เอฟพีจีเอมีการพัฒนาอย่างต่อเนื่องและมีบทบาทอย่างมากในด้านการออกแบบฮาร์ดแวร์และวงจรรวม ผู้ผลิตอุปกรณ์เอฟพีจีเออย่างเช่น Xilinx และ Altera ได้ปรับปรุงอุปกรณ์ของตนให้มีประสิทธิภาพสูงขึ้นเรื่อย ๆ ยกตัวอย่างเช่นการฝังหน่วยความจำขนาดใหญ่ หน่วยประมวลผลทางคณิตศาสตร์ความเร็วสูง และซีพียูประสิทธิภาพสูงลงไปบนอุปกรณ์เอฟพีจีเอ ทำให้เอฟพีจีเอมีเขี้ยวเล็บที่รอบด้านเหมาะสมกับตำแหน่ง “ไพร์ม” อย่างแท้จริง สุดท้ายนี้หากนักศึกษาหรือท่านผู้อ่านที่มีความสนใจต้องการสอบถามเพิ่มเติมสามารถติดต่อผมได้ที่อีเมล์ panan@mut.ac.th ขอบคุณครับ

<< ย้อนกลับ