การเขียนโปรแกรม FPGA ทำงานอย่างไร

มีเส้นบางๆ ระหว่างฮาร์ดแวร์และซอฟต์แวร์ เมื่อสร้างฮาร์ดแวร์สำหรับโปรแกรมเบ็ดเตล็ด เช่น คอมพิวเตอร์ คุณต้องแน่ใจว่ารันและรันโค้ด

Field Programmable Gate Array (FPGA) เป็นรูปแบบสถาปัตยกรรมฮาร์ดแวร์ที่ช่วยให้ผู้ใช้สามารถปรับแต่งวงจรได้จากทุกที่และทุกเวลา

การเรียนรู้เกี่ยวกับวิธีการทำงานของโปรแกรม FPGA จะเป็นประโยชน์หากคุณต้องการประกอบอาชีพด้านวิทยาการคอมพิวเตอร์หรือเทคโนโลยี

ในบทความนี้ เราจะอธิบายว่าการเขียนโปรแกรม FPGA คืออะไร ทำงานอย่างไร และนำไปใช้ที่ใด และแบ่งปันแหล่งข้อมูลต่างๆ เพื่อให้เข้าใจมากขึ้น

การเขียนโปรแกรม FPGA

FPGA คือวงจรรวม (IC) ที่มีบล็อกลอจิกที่กำหนดค่าได้และคุณสมบัติอื่นๆ ที่หลากหลายซึ่งผู้ใช้สามารถตั้งโปรแกรมและตั้งโปรแกรมซ้ำได้

วลี ‘ฟิลด์ที่ตั้งโปรแกรมได้’ บ่งชี้ว่าความสามารถของ FPGA ไม่ใช่การเดินสายแต่ปรับได้ ผู้ใช้สามารถปรับเปลี่ยนฟังก์ชันของวงจรได้ทุกเมื่อเพื่อให้ตรงตามจุดประสงค์การออกแบบเฉพาะของตน

การเขียนโปรแกรม FPGA สามารถอธิบายได้ว่าเป็นกระบวนการสร้างโซลูชันการคำนวณโดยใช้ FPGA

โปรแกรมเมอร์ต้องวางแผน ออกแบบ และดำเนินการสถาปัตยกรรมของเกทเพื่อสร้างวงจรการทำงานที่ตอบสนองความต้องการของผู้ใช้ เป้าหมายสุดท้ายของการเขียนโปรแกรม FPGA คือการสร้างวงจรฮาร์ดแวร์ที่สร้างเอาต์พุตเฉพาะเมื่อเปิดเครื่อง

แผงวงจรบน FPGA ได้รับการออกแบบให้เลียนแบบพฤติกรรมของวงจรในโลกแห่งความเป็นจริง แผงวงจรดังกล่าวจึงถูกใช้โดยทีมประกันคุณภาพเพื่อทดสอบผลิตภัณฑ์ใหม่ ระบบ FPGA จะมีองค์ประกอบฮาร์ดแวร์ต่างๆ

ลอจิกเกตทำหน้าที่เป็นหน่วยการสร้างของ FPGA ในระดับพื้นฐาน ลอจิกเกตดำเนินการบูลีนกับข้อมูลอินพุตและเอาต์พุต นอกจากนี้ยังมีทรัพยากรการกำหนดเส้นทางที่ส่งสัญญาณจากจุดหนึ่งไปยังอีกจุดหนึ่ง

ใช้กรณีของการเขียนโปรแกรม FPGA

การเขียนโปรแกรม FPGA กลายเป็นสิ่งที่น่าสนใจสำหรับนักพัฒนาในโลกสมัยใหม่

ต่อไปนี้เป็นกรณีการใช้งานบางส่วน

#1. การออกแบบ ASIC

นักพัฒนาสามารถออกแบบวงจรรวมเฉพาะแอปพลิเคชัน (ASIC) ได้แล้ว ASIC ได้รับความนิยมอย่างมากในโลกของการขุด Bitcoin

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

  เพิ่มคะแนนของคุณด้วยแบบทดสอบ GMAT 10 แบบ

#2. ภาคพลังงานหมุนเวียน

พลังงานหมุนเวียนจากลมและแสงอาทิตย์กำลังเป็นที่นิยมมากขึ้นในโลกที่เผชิญกับปัญหาโลกร้อน สถานีย่อย Transmission and Distribution (T&D) ต้องการเครือข่ายไฟฟ้าที่มีประสิทธิภาพเพื่อให้สมาร์ทกริดทำงานได้อย่างเหมาะสมที่สุด

FPGA มีประโยชน์อย่างมากในการปรับปรุงความสามารถในการขยายขนาดและประสิทธิภาพของสมาร์ทกริด ในขณะที่ยังคงใช้พลังงานต่ำ

#3. การบินและอวกาศและการป้องกัน

บางครั้งเครื่องบินก็บินผ่านสภาพแวดล้อมที่เลวร้าย ดังนั้น บริษัทผู้ผลิตจึงผลิต FPGA ที่ทนทานต่อรังสีและทนทานต่อรังสี ซึ่งให้ความน่าเชื่อถือ ประสิทธิภาพ และความต้องการวงจรชีวิตของสภาพแวดล้อมที่รุนแรงมากกว่าการใช้งาน ASIC แบบดั้งเดิม

#4. แอปพลิเคชันเซิร์ฟเวอร์

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

FPGA ผ่าน BRAM สามารถนำเสนอการเชื่อมต่อกับองค์ประกอบการจัดเก็บข้อมูลภายนอก เร่งการประมวลผลข้อมูลบนชิป

ประโยชน์ของการเขียนโปรแกรม FPGA

  • FPGA สามารถกำหนดค่าใหม่ได้ ต้องคำนึงถึงความสามารถในการใช้งานของ FGPA คุณสามารถกำหนดค่าและกำหนดค่าใหม่เพื่อใช้ในแอปพลิเคชันอื่นได้
  • FGPA ต้องการการแทรกแซงด้วยตนเองน้อยลง ซอฟต์แวร์จัดการงานการกำหนดเส้นทาง เวลา และตำแหน่งในสภาพแวดล้อม FGPA งานดังกล่าวอาจใช้เวลานานและซับซ้อนหากจัดการด้วยตนเอง
  • FPGA มาเป็นผืนผ้าใบเปล่า ซึ่งแตกต่างจาก ASIC แบบดั้งเดิมที่มีฟังก์ชันการทำงานที่กำหนดไว้ล่วงหน้า FPGA สามารถตั้งโปรแกรมใหม่ได้สำหรับกรณีการใช้งานที่แตกต่างกัน วิศวกรจึงสามารถตั้งโปรแกรมระบบดังกล่าวให้กับกรณีการใช้งานต่างๆ โดยใช้ HDL (Hardware Design Language)
  • การสร้างต้นแบบ ASICs มีราคาแพงในการผลิต และความผิดพลาดง่ายๆ อาจก่อให้เกิดค่าใช้จ่ายสูง ก่อนที่คุณจะปล่อย ASIC สู่ตลาด สิ่งสำคัญคือต้องแน่ใจว่าระบบของคุณใช้งานได้และเป็นไปตามเป้าหมายที่ออกแบบไว้ FPGA สามารถตั้งโปรแกรมใหม่ได้ หมายความว่าคุณสามารถทดสอบการทำงานได้จนกว่าคุณจะได้รับการออกแบบที่ถูกต้อง

วิธีตั้งโปรแกรม FPGA

การออกแบบที่ใช้ในการเรียกใช้ FPGA นั้นถูกเข้ารหัสเป็นหลักในภาษาคำอธิบายฮาร์ดแวร์ (HDL) เช่น SystemVerilog, Verilog และ VHDL

#1. เวอริล็อก

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

#2. SystemVerilog

SystemVerilog ถูกสร้างขึ้นเป็นส่วนขยายของ Verilog เป็นทั้งการตรวจสอบฮาร์ดแวร์และภาษาคำอธิบายฮาร์ดแวร์ ด้วยภาษานี้ คุณสามารถอธิบายรูปแบบฮาร์ดแวร์ แปลงเป็นรหัสดิจิทัล แล้วอัปโหลดลงในระบบ FPGA เพื่อดำเนินการตามที่ระบุ

#3. วีเอชดีแอล

VHDL เป็นรูปแบบย่อของภาษาคำอธิบายฮาร์ดแวร์วงจรรวมความเร็วสูงมาก ด้วย VHDL คุณสามารถอธิบายฮาร์ดแวร์ของ FPGA ทำให้ผู้ใช้สามารถจำลองและจำลองก่อนที่จะเข้ารหัสลงในฮาร์ดแวร์จริง

การเขียนโปรแกรมด้วย VHDL ทำให้ง่ายต่อการระบุข้อผิดพลาดที่อาจเกิดขึ้นในวงจร ซึ่งผู้ใช้สามารถแก้ไขได้ก่อนการเข้ารหัสขั้นสุดท้าย VHDL ช่วยให้ผู้ใช้สามารถเขียนโค้ดที่มีโครงสร้างได้

การสังเคราะห์ระดับสูง (HLS) ซึ่งการออกแบบทำในชุดย่อยของ C และคอมไพเลอร์แปลงรหัสเป็นรหัส Verilog เป็นที่นิยมในหมู่นักพัฒนาที่ต้องการโปรแกรม FPGA

ดังนั้น นักพัฒนาจึงสามารถใช้ภาษาที่พวกเขาคุ้นเคยเพื่อออกแบบ FPGA ผ่านแพลตฟอร์มซอฟต์แวร์แบบครบวงจร

#4. หลาม

ภาษาการเขียนโปรแกรมอเนกประสงค์นี้สามารถใช้เพื่อตั้งโปรแกรม FPGA เพื่อให้บรรลุเป้าหมายนี้ Python ใช้ PYNQ ซึ่งเป็นโครงการโอเพ่นซอร์สที่ช่วยให้ทำงานกับแพลตฟอร์ม AMD ได้ง่าย

  วิธีจับคู่ลำโพง Google Assistant Nest สองตัวสำหรับเสียงสเตอริโอ

#5. C และ C++

ภาษาที่ใช้ C เหมาะอย่างยิ่งสำหรับการออกแบบ FPGA เนื่องจากการสังเคราะห์ระดับสูง (HLS) คอมไพเลอร์ AMD Vivado™ HLS นำเสนอสภาพแวดล้อมการเขียนโปรแกรมที่แบ่งปันเทคโนโลยีที่สำคัญกับโปรเซสเซอร์เฉพาะทางและมาตรฐาน ซึ่งปรับโปรแกรมที่ใช้ C ให้เหมาะสม

#6. แพลตฟอร์ม AI เช่น TensorFlow และ PyTorch

วิศวกรใช้โมเดลการเรียนรู้เชิงลึกที่ผ่านการฝึกอบรมจาก Pytorch หรือ Tensorflow เพื่อคอมไพล์สำหรับการเร่งความเร็ว FPGA แนวทางดังกล่าวช่วยลดความจำเป็นในการเขียนโปรแกรมฮาร์ดแวร์ระดับต่ำในขณะที่ยังคงคอมไพล์ได้อย่างรวดเร็ว

โค้ดที่เขียนด้วยภาษาโปรแกรมทั่วไป เช่น Python, C หรือ C++ จะถูกสังเคราะห์และแปลงเป็นคำอธิบายการเชื่อมต่อระหว่างกันที่เป็นกรรมสิทธิ์ผ่านเครื่องมือสังเคราะห์

ไฟล์ผลลัพธ์ที่มีคำอธิบายการเชื่อมต่อระหว่างกันเรียกว่าบิตสตรีม บิตสตรีมอธิบายวิธีกำหนดค่า FPGA (วิธีเชื่อมต่อฟลิปฟล็อป ประตู และองค์ประกอบวงจรดิจิทัลต่างๆ ผ่านเมทริกซ์การเชื่อมต่อระหว่างกันของ FPGA)

FPGA มีการกำหนดค่าในตัวที่อ่านไฟล์บิตสตรีมและกำหนดค่า FPGA ตามนั้น วงจรการกำหนดค่าสามารถอ่านไฟล์บิตสตรีมได้หลายวิธี เช่น Parallel Flash Memory, JTAG และ Serial Flash Memory

ผู้ผลิตบอร์ด FPGA จัดเตรียมซอฟต์แวร์/ คำสั่งที่นักพัฒนาใช้ในการกำหนดค่า/ ตั้งโปรแกรมระบบ

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

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโปรแกรม FPGA ผ่านแหล่งข้อมูลการเรียนรู้เหล่านี้

แหล่งเรียนรู้

#1. การเขียนโปรแกรม FPGA สำหรับผู้เริ่มต้น

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

หนังสือแนะนำสถาปัตยกรรม FPGA ก่อนสำรวจวิธีเขียน SystemVerilog RTL หนังสือเล่มนี้ยังแนะนำคุณเกี่ยวกับพื้นฐานทางคณิตศาสตร์คอมพิวเตอร์ การวางท่อ และความเท่าเทียม หนังสือเล่มนี้ยังกล่าวถึงหัวข้อขั้นสูง เช่น AXI และแป้นพิมพ์ที่เชื่อมต่อกับ PS/2

หนังสือเล่มนี้เหมาะสำหรับโปรแกรมเมอร์ วิศวกร และผู้พัฒนาระบบฝังตัวที่ต้องการเรียนรู้การเขียนโปรแกรม FPGA และ SystemVerilog ทรัพยากรนี้ยังเหมาะสำหรับนักออกแบบ FPGA ที่ต้องการประสบการณ์จริงในการสร้างโครงการในโลกแห่งความเป็นจริง

#2. FPGA สำหรับโปรแกรมเมอร์ซอฟต์แวร์

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

หนังสือเล่มนี้ให้ความรู้สึกเหมือนจริงของปัญหาที่เหมาะกับ FPGA และวิธีการแก้ปัญหาจากมุมมองของวิศวกรซอฟต์แวร์ แนวทางที่มุ่งเน้นผู้ใช้ในหนังสือเล่มนี้ทำให้เข้าใจได้ง่ายว่าเทคโนโลยี FPGA เกี่ยวข้องอย่างไรและอย่างไร ผู้อ่านเป้าหมายของหนังสือเล่มนี้คือนักออกแบบซอฟต์แวร์และวิศวกรออกแบบ FPGA

#3. เริ่มต้น FPGA: การเขียนโปรแกรมโลหะ

หนังสือเล่มนี้สอนผู้อ่านถึงวิธีใช้ BeMicro MAX 10 เพื่อสร้างเซ็นเซอร์อุณหภูมิ เซ็นเซอร์ตรวจจับการเคลื่อนไหว เซ็นเซอร์อุณหภูมิ และจอแสดงผลรถยนต์ KITT จาก Knight Rider หนังสือเล่มนี้เหมาะสำหรับผู้เริ่มต้นและเหมาะสำหรับผู้ที่ไม่มีทักษะด้านการเขียนโปรแกรมหรือมีวุฒิการศึกษาด้านวิศวกรรมอิเล็กทรอนิกส์

  9 กราฟิกการ์ด (GPU) ที่ดีที่สุดสำหรับเกมเมอร์

หนังสือแนะนำ FPGA และอธิบายความแตกต่างจากไมโครคอนโทรลเลอร์หรือ ASIC นอกจากนี้ยังเป็นแหล่งข้อมูลที่จะแนะนำคุณเกี่ยวกับวิธีการตั้งค่า toolchain และใช้ VHDL เพื่อตั้งโปรแกรม FPGA หนังสือเล่มนี้เหมาะสำหรับผู้ที่ชื่นชอบอุปกรณ์อิเล็กทรอนิกส์และ Raspberry Pi ที่ต้องการคำแนะนำเบื้องต้นเกี่ยวกับโลกของ FPGA

#4. การเขียนโปรแกรม FPGA: เริ่มต้นใช้งาน Verilog

หนังสือเล่มนี้เหมาะเป็นอย่างยิ่งหากคุณไม่เคยมีปฏิสัมพันธ์กับ Verilog และ FPGA หากการเขียนโปรแกรม FPGA เป็นคำศัพท์ใหม่สำหรับคุณ นี่เป็นจุดเริ่มต้นที่ดี ตัวอย่างทั่วไป เช่น ตัวนับและจอแสดงผล 7 ส่วนจะช่วยให้ผู้เรียนก้าวเดินได้อย่างถูกต้อง

หนังสือแนะนำผู้เรียนเกี่ยวกับ Verilog และนำเสนอตัวอย่างระดับกลางต่างๆ เช่น VGA แหล่งข้อมูลนี้อาจไม่เหมาะหากคุณมีความรู้ด้าน Verilog และ FPGA อยู่แล้ว หนังสือเล่มนี้มีจำหน่ายในเวอร์ชัน Kindle และปกอ่อน

บทสรุป

ในบางครั้ง FPGA สามารถทำงานได้ดีกว่า GPU ในแอปพลิเคชันการเรียนรู้เชิงลึกที่มีความหน่วงแฝงต่ำ การเขียนโปรแกรม FPGA เป็นทักษะที่จำเป็น เนื่องจาก FPGA สามารถใช้ในอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค ระบบอัตโนมัติทางอุตสาหกรรม และการใช้งานทางทหาร รวมถึงการใช้งานอื่นๆ อีกมากมาย FPGA ยังคงพัฒนาอยู่ และเราสามารถรอดูการปรับอย่างละเอียดสำหรับกรณีการใช้งานและประสิทธิภาพที่ดีขึ้นเท่านั้น

เรื่องล่าสุด

x