อะไรคือความแตกต่างระหว่าง DSP และไมโครคอนโทรลเลอร์มาตรฐาน?


84

ฉันเข้าใจว่า DSP ได้รับการปรับให้เหมาะสำหรับการประมวลผลสัญญาณดิจิตอล แต่ฉันไม่แน่ใจว่าสิ่งนั้นส่งผลต่องานการเลือก IC เกือบทุกอย่างที่ฉันทำกับไมโครคอนโทรลเลอร์เกี่ยวข้องกับการประมวลผลสัญญาณดิจิตอล!

ตัวอย่างเช่นลองเปรียบเทียบ Microchip dsPIC30 หรือ 33 DSP ยอดนิยมและข้อเสนอ 16 บิตอื่น ๆ ของพวกเขานั่นคือไมโครคอนโทรลเลอร์ PIC24 สำหรับใช้งานทั่วไป dsPIC และ PIC สามารถกำหนดค่าให้มีหน่วยความจำและความเร็วเท่ากันมีชุดอุปกรณ์ต่อพ่วงที่คล้ายกันความสามารถ A / D ที่คล้ายกันจำนวนพินการจับกระแสในปัจจุบันและอื่น ๆ ความแตกต่างที่สำคัญที่ปรากฏในรายการของ Digikey คือตำแหน่งของ ออสซิล ฉันไม่สามารถบอกความแตกต่างได้โดยดูที่ราคา (หรือสาขาอื่น ๆ สำหรับเรื่องนั้น)

ถ้าฉันต้องการทำงานกับเซ็นเซอร์ภายนอกสองตัวโดยใช้โปรโตคอลต่าง ๆ (I2C, SPI, ฯลฯ ) ทำการแปลง A / D เก็บข้อมูลบางส่วนบนแฟลชอนุกรมบางตัวตอบสนองต่อปุ่มบางปุ่มและส่งข้อมูลไปที่ตัวอักษร LCD และ FT232 (ระบบฝังตัวที่ค่อนข้างธรรมดา) ฉันควรใช้ชิปตัวไหน? ไม่ปรากฏว่า DSP จะล้าหลัง PIC ในทางใดทางหนึ่งและเสนอ "DSP Engine" ที่ลึกลับนี้ รหัสของฉันใช้คณิตศาสตร์เสมอและบางครั้งฉันต้องการเลขทศนิยมหรือเศษส่วน แต่ฉันไม่รู้ว่าฉันจะได้รับประโยชน์จากการใช้ DSP หรือไม่

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

คำตอบ:


64

ความจริงแล้วเส้นแบ่งระหว่างทั้งสองแทบจะหายไปในปัจจุบันและมีโปรเซสเซอร์ที่สามารถจัดเป็นทั้งสองอย่าง (เช่น Blackfin AD)

พูด, พูดแบบทั่วไป, พูดทั่วๆไป:

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

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

ในอดีตหากคุณต้องการประมวลผลสตรีมเสียงสตรีมวิดีโอทำการควบคุมมอเตอร์อย่างรวดเร็วสิ่งใดก็ตามที่ต้องการประมวลผลสตรีมข้อมูลด้วยความเร็วสูงคุณจะมองไปที่ DSP

หากคุณต้องการควบคุมปุ่มบางปุ่มวัดอุณหภูมิเรียกใช้ตัวอักษร LCD ควบคุมไอซีอื่น ๆ ที่กำลังประมวลผลสิ่งต่าง ๆ คุณต้องใช้ไมโครคอนโทรลเลอร์

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

ตลาดโปรเซสเซอร์กว้างขึ้นและพร่ามัวกว่าที่เคยเป็นมา เช่นฉันแทบจะไม่ได้พิจารณา ARM cortex-A8 SoC ตัวควบคุมขนาดเล็ก แต่มันอาจเหมาะกับคำจำกัดความมาตรฐานโดยเฉพาะอย่างยิ่งในแพคเกจ PoP

แก้ไข:คิดฉันจะเพิ่มเล็กน้อยเพื่ออธิบายเมื่อ / ที่ไหนฉันใช้ DSPs แม้ในวันของการใช้งานโปรเซสเซอร์

ผลิตภัณฑ์ล่าสุดที่ฉันออกแบบได้ทำการประมวลผลเสียงด้วย X channel ของอินพุตและ X channel ของเอาต์พุตต่อ 'โซน' การใช้งานตามวัตถุประสงค์สำหรับผลิตภัณฑ์หมายความว่ามันมักจะนั่งอยู่ที่นั่นเพื่อทำสิ่งนั้นประมวลผลช่องสัญญาณเสียงเป็นเวลาหลายปีโดยไม่มีใครแตะ การประมวลผลเสียงประกอบด้วยตัวกรองเสียงและฟังก์ชั่นเสียงที่หลากหลาย ระบบยังเป็น "hot plugable" ด้วยความสามารถในการเพิ่มจำนวน 'โซน' อิสระทั้งหมดในกล่องเดียว มันเป็นงานออกแบบ PCB ทั้งหมด 3 ชิ้น (เมนบอร์ด, backplane และโมดูลเสียบ) และ backplane รองรับโมดูลปลั๊ก 4 ตัว ค่อนข้างสนุกโครงการเมื่อฉันทำมันเดี่ยวฉันต้องทำการออกแบบระบบแผนผังโครงร่าง PCB และเฟิร์มแวร์

ตอนนี้ฉันสามารถทำสิ่งทั้งหมดได้ด้วย ARM ARM ขนาดใหญ่เพียงก้อนเดียวฉันต้องการเพียงประมาณ 50MIPS ของการทำงาน DSP บนหมายเลขจุดคงที่ 24 บิตต่อโซน แต่เนื่องจากฉันรู้ว่าระบบนี้จะทำงานเป็นเวลานานมากและรู้ว่ามันสำคัญมากที่จะไม่คลิกหรือป๊อปหรืออะไรอย่างนั้น ฉันเลือกที่จะใช้งานด้วย DSP พลังงานต่ำต่อโซนและไมโครคอนโทรลเลอร์ PIC เดียวที่เล่นบทบาทการจัดการระบบ ด้วยวิธีนี้แม้ว่าหนึ่งในฟังก์ชั่น uC จะล้มเหลวอาจเป็นการโจมตี DDOS บนพอร์ตอีเธอร์เน็ต DSP นั้นจะมีความสุขเพียงแค่แยกตัวออกไป

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

เพื่อให้เป็นสถานการณ์ที่แม้กระทั่งในวันที่ฉันสามารถใช้ ARM ARM เดียวเพื่อทำทุกอย่างการออกแบบกำหนด IC ประมวลผลสัญญาณโดยเฉพาะ

พื้นที่อื่น ๆ ที่ฉันพบใน DSP:

* High End audio - ตัวรับสัญญาณระดับไฮเอนด์และอุปกรณ์การผสมและการจัดคอนเสิร์ตคุณภาพสูง

* การประมวลผลเรดาร์ - ฉันใช้ ARM ARM สำหรับแอพพลิเคชั่นต่ำสุดด้วย

* การประมวลผลแบบโซนาร์

* วิสัยทัศน์คอมพิวเตอร์แบบเรียลไทม์

โดยส่วนใหญ่แล้วเสียงกลางและเสียงกลางของเสียง / วิดีโอ / พื้นที่ที่คล้ายกันถูกใช้งานโดยแอพพลิเคชั่นโปรเซสเซอร์ซึ่งรวมซีพียูเอนกประสงค์กับซีพียูออฟโปรดักชั่นสำหรับการใช้งานที่หลากหลาย


1
นอกจากนี้อีกบางที ในแอปพลิเคชันที่มีเส้น I / O ประมาณ 80 เส้นและอินพุตแบบอะนาล็อก 12 ช่องตอนนี้เรากำลังใช้ไมโครคอนโทรลเลอร์ตัวเดียวที่มี FPGA ที่เชื่อมโยงเพื่อจัดการกับกระแส I / O วิธีแก้ปัญหาเช่นนี้กำลังกลายเป็นเรื่องธรรมดาไปแล้ว เรากำลังใช้ระบบนี้: embeddedarm.com/products/board-detail.php?product=ts-7800เพื่อให้การพัฒนารวดเร็วขึ้นในระยะเวลาสั้น ๆ สู่ตลาดและฉันต้องบอกว่ามันใช้งานได้ดีมาก (แน่นอนราคาของ ผลิตภัณฑ์ดังกล่าวอาจไม่เหมาะสำหรับการใช้งานที่มีราคาขายต่ำกว่า / มูลค่าคาดว่าจะได้) - Wouter Simons 33 วินาทีที่ผ่านมา
Wouter Simons

ไมโครคอนโทรลเลอร์บางตัวไม่ได้ขัดจังหวะ ในแอปพลิเคชันที่สำคัญต่อภารกิจพวกมันไม่เคยใช้ ตรงจุด: คอนโทรลเลอร์ Viper ที่ใช้ในเครื่องบินรบ
stevenvh

15

โปรเซสเซอร์สัญญาณดิจิตอลหลายตัวมีฟังก์ชั่นหลากหลายที่ไม่พบในโปรเซสเซอร์ 'สามัญ':

  1. ความสามารถในการดำเนินการคูณทวีคูณโดยตัวถูกดำเนินการทั้งสองดึงมาจาก RAM ในอัตราหนึ่งรอบต่อคู่ของตัวถูกดำเนินการ
  2. ความสามารถในการแสดงที่อยู่ 'โมดูโล' หรือ 'การห่อ' บางรูปแบบเพื่อให้สามารถใช้บัฟเฟอร์ซ้ำได้โดยไม่ต้องใช้รหัสคู่มือเพื่อให้แน่ใจว่าพอยน์เตอร์ห่อ ตัวอย่างเช่น 3205x มีการลงทะเบียน 'buffer start' และ 'buffer end'; หากรหัสพยายามที่จะเพิ่มหรือลดการลงทะเบียนตัวชี้ที่ชี้ไปที่ 'เริ่มบัฟเฟอร์' หน่วยประมวลผลจะโหลดตัวชี้ด้วย 'ปลายบัฟเฟอร์' 3205x ยังมีโหมดการย้อนกลับที่ซึ่งการเพิ่มเติมที่อยู่จะช่วยให้พกพา MSB ไปยัง LSB แทนที่จะกลับกัน สิ่งนี้ยอมให้ modulo-N addressing ถ้า N คือพลังของ 2 แม้ว่าสิ่งของจะถูกจัดเก็บในลำดับที่คลั่งไคล้
  3. ความสามารถในการระบุว่าคำสั่งถูกเรียกใช้งาน 'n' ครั้งโดยไม่จำเป็นต้องดึงข้อมูลอีกครั้ง โปรเซสเซอร์บางรุ่นเช่น 8088 มีคำแนะนำนี้อยู่บ้าง แต่ DSP หลายตัวอนุญาตให้ใช้กับคำแนะนำมากมาย
  4. ความสามารถในการระบุว่าบล็อกของรหัสจะถูกดำเนินการซ้ำ ๆ ถึงครั้ง 'n' โดยไม่จำเป็นต้องแยกสาขา ก่อนที่จะดึงรหัสแต่ละตัวนับโปรแกรมจะถูกตรวจสอบกับการลงทะเบียน 'วนปลาย'; หากตรงกับและเปิดใช้งานการวนซ้ำตัวนับโปรแกรมจะถูกโหลดใหม่ด้วย 'วนรอบเริ่มต้น' (มิฉะนั้นจะเพิ่มขึ้น) หาก 'loop-count' เป็นศูนย์การวนซ้ำจะถูกปิดใช้งาน มิฉะนั้น 'จำนวนลูป' จะลดลง

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


ฉันคุ้นเคยกับการเพิ่มทวีคูณ แต่โมดูโลทำการจัดการและเรียกใช้โค้ดที่เรียกใช้ซ้ำได้ฟรีเป็นคุณลักษณะที่ฉันไม่คุ้นเคย
Kevin Vermeer

1
คุณมีคำตอบที่ดีมากและมันยอดเยี่ยมที่คุณทำงานได้ทั้งคำถามเก่าและใหม่ ฉันจะไปถึงและ upvote ทุกคำตอบของคุณถ้ามันไม่ได้สำหรับการตรวจสอบการทุจริตขั้นตอนวิธีและหมวกตัวแทนในชีวิตประจำวัน คาดว่าสองสามวันต่อวัน! ติดตามการทำงานที่น่ากลัว!
Kevin Vermeer

@reemrevnivek: ดีใจที่คุณพบคำตอบของฉันมีประโยชน์ ดังที่ฉันได้กล่าวไว้การออกแบบสำหรับการดึงข้อมูลทวีคูณทวีคูณเป็นคุณลักษณะที่ฉันไม่เคยเห็นในโปรเซสเซอร์ที่ไม่ใช่ DSP ARM ใช้งานได้ดีด้วยการดำเนินการที่ต้องการการทวีคูณและการกำหนดแอดเดรสแบบโมดูโล (ใช้ที่อยู่ที่มีประสิทธิภาพเช่น (R0 + (R1 >> 24)) สำหรับตารางขนาด 256 ไบต์) แต่ ARM ทั่วไปต้องการคำแนะนำสี่ข้อ DSP ทำในรอบเดียว
supercat

MAC คือคำสั่งตัวถูกดำเนินการสามตัว a <- a + b * c ไม่ใช่สอง
Trismegistos

@Trismegistos: การดำเนินการ MAC ที่ทำซ้ำ N-item จะเกี่ยวข้องกับตัวถูกดำเนินการทั้งหมด 2N + 1 ไม่จำเป็นต้องดึงข้อมูลตัวสะสมก่อนแต่ละรายการและจัดเก็บในภายหลัง แม้ว่าตัวประมวลผลที่มีการเพิ่มทวีคูณแบบไม่ซ้ำกันอาจมีตัวถูกดำเนินการสามตัว แต่การทำซ้ำ MAC จะดึงตัวถูกดำเนินการสองตัวต่อรอบเท่านั้น
supercat

13

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

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


9

ข้อแตกต่างที่ใหญ่ที่สุดระหว่าง DSP และ uController มาตรฐานคือคุณสมบัติการคูณทวีคูณ (MAC) ของ DSP ที่ uC ไม่มี สิ่งนี้มีค่าหากคุณต้องการดำเนินการทางคณิตศาสตร์ในการประมวลผลสัญญาณดิจิตอลอย่างเช่น FFT (ตัวอย่างหนึ่ง) การทำ FFT ในไมโครคอนโทรลเลอร์มาตรฐานจะใช้เวลานานเมื่อเทียบกับการใช้งานบน MAC ของ DSP

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

นี่คือการสนทนาที่คล้ายกันในฟอรัมDSP : DSP กับ Microprocessor


ฉันเห็น Accumulator บนแผนภาพบล็อก DSP แต่ไม่รู้ว่ามันทำอะไร ดีแล้วที่รู้! ฉันเข้าใจว่า I2C และซีเรียลนั้นไม่เหมือนกับการประมวลผลรูปคลื่นเมื่อคุณส่งข้อมูล ASCII แต่อุปกรณ์ต่อพ่วงบางอย่าง (การเร่งความเร็วแบบเข้าถึงอนุกรม, A / D ภายนอก, GPS, ฯลฯ ) เข้ารหัสสัญญาณรูปคลื่นในกระแสข้อมูลของพวกเขา เป็น DSP อย่างใด!
เควิน Vermeer

3
การประมวลผลสัญญาณส่วนใหญ่ประกอบด้วยการฝึกอบรมเชิงคณิตศาสตร์และ / หรือเวกเตอร์คูณกัน กระบวนการทำสิ่งนี้ให้ผลลัพธ์เป็นคำตอบมากมาย = a การคำนวณประเภทb + c d + e * f บน cpu ที่ไม่มี MAC ที่ใช้คำแนะนำมากมายในการทำเช่นนั้นด้วย MAC มันสามารถเร็วขึ้นหลายเท่า
Mark

1
ความคิดเห็นนี้แบนออกผิด ไม่ใช่ทั้งหมด แต่ MCUs จำนวนมากรวมตัวคูณฮาร์ดแวร์ด้วยฟังก์ชัน MAC สิ่งนี้ไม่เกี่ยวข้องกับความแตกต่างระหว่าง DSP และ MCU ใช่ DSP มีแนวโน้มที่จะมี MAC มากกว่า MCU แต่มีความแตกต่างพื้นฐานมากกว่าฟีเจอร์ขนาดเล็กนี้มาก

2
หากคุณหมุนนาฬิกากลับไป 15 ปีคุณจะเห็นว่าแทบไม่มี MCU ในคุณสมบัตินี้ หากคุณนำ MAC หรือคุณสมบัติที่เทียบเท่าออกจาก DSP คุณสามารถพูดอย่างตรงไปตรงมาว่าคุณมี DSP หรือไม่ แน่นอนว่าฉันไม่ต้องการซื้อถ้าไม่มีมันหรือมีบางอย่างใกล้เคียง มีความแตกต่างทางสถาปัตยกรรมเมื่อคุณเข้าสู่ Harvard vs. von Neuman และการเข้าถึงหน่วยความจำ แต่ฉันก็ได้รับคำตอบง่ายๆโดยไม่ต้องอธิบายอย่างละเอียด ฉันคิดว่าคุณรุนแรงเกินไปกับความคิดเห็นของคุณโดยการพูดว่า "ไม่เหมาะสม" คุณสามารถโพสต์คำตอบเกี่ยวกับความลึกที่คุณคิดว่าจะต้องครอบคลุม
Jay Atkinson

@adrian: ความคิดเห็นของคุณค่อนข้างแบนผิด หาก MCU มีฟังก์ชั่น MAC จะทำการวางตลาดในรูปแบบ DSP
Johan.A

5

สิ่งที่ใช้ในการแยก DSP ออกจากกันคือการเพิ่มประสิทธิภาพสำหรับการดำเนินการทางคณิตศาสตร์โดยเฉพาะอย่างยิ่งการคูณแม้ว่าวันนี้มันไม่ใช่เรื่องแปลกสำหรับไมโครคอนโทรลเลอร์ที่จะมาพร้อมกับคำแนะนำในการคูณและการหาร อาจมีข้อได้เปรียบในการประมวลผลสัญญาณด้วยชิป DSP ตราบเท่าที่บางคนมีการสนับสนุนฮาร์ดแวร์สำหรับคณิตศาสตร์จุดคงที่ (เช่น 'IQ' lib 'TI' TMS320s) ในขณะที่ไมโครมีแนวโน้มที่จะรวมหน่วยจำนวนเต็มเท่านั้น

โดยส่วนตัวเมื่อต้องเผชิญกับการเลือกระหว่างทั้งสองสำหรับการออกแบบฉันจะพยายามจัดหมวดหมู่ว่าแอปพลิเคชันที่เรียกว่าสำหรับการคำนวณซ้ำโดยใช้ตรรกะการเปลี่ยนโหมดเป็นครั้งคราวเท่านั้นหรือต้องดำเนินการลำดับการคำนวณสั้น ๆ ตามที่ต้องการ อดีตจะเป็น DSP, หลังไมโคร

และแน่นอนว่ามีสิ่งสนุก ๆ เช่น OMAP ที่มีทั้งคู่ = P


1
ฉันคิดว่าฉันเข้าใจความแตกต่างในเจตนา (ย่อหน้าที่สองของคุณ) แต่ฉันไม่แน่ใจว่าทำไมฉันจะทำอย่างนั้นเมื่อไมโครไม่มีความสามารถทางคณิตศาสตร์เหมือน DSP และ DSP มีชุดอุปกรณ์ต่อพ่วงแบบไมโคร อย่างที่ฉันพูดใน OP ของฉัน dsPIC33 และ PIC24 สามารถมีชุดคุณลักษณะที่เกือบเหมือนกันและราคาที่เหมือนกัน แก้ไขฉันถ้าฉันผิด แต่ในขณะที่ DSP มีสิ่งอำนวยความสะดวกในการประมวลผลซ้ำฉันไม่คิดว่า PIC24 (หรือไมโครอื่น ๆ ที่ฉันเคยดู) มีข้อได้เปรียบเหนือ DSP ในการเปลี่ยนโหมดเช่นเดียวกับคู่ ไปป์ไลน์หรือ Flash ที่เร็วกว่า
Kevin Vermeer

@reemrevnivek: ดังนั้นคุณพูดทำไมไม่เลือกเสมอ DSP
JustJeff

@ JustJeff: ใช่นั่นคือสิ่งที่ฉันพูด
Kevin Vermeer

1

อีกคุณสมบัติที่เป็นไปได้ที่คำสั่ง MAC สามารถทำได้คือการเพิ่มรีจิสเตอร์โดยอัตโนมัติซึ่งชี้ไปที่หลายหลาก ฉันตั้งโปรแกรม Zilog DSP ที่ใช้แกน Clarkspur (16 บิตคงที่) มันเป็นการแปรผันของสถาปัตยกรรม Harvard ที่มีสามบัสทำให้สามารถเข้าถึงหน่วยความจำได้สามส่วนพร้อมกัน: Instruction memory, data ram bank 1 และ data ram bank 2 ด้วยกระแสข้อมูลใน ram ธนาคารหนึ่งและสัมประสิทธิ์อื่น ทำ FIR filter ด้วยหนึ่งรอบคำสั่งต่อการดำเนินการเพิ่ม MAC / ตัวชี้ ใน C คำสั่งเดียวดูเหมือนว่า:

Accumulator + = rambank1 [r1 ++] * rambank2 [r2 ++];

และแน่นอนคำแนะนำนี้ถูกทำซ้ำสำหรับแต่ละสัมประสิทธิ์

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

ในการเปรียบเทียบ OP ของ Microchip Pic และ DSPic มันเป็นความเข้าใจของฉันเมื่อ DSPic ได้รับการแนะนำว่าส่วนใหญ่เป็นเพียง Pic ที่มีคำสั่ง MAC และคุณสมบัติอื่น ๆ อีกสองสามประการซึ่งสามารถเร่งความเร็วให้ไมโครคอนโทรลเลอร์ทำหน้าที่ประมวลผลสัญญาณได้ (เนื่องจากยังขาดคุณสมบัติอื่น ๆ ที่กล่าวถึง) อาจมีการผลักดันคำศัพท์เพื่อเรียกว่า DSP MSP430 นั้นยังมีอยู่ในรุ่นที่มี MAC ฮาร์ดแวร์ แต่ไม่มีใครเรียกว่า DSP

ฉันจำได้ว่าเมื่อ 10 ถึง 15 ปีก่อนอ่านว่าโปรเซสเซอร์หลักจาก Intel เพิ่ม MAC และคำสั่งที่คล้ายกันในการประมวลผลสัญญาณ "ดั้งเดิม" (แทนที่จะใช้การ์ดเอ็กซ์แพนชันที่มีโปรเซสเซอร์ DSP เฉพาะซึ่งเป็นเรื่องปกติสำหรับการผลิตเสียงในปี 1990) โมเด็มบัส PC แบบ 56k เป็นเพียงตัวแปลง A / D และ D / A และอาศัยหน่วยประมวลผลหลักเพื่อทำการเข้ารหัสสัญญาณโมเด็มและฟังก์ชั่นการถอดรหัสดังนั้นจึงมีความต้องการตัวประมวลผลที่มีประสิทธิภาพมากขึ้น สื่อใช้เช่นการแก้ไข / เข้ารหัส / ถอดรหัสรวมถึงการบันทึกเสียง / การผลิตเสียงจะถูกเร่งขึ้นอย่างมากตามคำแนะนำประเภท DSP


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