จะตัดสินใจได้อย่างไรว่าแพลตฟอร์มใดดีที่สุดที่จะใช้การประมวลผลเสียงแบบเรียลไทม์?


15

เมื่อพัฒนาผลิตภัณฑ์ฉันออกแบบอัลกอริทึมทั้งหมดใน Matlab โดยทั่วไปแล้วพวกมันค่อนข้างพื้นฐานตัวกรอง IIR หรือ FIR หรือสองตัว FFT สองสามตัวเป็นต้นเมื่อถึงเวลาต้องย้ายไปยังสภาพแวดล้อมแบบฝังตัวฉันมักจะลำบากในการตัดสินใจเลือกแพลตฟอร์มที่จะใช้ ฉันมักจะนึกถึงแพลตฟอร์ม (วงกว้าง) เหล่านี้:

  • แกน DSP
  • FPGA
  • ไมโครคอนโทรลเลอร์
  • แขน

ฉันควรพิจารณาปัจจัยอะไรบ้างเมื่อพยายามทำการตัดสินใจนี้


2
ทำไมคุณถึงแตกต่าง "ARM" จาก "ไมโครคอนโทรลเลอร์" พยายามจัดหมวดหมู่ DSP + ARM ของ TI หรือไม่ คุณกำลังพยายามแยกสิ่งของขนาดเล็กพลังงานต่ำออกจากไมโครโพรเซสเซอร์ที่ใหญ่กว่าหรือไม่? (ในกรณีนี้คุณควรรวม MIPS และคอร์ 32 บิตเฉพาะของผู้ขาย)
Kevin Vermeer

เมื่อฉันนึกถึงไมโครคอนโทรลเลอร์ฉันคิดว่า PIC, Atmel ฯลฯ แต่ฉันคิดว่า ARM สามารถตกอยู่ภายใต้สิ่งนั้นได้เช่นกัน ฉันไม่ได้พยายามบอกว่าสิ่งเหล่านี้เป็นตัวเลือกทั้งหมดเพียงแค่ถามว่าควรคำนึงถึงปัจจัยใด
Kellenjb

1
คุณคิดว่า "ดีที่สุด" คืออะไร คุณถูก จำกัด ด้วยพลังหรือไม่? ค่าใช้จ่าย? ความง่ายในการเขียนโปรแกรม? ความยืดหยุ่น?
Oliver Charlesworth

@Oli นั่นคือคำถามทั้งหมดสิ่งที่ควรพิจารณาปัจจัยเมื่อพยายามตัดสินใจ
Kellenjb

3
@ Kellen: ในขณะนี้คำถามนี้เป็นเช่น "วิธีการตัดสินใจรถที่ดีที่สุด?" โดยไม่มีข้อ จำกัด เพิ่มเติม
Oliver Charlesworth

คำตอบ:


13

หากคุณต้องการ "อัลกอริธึมมาตรฐาน" เช่น IIR, FIR, radix-2 หรือ 4 FFT (นั่นคือสิ่งที่เหมาะกับสถาปัตยกรรม DSP อย่างดีโดยไม่มีการควบคุมมาก) คุณสามารถลอง:

นับจำนวน "ทวีคูณสะสม" ที่คุณต้องการต่อวินาทีในอัลกอริธึมทั้งหมดของคุณ

  • <10 ล้านคุณอาจได้รับไมโครคอนโทรลเลอร์ที่รวดเร็วในการทำงาน (หรือแม้แต่ช้าถ้าคุณ <1M)
  • <100M เป็นดินแดน DSP ง่าย
  • <1G มีแนวโน้มที่จะเป็นไปได้ว่าจะเป็นพื้นที่ DSP ที่รวดเร็ว
  • 1G-10G เป็นจุดผ่านระหว่าง DSP และ FPGA
  • > 10G เป็นหลาย DSP หรือ FPGA

2
นี่คือรายการที่ดีมากสำหรับการอ้างอิงจริง ๆ !
Kellenjb

3
เพียงจำที่จะคูณด้วย 10 เท่าคู่ของทุกปีหรือมากกว่านั้น :)
มาร์ติน ธ อมป์สัน

คุณสามารถยกตัวอย่างของ "ไมโครคอนโทรลเลอร์ที่รวดเร็ว" ได้หรือไม่?
endolith

1
@endolith: ไม่มีความเป็นไปได้ที่มันจะเป็นปัจจุบันในครั้งต่อไปที่เราดู :) ในต้นปี 2014 อาจจะเป็น LPC1768 (ซึ่งนาฬิกาที่ 100MHz - กดบิต 10MMACS ฉันเดา)
Martin Thompson

@MartinThompson: ห้องสมุด DSP สำหรับ LPC1700กล่าวว่า Cortex-M3 ทำ "2-cycle (32x32) +32 -> 32 เซ็นสัญญาทวีคูณสะสม" ดังนั้น 50 MMACs?
endolith

11

เท่าที่ฉันรู้ ARM ควรพิจารณาสถาปัตยกรรมมากกว่าแพลตฟอร์ม อย่างไรก็ตามคำถามนี้ค่อนข้างเกี่ยวข้องกับแพลตฟอร์มที่จะใช้สำหรับการประมวลผลสัญญาณ RT (ในกรณีนี้เสียง)

คุณสามารถเริ่มด้วยการถามคำถามต่อไปนี้โดยเรียงตามลำดับ:

  • ฉันมีเวลาสำหรับการดำเนินการเท่าไหร่
  • ข้อ จำกัด ด้านพลังงานของฉันคืออะไร?
  • ฉันต้องการการดำเนินการทางคณิตศาสตร์อะไรบ้าง คุณอาจต้องการตัวทวีคูณจำนวนมากพร้อมกันดังนั้นจึงเป็นการ จำกัด ตัวเลือกของคุณ
  • ฉันต้องใช้หน่วยความจำเท่าใด (MCUs ส่วนใหญ่มี จำกัด )
  • [สำคัญ] ความถี่ในการใช้งานของฉันคืออะไร ฉันสามารถบีบภายในระยะเวลาการสุ่มตัวอย่างเพื่อให้ความถี่ในการปฏิบัติการต่ำ
  • ห้องสมุดใดบ้างที่ฉันสามารถเลือกใช้ได้

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

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


2

มีเพียงข้อมูลที่คุณให้ทางเลือกน่าจะเป็น ARM, (IIR แบบง่าย ๆ และ FIRs) แต่มีปัจจัยอื่น ๆ ที่ต้องพิจารณาเช่นข้อกำหนดด้านพลังงาน, ข้อกำหนดของ IO, คุณสมบัติเพิ่มเติมที่คุณคาดว่าจะนำมาใช้: อุปกรณ์ประหยัดเวลาเท่าใด มีการเชื่อมต่อเครือข่ายและ API เพื่อแก้ไขพารามิเตอร์ DSP ในฟิลด์หรือไม่

คุณคิดว่าจะขยายช่วงของตัวเลือกไปยังสมาร์ทโฟนหรือคอมพิวเตอร์ขนาดกะทัดรัดเช่น Beagle Board หรือไม่? คุณอาจตระหนักว่าการประมวลผลสัญญาณเป็นเพียงส่วนเล็ก ๆ ของปัญหาทั้งหมดที่คุณกำลังแก้ไข

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