ทำไมต้องใช้ไมโครคอนโทรลเลอร์ใน FPGA


16

ฉันกำลัง "ตรวจสอบ" FPGAs สิ่งที่พวกเขาสามารถทำได้วิธีที่พวกเขาทำ ฯลฯ

ในสถานที่มากกว่าหนึ่งแห่ง ( ตัวอย่างที่นี่ ) ฉันเคยเห็นโครงการที่ใช้ไมโครคอนโทรลเลอร์อย่างง่ายกับ FPGA

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


หลายแกน IP ที่ใช้กระป๋องเหล่านี้ แต่การม้วนของคุณเองอาจเป็นประสบการณ์การเรียนรู้ที่ยอดเยี่ยม
Chris Stratton

1
@ChrisStratton - คุณสามารถบอกเพิ่มเติมหรือโพสต์ลิงค์เกี่ยวกับแกน IP กระป๋องได้หรือไม่ ใช่ฉันแน่ใจว่ามันจะเป็นประสบการณ์การเรียนรู้ที่ยอดเยี่ยม แต่นั่นเป็นหนึ่งในเหตุผลที่ฉันถามคำถามนี้ ฉันสงสัยว่ามันเป็นอะไรที่มากกว่าแค่ประสบการณ์การเรียนรู้
James C

1
คนส่วนใหญ่ที่ทำมันกำลังใช้อะไรเช่น Microblaze, Picobloze, Nios II และอื่น ๆ - สิ่งเหล่านี้เป็นการออกแบบโปรเซสเซอร์โดยทั่วไป "ในกระป๋อง" (ไลบรารี) ซึ่งคุณสามารถให้สิทธิ์ใช้งานและวางโครงการของคุณได้ ความคมชัดจะพัฒนาตัวคุณเองในแหล่งข้อมูล HDL ซึ่งอาจมาจากแผนภาพบล็อกที่แสดงในการบรรยาย CS101 ทั่วไปของคุณ มีจำนวนของการปฏิบัติที่น่าสนใจที่จะต่อสู้กับในการเปลี่ยนภาพวาดการบรรยายเป็นฮาร์ดแวร์ทำงาน
Chris Stratton

1
ดูOpen Coresสำหรับตัวอย่างของคอร์ CPU โอเพ่นซอร์สมากมาย
RBerteig

3
ฉันมีตัวอย่าง เรามีไมโครคอนโทรลเลอร์ไปล้าสมัยสำหรับผลิตภัณฑ์เก่า เราไม่สามารถหาไมโครคอนโทรลเลอร์ทดแทนที่เหมาะสมพร้อมกับอุปกรณ์ต่อพ่วงที่เหมาะสม การใช้ FPGA กับตัวประมวลผลแบบฝังทำให้เราสามารถนำอุปกรณ์ต่อพ่วงในอุดมคติมาผสมผสานกับ FPGA
kkrambo

คำตอบ:


24

ประโยชน์ที่ได้รับ:

  • อินเตอร์เฟสที่รวดเร็วอย่างเห็นได้ชัดระหว่างไมโครคอนโทรลเลอร์และอินเตอร์เฟสแบบกำหนดเองหรือตรรกะ I / O บนชิป
  • ตัวประมวลผลและอินเตอร์เฟสการดีบักที่ปรับแต่งได้
  • นอกจากนี้มักจะควบคุมตรรกะได้ง่ายกว่าเขียนรหัสควบคุมด้วยพูด VHDL

ข้อเสีย:

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

3
ประโยชน์เพิ่มเติม: การออกแบบที่เรียบง่ายขึ้นชิปตัวหนึ่งที่น้อยลง
DoxyLover

4
ข้อเสียเพิ่มเติม: การออกใบอนุญาต IP เพิ่มเติม
Mikhail

การใช้พลังงานเป็นข้อเสียอย่างไร
Craig McQueen

@CraigMcQueen เป็นไปได้ในทางทฤษฎีในการสร้างไมโครคอนโทรลเลอร์ใน FPGA ซึ่งยังไม่ได้ผลิตเป็นฮาร์ดแวร์แบบสแตนด์อะโลน ในกรณีนี้ไม่มีการเปรียบเทียบการใช้พลังงาน ไม่ว่าในกรณีใดมันเป็นอุปกรณ์เฉพาะที่เกินกว่าจะเป็นข้อเสีย / ข้อเสียทั่วไป
เสา

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

26

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

สำหรับสภาพแวดล้อมการควบคุมเชิงโพรซีเดอร์หลาย ๆ วิธีการใช้การตั้งค่าที่จำเป็นต้องมีในภาษาอย่าง C ง่ายกว่าการพยายามทำใน VHDL หรือ Verilog ด้วยการเพิ่มไมโครคอนโทรลเลอร์ลงใน FPGA คุณจะได้รับสิ่งที่ดีที่สุดทั้งสองโลก - พลังของ VHDL / Verilog ฯลฯ สำหรับตรรกะและระบบเชื่อมต่อและความเรียบง่ายของภาษาขั้นตอนสำหรับการควบคุมแกนกลางและระบบการจัดการ


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

13

ในส่วนขยายของคำตอบของ Majenko และ PkP:

แนวโน้มของการฝัง CPU ในการออกแบบ FPGA นี้นำไปสู่ระบบที่แตกต่างกันเช่น:

  • ตระกูล Xilinx 'Zynq-7000
  • Artera / Cyclon / Stratix SoC FPGA ของ Altera
  • SmartFusion FPGA ของ MicroSemi

นอกจากนี้ยังมีชิป Intel Atom + Altera FPGA ในตลาด: http://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html

คอนโทรลเลอร์ไมโครฟรีสำหรับ FPGA ส่วนใหญ่ประสบจากการสนับสนุนโซ่เครื่องมือที่ไม่ดี ซีพียู ARM ในตัวมาพร้อมกับการรองรับการติดตาม / การดีบักคอมไพเลอร์ (ห่วงโซ่เครื่องมือ gcc) และการสนับสนุนลินุกซ์อย่างเต็มรูปแบบ นี่คือการสำรวจที่นำเสนอใน FPL 2014: http://dx.doi.org/10.1109/FPL.2014.6927482

แก้ไข 1:
นอกจากนี้ยังมีคลาสของอุปกรณ์ PSoC (ระบบโปรแกรมบนชิป) จาก Cypress อุปกรณ์เหล่านี้รวมถึงตัวควบคุมขนาดเล็ก (M8C, 8051, ARM Cortex M0 หรือ Cortex M3) และตัวควบคุม I / O แบบคลาสสิกของ SoC หรืออุปกรณ์ (I²C, SPI, ตัวจับเวลา, CAN, DAC, ADC, OpAmp, ... ) และโปรแกรมได้ ส่วนหนึ่ง ส่วนนี้ไม่ได้เป็นเกรนละเอียดที่ตั้งโปรแกรมได้เช่น FPGA คลาสสิก แต่สามารถใช้เพื่อเพิ่มตัวควบคุม I / O หรือตัวเร่งฮาร์ดแวร์ในตัว PSoC ช่วยให้คุณใช้ส่วนประกอบอะนาล็อกในการออกแบบของคุณ
http://www.cypress.com/psoc/?source=CY-ENG-HEADER

ภาพรวม PSoC: PSoC


10

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

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

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


9

มีเหตุผลที่ถูกต้องหลายประการสำหรับการสร้างอินสแตนซ์ไมโครโปรเซสเซอร์หรือไมโครคอนโทรลเลอร์ใน FPGA ที่นี่มีสาม:

  1. คุณเพียงต้องการเรียนรู้เกี่ยวกับการทำงานของโปรเซสเซอร์ FPGAs ให้วิธีการมากมายแก่คุณในการตรวจสอบสิ่งที่เกิดขึ้นภายในโปรเซสเซอร์ขณะประมวลผลโค้ด นี่เป็นเพียงการเรียนรู้

  2. คุณกำลังใช้ระบบขนาดใหญ่ที่ต้องใช้ความเร็วระดับฮาร์ดแวร์ของ FPGA (เร็วกว่าซอฟต์แวร์ที่ทำงานบนไมโครโปรเซสเซอร์) แต่การออกแบบของคุณต้องใช้เครื่องสถานะที่ซับซ้อนซึ่งสามารถนำไปใช้งานได้ง่ายขึ้นโดยใช้ซอฟต์แวร์ที่ทำงานบนโปรเซสเซอร์แบบง่ายเช่น Xilinx PicoBlaze กว่าใน FSM ของฮาร์ดแวร์ โปรดทราบว่า PicoBlaze สามารถทำงานได้เร็วเท่ากับ 240MHz ในเทคโนโลยีกระบวนการ FPGA ล่าสุดและโปรเซสเซอร์ PicoBlaze ดำเนินการคำสั่งทุกสองรอบนาฬิกาดังนั้นคุณจะได้เครื่องรัฐที่รวดเร็วและสม่ำเสมอซึ่งตั้งโปรแกรมไว้ในซอฟต์แวร์ได้อย่างง่ายดาย

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

นี่คือข้อแม้หนึ่งข้อ: หากคุณต้องการหน่วยประมวลผลที่รวดเร็วพร้อมชุดคำสั่งมาตรฐานและระบบนิเวศการพัฒนาขนาดใหญ่คุณต้องมีโปรเซสเซอร์คอร์ที่รวดเร็วและรวดเร็วเช่น ARM Cortex-A9s สองตัวใน Xilinx Zynq SoC ผ้า FPGA ใน Zynq SoC ยังช่วยให้คุณสามารถประมวลผลแกนประมวลผลเพิ่มเติมได้ในตรรกะโปรแกรม แต่ ARM Cortex-A9s สามารถเรียกใช้ระบบปฏิบัติการมาตรฐานเช่น Linux และ IDE มาตรฐานเช่น Android

ในระหว่าง ARM Cortex-A9 และ PicoBlaze มีตัวประมวลผลอ่อนจำนวนมากที่คุณสามารถนำไปใช้กับตรรกะที่ตั้งโปรแกรมได้จากหลายแหล่ง บางคนชอบที่จะม้วนตัวประมวลผลของตัวเองและนั่นเป็นกิจกรรมทางการศึกษาที่ยอดเยี่ยม อย่างไรก็ตามไมโครโปรเซสเซอร์ต้องการเครื่องมือในการพัฒนาซอฟต์แวร์และการสร้าง / การดีบักเครื่องมือเหล่านั้นต้องการคำสั่งที่มีความพยายามมากกว่าการสร้างตัวประมวลผล คุณต้องแลกเปลี่ยนผลประโยชน์ที่เป็นไปได้ของไมโครโปรเซสเซอร์ที่กำหนดเองกับเวลาและความพยายามที่จำเป็นในการสร้าง / ดีบักแกนประมวลผลและเครื่องมือ

การเปิดเผยอย่างเต็มรูปแบบ:ฉันทำงานกับ Xilinx แต่ฉันค่อนข้างแน่ใจว่าฉันไม่ได้ระบุว่า FPGAs เป็นทางออกเสมอ ถ้าไมโครคอนโทรลเลอร์ 50 เปอร์เซ็นต์สามารถทำงานได้คุณก็ควรใช้มัน FPGAs และ Zynq SoCs สำหรับโครงการที่ต้องการการยกที่หนักเกินความสามารถของไมโครคอนโทรลเลอร์


การต้อนรับที่อบอุ่น Steven!
PkP

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

แน่นอนว่าคุณถูกต้องสำหรับเบ็นรัฐที่ใช้ฮาร์ดแวร์ คุณสามารถต่อสายพิน "ขัดจังหวะ" เป็นอินพุตของเครื่องอื่นได้เสมอ อย่างไรก็ตามเครื่องที่ซับซ้อนจำนวนมากนั้นสามารถเข้าใจได้ง่ายกว่าเมื่อนำมาใช้กับโปรเซสเซอร์ที่รัน C หรืออย่างน้อยก็เข้าใจได้มากกว่าสำหรับนักพัฒนาบางคน นั่นคือเมื่อคุณต้องการขัดจังหวะ
Steven Leibson

2

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

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