FPGA ควรใช้กับ Robotics เมื่อใด


12

FPGA มีคะแนนที่ดีเช่นคะแนน IO จำนวนมาก แต่คุณต้องคิดอีกครั้งในระดับที่ต่ำมากด้วย flip-flop และผู้บุกเบิกในพื้นที่ที่ยังไม่เป็นผู้ใหญ่ - ตัวอย่างเช่นดูคำถามที่นี่เกี่ยวกับเครื่องมือพัฒนา FPGA - นี่คือความเข้าใจของฉันในขณะนี้! ตอนนี้ FPGA ถูกนำมาใช้เพื่อสร้างความชำนาญที่ดีอยู่ในมือของหุ่นยนต์ชอบที่นี่ ตอนนี้บางคนทำการตลาด FPGA สำหรับการสร้างต้นแบบอย่างรวดเร็วและการออกแบบ"มองไปข้างหน้า" ที่นี่ฉันไม่เข้าใจพวกเขาอย่างเต็มที่: หากคุณไม่ต้องการคะแนน IO มากมายสำหรับสิ่งต่าง ๆ เช่นเซ็นเซอร์ทำไมต้องเลือก FPGA สำหรับหุ่นยนต์ ดังนั้น

ควรเลือก FPGA สำหรับโครงการในหุ่นยนต์เมื่อใด


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

คำตอบ:


4

ฉันไม่แน่ใจว่าคำถามที่เชื่อมโยงเกี่ยวกับเครื่องมือในการพัฒนาทำให้คุณคิดว่าพวกเขายังไม่โตเต็มที่ มันเป็นความจริงที่ว่าส่วนใหญ่เป็นกรรมสิทธิ์และไม่เปิดแหล่งที่มา แต่ฉันคิดว่าเครื่องมือนั้นค่อนข้างเป็นผู้ใหญ่แม้จะย้อนกลับไปเมื่อคำถามนั้นถูกถามเมื่อสามปีก่อน ทุกวันนี้Xilinx , AlteraและLatticeมีสภาพแวดล้อมการพัฒนาที่พร้อมใช้งานได้อย่างอิสระซึ่งทำงานบน Windows และ Linux พร้อมรองรับ 32 และ 64 บิต หากคุณยืนยันในโอเพ่นซอร์สIcarus Verilogสามารถทำอะไรได้บ้าง แต่ส่วนตัวแล้วฉันจะยึดติดกับเครื่องมือเฉพาะของผู้ขาย

FPGA นั้นเป็นมากกว่าแค่ส่วนของฟลิปที่สามารถกำหนดค่าได้ พิจารณาAltera NIOS II โปรเซสเซอร์ 32 บิตซอฟต์คอร์ที่มีความสามารถในการใช้งาน Linux ผสมผสานและจับคู่การสื่อสารและอุปกรณ์ต่อพ่วงอื่น ๆ จากOpenCoresหรือจากXilinx , AlteraหรือLatticeและคุณได้สร้างไมโครคอนโทรลเลอร์ที่กำหนดเองพร้อมทุกสิ่งที่คุณต้องการและไม่ทำอะไรเลย คุณยังสามารถเขียนรหัส C สำหรับโปรเซสเซอร์ NIOS II และมีฟังก์ชั่นบางอย่างที่ใช้งานโดยตรงในฮาร์ดแวร์ FPGAหากคุณต้องการความเร็ว นั่นคือระดับสูงพอที่คิดสำหรับคุณ?

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

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

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

การประมวลผลการมองเห็นขนานอย่างหนาแน่น


คุณช่วยอธิบายได้ไหมว่า "FPGA นั้นมีต้นทุนการลงทุนเริ่มต้นที่สูง" ที่เกี่ยวข้องที่นี่ : ราคาดูต่ำมาก คุณหมายถึงค่าใช้จ่ายในการฝึกอบรมสูงหรือตัวเลขอื่น ๆ ?
hhh

1
@hhh ฉันไม่ได้พูดถึงต้นทุนชิปดิบ ฉันกำลังพูดถึงค่าใช้จ่ายในการพัฒนา พิจารณาชุดพัฒนาไมโครคอนโทรลเลอร์เช่นที่PandaBoard มี ARM Cortext A9 ในราคา $ 181 บอร์ดพัฒนา FPGA ที่สามารถเก็บ A9 ได้เช่นCyclone Vคือ $ 1,099
embedded.kyle

@hhh มีชุดพัฒนา FPGA ราคาถูกกว่าแน่นอน แต่ฉันพยายามหาตัวชี้วัดบางอย่างเพื่อเปรียบเทียบสองสิ่งที่แตกต่างกันมาก ดังนั้นชุดพัฒนาที่มี (เท่ากัน) กำลังการประมวลผลแบบเดียวกันประมาณ 10 เท่าขึ้นไป
embedded.kyle

@hhh แขนราคาถูกที่สุดใน บริษัท Mouser เป็น$ 0.80 FPGA ถูกที่สุดคือ$ 2.80
embedded.kyle

2
@hhh นั่นคืองานวิจัยที่ล้ำสมัยโดยมีแนวโน้มว่าจะมีอุปกรณ์ที่กำหนดเองเป็นหมื่นถ้าไม่ใช่หลายแสนดอลลาร์ การประมวลผลวิดีโอโดยทั่วไปมีแนวโน้มที่จะสูงขึ้น ดูที่นี่และที่นี่ และไม่อาจประมวลผลวิดีโอขนาด 1kfps ได้ มากกว่า 30-60fps กระดานที่คุณอยู่ในรายการไม่มีวิดีโออินพุต แม้ว่ามันจะสามารถควบคุมแอคทูเอเตอร์และประมวลผลเซ็นเซอร์สัมผัสได้อย่างแน่นอน ท้าทายสามารถเลียนแบบมือที่คุณเชื่อมโยง
embedded.kyle

2

ฉันคิดว่าอาจมีความเข้าใจผิดเกี่ยวกับสิ่งที่ FPGA เป็นจริงและเมื่อใช้ในการออกแบบ ขอผมอธิบายส่วนนั้นก่อน

FPGA และเมื่อหนึ่งอาจต้องการที่จะมี ...

ที่มีความเสี่ยงจากความเรียบง่าย FPGA นั้นเล็กกว่าตัวประมวลผลที่เป็น 'กำหนดค่าใหม่' เพียงเล็กน้อย

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

เนื่องจากไม่มีการออกแบบที่ปราศจากข้อผิดพลาดในรอบแรกการไปตามเส้นทางซิลิคอนจะทำให้ บริษัท ต้องดำเนินการทดสอบอย่างน้อยสองถ้าไม่มีการทดสอบเพิ่มเติม

ซึ่งหมายความว่า บริษัท การค้าเพียงไม่กี่แห่งที่มีความสนใจในการออกแบบและนำไปผลิตสิ่งอื่นนอกเหนือจากชิปที่มีความน่าสนใจในเชิงพาณิชย์มากพอ

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

แต่นั่นก็เป็นวิธีที่แตกต่างกันโดยสิ้นเชิง (การออกแบบไมโครโปรเซสเซอร์!) ...

ซึ่งทำให้ฉันแนะนำว่า

... FPGA ไม่จำเป็นสำหรับหุ่นยนต์ - อย่างน้อยตอนเริ่มต้น

สิ่งที่คุณต้องการสำหรับหุ่นยนต์เป็นตัวประมวลผล FPGA เป็นเพียงโปรเซสเซอร์ชนิดพิเศษ (ตั้งค่าใหม่ได้)

คุณถามว่าคุณ 'ควร'? ขึ้นอยู่กับความรู้ของคุณรวมถึงความสนใจที่แท้จริงของคุณ - การออกแบบไมโครโปรเซสเซอร์ก่อนหรือหุ่นยนต์เป็นอันดับแรก

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

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

นักออกแบบส่วนใหญ่อาจพบโปรเซสเซอร์ที่มีอยู่ซึ่งจะทำสิ่งที่พวกเขาต้องการมากที่สุด

ดังนั้นฉันคิดว่าคุณอาจไม่ต้องการ FPGA

แผนงานเริ่มต้น: จากความสามารถเชิงพาณิชย์ไปจนถึง (อาจ) FPGA ...

เป้าหมายแรกในความคิดของฉันคือพยายามทำให้แนวคิดสร้างสรรค์ทั้งหมดของคุณเป็นหุ่นยนต์ที่ใช้งานได้

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

เฉพาะในกรณีที่มีความสามารถที่คุณจะไม่สามารถรับชิปเชิงพาณิชย์เพื่อจัดการคุณอาจพิจารณาใช้โปรเซสเซอร์พิเศษภายใน FPGA เพราะ ณ จุดนั้นจะมีข้อได้เปรียบที่ชัดเจนมากที่คุณหวังว่าจะได้รับโดย 'กลิ้งของคุณเอง 'และคุณสามารถมุ่งเน้นไปที่การใช้ความสามารถเหล่านั้นด้วยอินเทอร์เฟซที่เหมาะสมกับการออกแบบที่เหลือของคุณ

มิฉะนั้นคุณมีโอกาสที่จะได้รับการติดตามด้านข้างจากเป้าหมายหลักของคุณ (ซึ่งฉันจะถือว่าเป็นการสร้างหุ่นยนต์จริง ๆ !)

Bottom line: FPGAs เป็นสิ่งที่ทำให้ไขว้เขวจากการเริ่มต้นใช้งานในหุ่นยนต์ --- จนกว่าคุณจะเข้าหาทางไปตามถนนหุ่นยนต์ - และได้รับการสับที่แข็งแกร่งในการออกแบบอิเล็กทรอนิกส์ / ไมโครโปรเซสเซอร์ดิจิตอลที่ใดที่หนึ่งตลอดทาง


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

คุณถูกต้องแน่นอนว่ามีหลายพื้นที่ที่ FPGA เป็นข้อได้เปรียบ - ฉันไม่ได้ยกเว้นสิ่งเหล่านี้ในคำตอบของฉัน ปัญหาคือที่ที่คุณอยู่บนเส้นโค้งประสบการณ์และความชัดเจนของคุณเกี่ยวกับข้อดีเฉพาะที่คุณต้องการได้รับจากการใช้ FPGA หากคุณไม่ทราบคำตอบคุณอาจไม่ต้องการคำตอบ! (คำตอบสะท้อนของยาโคบด้านล่างนี้)
Assad Ebrahim

1

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

  • จำเป็นต้องใช้เวลาที่ซับซ้อนในพอร์ต I / O หรือไม่? การควบคุมมอเตอร์ 3 เฟสสามารถมีข้อกำหนดดังกล่าว FPGA มีข้อได้เปรียบเล็กน้อยที่นี่
  • คุณสามารถขนานอัลกอริธึม latency ต่ำสุดของคุณหรือไม่ ที่นี่ FPGA ไม่ได้แข่งขันกับไมโครคอนโทรลเลอร์จริงๆ แต่มีมากขึ้นในพีซีแบบฝัง สิ่งที่ฉันจะไปสำหรับพีซีแบบฝังส่วนใหญ่ แต่คุณอาจได้เปรียบกับ FPGA สำหรับแอปพลิเคชันบางอย่าง ยกตัวอย่างเช่นการประมวลผลสเตอริโอหนาแน่นใน FPGAs กล้องจำนวนมากใช้ FPGA เพื่อประมวลผลสตรีมข้อมูล

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

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


คุณสามารถแสดงตัวอย่างโครงการที่จะช่วยให้เข้าใจประเภทของสิ่งที่ดีกับ FPGA และไมโครคอนโทรลเลอร์ สมมติว่าหุ่นยนต์ที่ทำงานตามบรรทัดต่อไปนี้ทำงานได้ดีกับไมโครคอนโทรลเลอร์ตัวเดียวบนพื้นผิวที่สะอาดเรียบจนกระทั่งเส้นพร่ามัวที่ต้องการความคมชัดของภาพมากขึ้น / การโน้มน้าวใจ / ฯลฯ หากเส้นในป่า (หรือพื้นผิวที่มีเสียงดังอื่น ๆ ) มันจะเป็นความท้าทายที่ยากขึ้น (ฉันสงสัยว่าเป็นไปได้ที่จะทำกับ fpga) คุณได้ทำโครงการหุ่นยนต์ในโลกแห่งความจริงที่คุณเคยใช้ fpga เช่นการประมวลผลภาพ / วิดีโอเรียลไทม์หรือไม่? +1 สำหรับ VHDL
hhh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.