FPGA สามารถใช้ได้เมื่อใดและ Microcontrollers / DSPs ไม่สามารถใช้งานได้


28

ฉันต้องเลือกระหว่างหลักสูตรเกี่ยวกับไมโครคอนโทรลเลอร์ขั้นสูงและหลักสูตรเกี่ยวกับ FPGA ขั้นสูง

ฉันมีหลักสูตรเกริ่นนำในทั้งสองวิชาและสิ่งที่เป็นปัญหาในตอนนี้คือฉันพัฒนาเฟิร์มแวร์ให้กับไมโครคอนโทรลเลอร์และฉันไม่สามารถดูว่าผลิตภัณฑ์ / โครงการใดที่ฉันสามารถสร้างด้วย FPGA และไม่สามารถใช้ไมโครคอนโทรลเลอร์ / DSP ได้

คุณสามารถคิดแอปพลิเคชั่น / ผลิตภัณฑ์ / โครงการที่ไมโครคอนโทรลเลอร์หรือ DSP ไม่เพียงพอและทำไม?

กล้อง? กล้องความเร็วสูง? การประมวลผลภาพความเร็วสูง?


4
เหตุผลหลักสวยมาก 1. ปฏิกิริยาที่กำหนดขึ้น 100%, 2. ศักยภาพมหาศาลสำหรับการขนาน อย่างไรก็ตามการออกแบบจำนวนมากรวมซีพียูหลักใน FPGA เนื่องจากมันง่ายต่อการเขียนโปรแกรมตรรกะที่บ้าคลั่งสำหรับโปรเซสเซอร์มากกว่าที่เป็นฮาร์ดแวร์
Dzarda

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

ฉันกำลังค้นหาแอปพลิเคชันที่ไมโครคอนโทรลเลอร์ส่วนใหญ่จะไม่เพียงพอหรือ FPGA จะเป็นตัวเลือกที่ชัดเจน
Jolle

4
หลักสูตรใดที่คุณเข้าใจได้ง่ายกว่าในหลักสูตรเบื้องต้น จากนั้นเลือกขั้นสูงในอีกอันหนึ่งเนื่องจาก (บางที) คุณจะสามารถศึกษาสิ่งที่ง่ายขึ้นได้ด้วยตัวเอง
woliveirajr

คำตอบ:


21

ดูไมโครคอนโทรลเลอร์ vs FPGA ของ

การประมวลผลภาพหรือวิดีโอความเร็วสูงเป็นตัวอย่างที่ดี หรือการประมวลผล 'รูปภาพ' ที่ไม่ได้เป็นภาพออปติคอลที่ตรงไปตรงมาเช่นเรดาร์หรือระบบที่ใช้เลเซอร์

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

ด้วย FPGA คุณจะสามารถตอบกลับเหตุการณ์อินพุตได้ทันที (ในรอบนาฬิกาถัดไป) คุณสามารถมีหน่วยประมวลผลจำนวนมากพร้อมกัน หากคุณรู้ว่าตัวกรองของคุณใช้เวลา 20 รอบนั่นเป็นสิ่งที่ไม่ขึ้นกับอะไรเลย

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

นอกจากนี้คุณยังอาจต้องการอุปกรณ์ต่อพ่วงหรือพูดบัสบัสความเร็วสูง คุณไม่สามารถ bit-bang HDMI เข้าหรือออกจากไมโครคอนโทรลเลอร์ คุณไม่สามารถสร้างการ์ด PCI ได้


16

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

ระบบจำนวนมากรวม FPGAs และ MCUs / DSP เพื่อให้ได้ประโยชน์สูงสุดจากทั้งสองโลก โครงการหนึ่งที่ฉันอาจกำลังดำเนินการในเร็ว ๆ นี้เกี่ยวข้องกับการจดจำวัตถุในสตรีมวิดีโอ ขั้นตอนเบื้องต้น (การกำจัดสัญญาณรบกวน, การทำให้เป็นมาตรฐาน, การตรวจจับขอบและอื่น ๆ ) ทำได้ดีที่สุดใน FPGA แต่ตรรกะระดับสูงกว่าจะตัดสินว่าคุณสมบัติระดับต่ำเป็นส่วนใดของวัตถุที่ได้รับการยอมรับว่าทำได้ดีที่สุดบน CPU ภายในหรือภายนอก FPGA)

ในที่สุดคุณจะต้องมีความสามารถทั้งสองด้านดังนั้นมันจึงเป็นคำถามที่คุณต้องทำก่อน


14

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

สตรีมวิดีโอ HDMI เป็นข้อมูลจำนวนมาก มันสามารถทำได้โดย CPU, GPU, หรือ ASIC ในกรณีวิดีโอทั่วไป แต่ถ้าคุณต้องการทำงานเล็กน้อย (เพิ่มการซ้อนทับเป็นต้น) คุณอาจเลือก FPGA

กระแสข้อมูลเสียงมีข้อมูลไม่มากนัก แต่หากคุณต้องการรู้จำเสียงพูดคุณจะต้องชอบ CPU กับ FPGA

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

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

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


12

โดยทั่วไปคุณใช้ไมโครคอนโทรลเลอร์เมื่อสามารถทำงานได้ ไมโครคอนโทรลเลอร์ดำเนินการตรรกะโดยการดำเนินการตามคำแนะนำ

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


8

แอปพลิเคชั่นตัวหนึ่งที่ฉันยังไม่ได้กล่าวถึงคือวิศวกรรมไมโครอิเล็กทรอนิกส์หรือการออกแบบชิป MCU / CPU / GPU / ASIC ด้วยตัวเอง ชิปเหล่านี้มักจะถูกต้นแบบโดยการออกแบบใน HDL และนำไปใช้ใน FPGA สิ่งนี้ทำให้ง่ายขึ้นถูกกว่าและเร็วกว่าในการทดสอบและแก้ไขก่อนที่จะใช้ HDL เพื่อสร้างเลย์เอาต์ที่จำเป็นสำหรับการผลิตซิลิคอนจริงในโปรเซสเซอร์หรือ ASIC

ผู้วิจารณ์กล่าวถึงสิ่งนี้ในรูปแบบของชิป soft-core (แม้ว่าพวกเขาจะมีการพิมพ์ผิดและเรียกพวกเขาว่าชิปการเรียงลำดับ core) คุณสามารถรับ ARM / 8051 / etc ได้ soft-core และอุปกรณ์ต่อพ่วงแบบ soft-core ใด ๆ ที่คุณต้องการและจำเป็นอย่างยิ่งที่จะต้องออกแบบไมโครคอนโทรลเลอร์ของคุณเองที่นำไปใช้ใน FPGA จากนั้นสมมติว่าคุณมีทรัพยากรคุณสามารถทำให้เรื่องนี้กลายเป็นไมโครคอนโทรลเลอร์ของคุณเอง

หากแอปพลิเคชันประเภทนี้เป็นสิ่งที่คุณสนใจลองดูที่OpenCoresเพื่อดูว่าเป็นไปได้อย่างไร


6

เราสร้างเครื่องมือเรดาร์ (ส่วนใหญ่รูรับแสงสังเคราะห์) ซึ่งใช้ FPGA อย่างกว้างขวาง ฉันไม่คิดว่าไมโครคอนโทรลเลอร์จะสามารถตอบสนองความต้องการด้านเวลาที่เข้มงวดได้อย่างง่ายดาย ฉันเชื่อว่าเครื่องมือ LIDAR จำนวนมากใช้ FPGA ด้วย

โดยพื้นฐานแล้วอะไรก็ตามที่ความต้องการด้านเวลาในหน่วยนาโนวินาทีนั้นต้องการ FPGA หรือ ASICs


5

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

ตัวอย่างที่เป็นรูปธรรม: Ken Perlin แนะนำการใช้ฮาร์ดแวร์ของอัลกอริธึมสัญญาณรบกวนแบบง่าย ๆ สามารถทำได้ค่อนข้างเร็วด้วย CPU หรือไมโครคอนโทรลเลอร์แบบดั้งเดิม แต่สามารถทำได้อย่างรวดเร็วด้วยฮาร์ดแวร์ที่กำหนดเอง เนื่องจากฉันสงสัยว่า DSP จะทำงานได้สิ่งนี้สิ่งที่ง่ายที่สุดก็คือ FPGA แน่นอนว่าวิธีที่ยากคือต้องมีชิปจริงที่ประดิษฐ์ขึ้นมาเพื่อคุณซึ่งมีราคาแพงอย่างไม่น่าเชื่อ http://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf


5

หนึ่งคำตอบที่ไม่ได้อยู่ที่นี่คือการเก็บข้อมูล หากคุณต้องการใช้ ADC เพื่อสุ่มตัวอย่างสัญญาณ (ตัวอย่างเช่นสัญญาณ RF) ที่ 200Mhz และประมวลผลไมโครคอนโทรลเลอร์จะไม่สามารถประมวลผลข้อมูลได้เร็วพอ บอร์ด DAQ FPGA ทั่วไปจะได้รับกรองดำเนินการDDCและส่งผ่านข้อมูล RF ไปยัง CPU ที่ความถี่ต่ำกว่ามาก FPGAs อาจดำเนินการ FFT และการดำเนินงานเกี่ยวกับการปรับช่องสัญญาณบนคลื่นความถี่ RF

แอปพลิเคชันอื่นคือการกำหนดเส้นทางแพ็คเก็ตตัวอย่างเช่นอุปกรณ์ที่จัดการอินเทอร์เฟซXAUIอีเธอร์เน็ตXAUIหนึ่งตัวหรือมากกว่านั้นทำงานที่ 10Gb / s ตัวกรอง FPGAs เหล่านี้และจัดตารางเวลาคิวของแพ็กเก็ตสำหรับปลายทางที่ต่างกัน ไมโครคอนโทรลเลอร์ / ซีพียูทั่วไปจะไม่สามารถรองรับแบนด์วิดธ์ของอินเทอร์เฟซเหล่านี้ได้


4

เหตุผลพื้นฐานที่ไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์สามารถทำอะไรได้มากมายด้วยวงจรที่ค่อนข้างเล็กคือถ้าไมโครต้องการเพียงแค่ทำการคำนวณที่ซับซ้อน 1,000 ครั้งต่อวินาทีและใช้เวลา 20 ไมโครวินาที (ดังนั้นไมโครจะทำงานกับการคำนวณ 2 % ของเวลา) ฮาร์ดแวร์ส่วนใหญ่ที่จะใช้สำหรับการคำนวณนั้นสามารถนำไปใช้เพื่อวัตถุประสงค์อื่นได้ 98% ที่เหลืออยู่ของเวลา ไมโครคอนโทรลเลอร์สามารถใช้ฮาร์ดแวร์จำนวนเล็กน้อยเพื่อทำหน้าที่แตกต่างกันจำนวนมากตราบใดที่ไม่จำเป็นต้องใช้ฟังก์ชั่นพร้อมกัน

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


1

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


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


ตัวอย่างเช่นคุณต้องการใช้งานอีควอไลเซอร์เสียงที่ตั้งโปรแกรมได้และส่วนการคำนวณที่หนักที่สุดเช่น FFT สามารถใช้งานได้โดยบล็อกการทำงานแทนที่จะใช้การคำนวณซอฟต์แวร์ แต่งานง่าย ๆ บางอย่างเช่น LCD, I / O สามารถทำได้โดย MCU และ FPGA ช่วยให้คุณมี MCU ระบบฝังตัวและบล็อกการทำงานของฮาร์ดแวร์ในเวลาเดียวกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.