Sự khác biệt giữa DSP và vi điều khiển tiêu chuẩn là gì?


84

Tôi hiểu rằng DSP được tối ưu hóa để xử lý tín hiệu số, nhưng tôi không chắc điều đó ảnh hưởng đến nhiệm vụ chọn IC như thế nào. Hầu hết mọi thứ tôi làm với một vi điều khiển đều liên quan đến việc xử lý tín hiệu số!

Ví dụ, hãy so sánh Microchip DSPP30 hoặc 33 DSP phổ biến và cung cấp 16 bit khác của họ, vi điều khiển cho mục đích chung PIC24. DSPIC và PIC có thể được cấu hình để có cùng bộ nhớ và tốc độ, chúng có các bộ ngoại vi tương tự, khả năng A / D tương tự, số pin, vẽ hiện tại, v.v. Sự khác biệt lớn duy nhất xuất hiện trong danh sách của Digikey là vị trí của dao động. Tôi không thể nói sự khác biệt bằng cách xem giá (hoặc bất kỳ lĩnh vực nào khác, cho vấn đề đó.)

Nếu tôi muốn làm việc với một vài cảm biến bên ngoài bằng nhiều giao thức khác nhau (I2C, SPI, v.v.), hãy thực hiện một số chuyển đổi A / D, lưu trữ một số dữ liệu trên một số đèn flash nối tiếp, phản hồi một số nút và đẩy dữ liệu ra một ký tự LCD và trên FT 232 (một hệ thống nhúng khá chung), tôi nên sử dụng chip nào? Dường như DSP sẽ tụt lại phía sau PIC theo bất kỳ cách nào và nó cung cấp "Công cụ DSP" bí ẩn này. Mã của tôi luôn luôn làm toán và thỉnh thoảng tôi cần số dấu phẩy động hoặc số phân số, nhưng tôi không biết liệu tôi có được lợi từ việc sử dụng DSP hay không.

Một so sánh tổng quát hơn giữa DSP và vi điều khiển của nhà cung cấp khác sẽ hữu ích như nhau; Tôi chỉ sử dụng những thứ này như một điểm khởi đầu để thảo luận.

Câu trả lời:


64

Thành thật mà nói, ranh giới giữa hai người gần như đã biến mất và có những bộ xử lý có thể được phân loại thành cả hai (ví dụ AD Blackfin).

Nói chung:

Vi điều khiển là bộ xử lý toán số nguyên với hệ thống con ngắt. Một số có thể có các đơn vị nhân phần cứng, một số thì không, v.v. Điểm là chúng được thiết kế cho toán đơn giản và chủ yếu để điều khiển các thiết bị khác.

DSP là bộ xử lý được tối ưu hóa để xử lý tín hiệu truyền phát. Họ thường có các hướng dẫn đặc biệt giúp tăng tốc các tác vụ phổ biến như tích lũy nhân lên trong một lệnh. Họ cũng thường có các hướng dẫn vectơ hoặc SIMD khác. Trong lịch sử, chúng không làm gián đoạn các hệ thống dựa trên và hoạt động với các hệ thống bộ nhớ không chuẩn được tối ưu hóa cho mục đích của chúng khiến chúng khó lập trình hơn. Chúng thường được thiết kế để hoạt động trong một vòng lặp lớn xử lý luồng dữ liệu. DSP có thể được thiết kế như bộ xử lý số nguyên, điểm cố định hoặc dấu phẩy động.

Trước đây, nếu bạn muốn xử lý luồng âm thanh, luồng video, điều khiển động cơ nhanh, bất cứ điều gì cần xử lý luồng dữ liệu ở tốc độ cao, bạn sẽ tìm đến DSP.

Nếu bạn muốn điều khiển một số nút, đo nhiệt độ, chạy màn hình LCD ký tự, điều khiển các IC khác đang xử lý mọi thứ, bạn sẽ sử dụng vi điều khiển.

Ngày nay, bạn chủ yếu tìm thấy các bộ xử lý loại vi điều khiển có mục đích chung với các hướng dẫn giống như DSP hoặc với các bộ đồng xử lý chip để xử lý dữ liệu truyền phát hoặc các hoạt động DSP khác. Bạn không thấy DSP thuần túy được sử dụng nhiều nữa ngoại trừ trong các ngành cụ thể.

Thị trường bộ xử lý rộng hơn và mờ hơn nhiều so với trước đây. Ví dụ, tôi hầu như không coi ARM cortex-A8 SoC là bộ điều khiển vi mô nhưng nó có thể phù hợp với định nghĩa tiêu chuẩn, đặc biệt là trong gói PoP.

EDIT: Hình tôi sẽ thêm một chút để giải thích khi nào / nơi tôi đã sử dụng DSP ngay cả trong thời của bộ xử lý ứng dụng.

Một sản phẩm gần đây tôi thiết kế đang thực hiện xử lý âm thanh với các kênh đầu vào X và kênh đầu ra X trên mỗi 'vùng'. Mục đích sử dụng cho sản phẩm có nghĩa là nó thường sẽ ngồi đó làm việc của nó, xử lý các kênh âm thanh trong nhiều năm mà không có ai chạm vào nó. Việc xử lý âm thanh bao gồm các bộ lọc và chức năng âm học khác nhau. Hệ thống này cũng "có khả năng cắm nóng" với khả năng thêm một số 'vùng' độc lập tất cả trong một hộp. Đó là tổng cộng 3 thiết kế PCB (bo mạch chính, bảng nối đa năng và mô-đun cắm) và bảng nối đa năng hỗ trợ 4 mô-đun. Khá là một dự án thú vị khi tôi thực hiện nó một mình, tôi phải thiết kế hệ thống, sơ đồ, bố trí PCB và phần sụn.

Bây giờ tôi có thể thực hiện toàn bộ với một lõi ARM cồng kềnh, tôi chỉ cần khoảng 50MIPS DSP hoạt động trên các số điểm cố định 24 bit cho mỗi vùng. Nhưng bởi vì tôi biết hệ thống này sẽ hoạt động trong một thời gian rất dài và biết rằng điều quan trọng là nó không bao giờ nhấp hoặc bật hoặc bất cứ thứ gì tương tự. Tôi đã chọn thực hiện nó với DSP công suất thấp cho mỗi vùng và một vi điều khiển PIC duy nhất đóng vai trò quản lý hệ thống. Theo cách này, ngay cả khi một trong các chức năng uC bị hỏng, có thể là một cuộc tấn công DDOS trên cổng Ethernet của nó, DSP sẽ vui vẻ tiếp tục tránh xa và có khả năng không ai biết.

Vì vậy, vi điều khiển đã đóng vai trò chạy LCD 2 ký tự, một số nút, theo dõi nhiệt độ và điều khiển quạt (cũng có một số bộ khuếch đại âm thanh công suất khá cao trên mỗi bảng) và thậm chí còn phục vụ một trang web kiểu AJAX qua ethernet. Nó cũng quản lý DSP thông qua kết nối nối tiếp.

Vì vậy, đó là một tình huống mà ngay cả trong những ngày mà tôi có thể đã sử dụng một lõi ARM duy nhất để làm mọi thứ, thiết kế đã ra lệnh cho một IC xử lý tín hiệu chuyên dụng.

Các lĩnh vực khác mà tôi đã chạy vào DSP:

* Âm thanh High End - Thiết bị thu và xử lý chất lượng buổi hòa nhạc rất cao

* Xử lý Radar - Tôi cũng đã sử dụng lõi ARM cho việc này trong các ứng dụng cấp thấp.

* Chế biến Sonar

* Tầm nhìn máy tính thời gian thực

Đối với hầu hết các phần, phần thấp và giữa của không gian âm thanh / video / tương tự đã được các bộ xử lý ứng dụng kết hợp với CPU có mục đích chung với các động cơ giảm tải co-Proc cho các ứng dụng khác nhau.


1
Một sự bổ sung khác có lẽ. Trong một ứng dụng có khoảng 80 dòng I / O và 12 đầu vào tương tự, chúng tôi hiện đang sử dụng một bộ vi điều khiển duy nhất với một FPGA được liên kết để xử lý các luồng I / O. Các giải pháp như thế này đang trở nên phổ biến hơn. Chúng tôi đang sử dụng hệ thống này: embedarm.com/products/board-detail.php?product=ts-7800 để giúp phát triển nhanh chóng trong một thời gian ngắn và tôi phải nói rằng nó hoạt động rất tốt (Tất nhiên là giá của một sản phẩm như vậy có thể không phù hợp cho các ứng dụng có giá bán thấp hơn / giá trị dự kiến.) - Wouter Simons 33 giây trước
Wouter Simons

Không phải tất cả các vi điều khiển có ngắt. Trong các ứng dụng quan trọng, chúng không bao giờ được sử dụng. Case in point: bộ điều khiển Viper được sử dụng trong các máy bay chiến đấu.
stevenvh

15

Nhiều bộ xử lý tín hiệu số bao gồm nhiều chức năng không có trong các bộ xử lý 'thông thường':

  1. Khả năng thực hiện tích lũy nhân, với cả hai toán hạng được tìm nạp từ RAM, với tốc độ một chu kỳ trên mỗi cặp toán hạng.
  2. Khả năng thực hiện một số dạng địa chỉ 'modulo' hoặc 'gói', để cho phép bộ đệm được sử dụng nhiều lần mà không phải sử dụng mã thủ công để đảm bảo bọc con trỏ. Ví dụ, 3205x có thanh ghi 'bắt đầu bộ đệm' và 'kết thúc bộ đệm'; nếu mã cố gắng tăng hoặc giảm một thanh ghi con trỏ trỏ đến 'bộ đệm bắt đầu', bộ xử lý sẽ tải con trỏ với 'kết thúc bộ đệm'. 3205x cũng có chế độ mang ngược, trong đó bổ sung địa chỉ truyền MSB sang LSB, thay vì ngược lại; điều này cho phép đánh địa chỉ modulo-N nếu N là lũy thừa 2, mặc dù các thứ được lưu trữ theo thứ tự lộn xộn.
  3. Khả năng chỉ định rằng một lệnh được thực thi 'n' lần mà không cần phải tìm nạp lại. Một số bộ xử lý như 8088 bao gồm điều này cho một vài hướng dẫn, nhưng nhiều DSP cho phép điều này theo nhiều hướng dẫn.
  4. Khả năng xác định rằng một khối mã được thực thi lặp đi lặp lại, tối đa lần, mà không cần phải phân nhánh. Trước mỗi lần tìm nạp mã, bộ đếm chương trình được kiểm tra đối với thanh ghi 'loop-end'; nếu nó khớp và lặp được bật, bộ đếm chương trình sẽ được tải lại với 'loop-start' (nếu không nó sẽ tăng lên). Nếu 'số vòng lặp' bằng 0, vòng lặp sẽ bị tắt; nếu không, "số vòng lặp" sẽ bị giảm.

Lưu ý rằng nhiều DSP sẽ có các bus riêng biệt để cho phép cả hai toán hạng tích lũy nhân được lấy đồng thời; Tôi chưa bao giờ thấy một DSP không có thể làm điều đó. Mặc dù tôi không biết bất kỳ tính năng nào mà chip phải 'thiếu' là DSP, nhưng không gian silicon bổ sung cần thiết để cho phép tìm nạp hai thao tác là không gian silicon không được sử dụng cho một số mục đích khác thường hữu dụng hơn.


Tôi đã quen thuộc với tích lũy nhân, nhưng địa chỉ modulo và thực thi mã không tìm nạp lặp lại là những tính năng tôi không quen thuộc.
Kevin Vermeer

1
Bạn có rất nhiều câu trả lời hay, và thật tuyệt khi bạn làm việc với cả câu hỏi cũ và mới. Tôi sẽ xem xét và nâng cấp tất cả các câu trả lời của bạn nếu không có thuật toán phát hiện gian lậngiới hạn hàng ngày . Tuy nhiên, mong đợi một vài ngày! Giữ công việc tuyệt vời!
Kevin Vermeer

@reemrevnivek: Vui mừng bạn thấy câu trả lời của tôi hữu ích. Như tôi đã lưu ý, thiết kế để nhân đôi số tích lũy là một tính năng tôi chưa từng thấy trên các bộ xử lý không DSP. ARM thực hiện tốt công việc với các hoạt động yêu cầu tích lũy nhiều lần và địa chỉ modulo (sử dụng địa chỉ hiệu quả, ví dụ (R0 + (R1 >> 24)) cho bảng 256 byte) nhưng ARM thông thường sẽ yêu cầu bốn hướng dẫn để làm gì DSP thực hiện trong một chu kỳ.
supercat

MAC là ba lệnh toán hạng a <- a + b * c không phải hai.
Trismegistos

@Trismegistos: Một hoạt động MAC lặp lại của N-item sẽ liên quan đến tổng số toán hạng 2N + 1. Không cần phải tìm nạp bộ tích lũy trước mỗi mục và lưu trữ sau đó. Trong khi các bộ xử lý có bội số không lặp lại có thể có ba toán hạng, MAC lặp lại sẽ chỉ tìm nạp hai toán hạng mỗi chu kỳ.
supercat

13

Một điều mà những người khác không đề cập là hành vi trên tràn số. Trong các bộ xử lý thông thường, điều này thường bao quanh từ giá trị tối đa đến giá trị tối thiểu.

Đối với việc sử dụng DSP thường có ít nhất một tùy chọn để sử dụng bão hòa thay thế. Nghĩa là, khi tràn giá trị vẫn ở giá trị cực đại, tạo ra ít biến dạng hơn và bắt chước tốt hơn hành vi của các mạch tương tự.


9

Sự khác biệt lớn nhất giữa DSP và uControll tiêu chuẩn là tính năng tích lũy nhân (MAC) của DSP mà uC không có. Điều này có giá trị nếu bạn muốn thực hiện toán xử lý tín hiệu số thực sự, chẳng hạn như FFT (một ví dụ). Thực hiện FFT trong một vi điều khiển tiêu chuẩn sẽ mất nhiều thời gian so với việc thực hiện nó trên MAC của DSP.

Xử lý tín hiệu I2C và nối tiếp không giống như xử lý dạng sóng trong DSP. Hoàn toàn khác nhau về cách xử lý đang diễn ra vì tín hiệu nối tiếp chỉ là tiếng đập.

Đây là một cuộc thảo luận tương tự trên một diễn đàn DSP : DSP so với Vi xử lý


Tôi thấy một Accumulator trên sơ đồ khối DSP, nhưng không biết nó đã làm gì. Tốt để biết! Tôi hiểu rằng I2C và nối tiếp không giống như xử lý dạng sóng khi bạn gửi dữ liệu ASCII, nhưng một số thiết bị ngoại vi (gia tốc truy cập nối tiếp, A / D bên ngoài, GPS, v.v. mã hóa dạng sóng trong luồng dữ liệu của chúng. vào DSP bằng cách nào đó!
Kevin Vermeer

3
hầu hết việc xử lý tín hiệu bao gồm về mặt toán học bao gồm các ma trận nhân và / hoặc vectơ với nhau. Quá trình thực hiện điều này dẫn đến rất nhiều câu trả lời = a b + c d + e * f tính toán loại. Trên một cpu không có MAC cần rất nhiều hướng dẫn để thực hiện, với MAC có thể nhanh hơn nhiều lần.
Đánh dấu

1
Nhận xét này là thẳng ra SAI. Không phải tất cả, nhưng nhiều MCU bao gồm hệ số nhân phần cứng với các chức năng MAC. Điều này không liên quan gì đến sự khác biệt giữa DSP và MCU. Đúng, DSP có nhiều khả năng có MAC hơn MCU, nhưng có nhiều khác biệt cơ bản hơn nhiều so với tính năng nhỏ này.

2
Nếu bạn quay ngược đồng hồ 15 năm, bạn sẽ thấy hầu như không có MCU nào với tính năng này. Nếu bạn lấy MAC hoặc tính năng tương đương ra khỏi DSP, bạn có thể thành thật nói rằng bạn có DSP không? Tôi chắc chắn sẽ không muốn mua nếu không có nó hoặc một cái gì đó quá gần. Có sự khác biệt về kiến ​​trúc khi bạn vào Harvard so với von Neuman và truy cập bộ nhớ, nhưng tôi đã đưa ra một câu trả lời đơn giản mà không cần phải giải thích chi tiết dài. Tôi nghĩ rằng bạn quá gay gắt với nhận xét của bạn bằng cách nói "Flat out WRONG". Bạn được chào đón để gửi một câu trả lời thảo luận về độ sâu mà bạn nghĩ cần phải được bảo hiểm.
Jay Atkinson

@adrian: Nhận xét của bạn là thẳng ra SAU. Nếu MCU có chức năng MAC, nó sẽ được bán trên thị trường dưới dạng DSP.
Johan.

5

Điều được sử dụng để phân biệt DSP là tối ưu hóa của chúng cho các hoạt động số học, đặc biệt là nhân, mặc dù ngày nay, không có gì lạ khi các bộ vi điều khiển được cung cấp các hướng dẫn nhân và chia. Vẫn có thể có một lợi thế để xử lý tín hiệu với chip DSP, trong khi một số trong số chúng có hỗ trợ phần cứng cho toán học điểm cố định (ví dụ: lib của TI TMS320s), trong khi micros có nhiều khả năng chỉ bao gồm các đơn vị nguyên.

Cá nhân, khi phải đối mặt với việc lựa chọn giữa hai thiết kế, tôi sẽ cố gắng phân loại xem ứng dụng có được tính toán lặp đi lặp lại chỉ với logic thay đổi chế độ không thường xuyên hay chỉ cần thực hiện các chuỗi tính toán ngắn khi cần. Cái trước sẽ là DSP, cái sau là micro.

Và sau đó, tất nhiên, có những điều thú vị như OMAP có cả hai. = P


1
Tôi nghĩ rằng tôi hiểu sự khác biệt về ý định (đoạn thứ hai của bạn), nhưng tôi không chắc tại sao tôi lại làm vậy khi micros không có khả năng toán học giống DSP và DSP có các bộ ngoại vi giống như vi mô. Như tôi đã nói trong OP của mình, DSPIC33 và PIC24 có thể có một bộ tính năng gần như giống hệt nhau và một mức giá giống hệt nhau. Sửa lỗi cho tôi nếu tôi sai, nhưng trong khi DSP có các phương tiện xử lý lặp đi lặp lại, tôi không nghĩ rằng PIC24 (hoặc bất kỳ vi mô nào khác mà tôi đã xem) có bất kỳ lợi thế nào so với DSP trong thay đổi chế độ, như là kép đường ống hoặc FLASH nhanh hơn.
Kevin Vermeer

@reemrevnivek: vậy bạn đang nói, tại sao không luôn luôn chọn DSP?
JustJeff

@JustJeff: Vâng, đó chính xác là những gì tôi đang nói.
Kevin Vermeer

1

Tuy nhiên, một tính năng khả thi khác mà lệnh MAC có thể có là tự động tăng các thanh ghi trỏ đến bội số. Tôi đã lập trình một DSP Zilog sử dụng lõi Clarkspur (điểm cố định 16 bit). Đó là một biến thể của kiến ​​trúc Harvard với ba bus, cho phép nó truy cập đồng thời ba vùng bộ nhớ: Bộ nhớ lệnh, ngân hàng ram dữ liệu 1 và ngân hàng ram dữ liệu 2. Với một luồng dữ liệu trong một ngân hàng ram và hệ số khác, một hệ thống có thể thực hiện bộ lọc FIR với một lệnh đơn chu kỳ cho mỗi thao tác tăng MAC / con trỏ. Trong C, lệnh đơn này trông giống như:

Tích lũy + = rambank1 [r1 ++] * rambank2 [r2 ++];

Và tất nhiên hướng dẫn này được lặp lại cho từng hệ số.

Cũng không được chỉ ra trước đó, DSP (ít nhất là những cái cũ tôi đã sử dụng) nói chung là kiến ​​trúc RISC và được thiết kế với nhiều hoặc hầu hết các lệnh thực thi trong một chu kỳ (hoặc trong cùng một số chu kỳ). Điều này cho phép khả năng lập trình cho phản ứng ngắt xác định (số xung nhịp cố định giữa dòng ngắt hoạt động và lệnh đầu tiên trong ISR được thực thi), trong khi hầu hết các bộ xử lý khác phản ứng với các ngắt trong số chu kỳ xung nhịp khác nhau, tùy thuộc vào điều gì điểm trong một lệnh đa chu kỳ xảy ra ngắt. Thời gian thực hiện cố định giúp loại bỏ jitter nhiều thời gian trong các đầu ra lặp đi lặp lại.

Theo so sánh của OP về Microchip Pic và DSPic, tôi hiểu khi DSPic được giới thiệu rằng nó chủ yếu chỉ là một Pic với hướng dẫn MAC và một vài tính năng bổ sung khác, chắc chắn có thể tăng tốc một vi điều khiển thực hiện các chức năng xử lý tín hiệu, nhưng (do không có bất kỳ tính năng nào khác được thảo luận), nó có thể đang đẩy thuật ngữ để gọi nó là DSP. MSP430 cũng có sẵn trong các phiên bản có MAC phần cứng, nhưng không ai gọi đó là DSP.

Tôi nhớ lại 10 đến 15 năm trước khi đọc rằng bộ xử lý chính của Intel đã thêm MAC và hướng dẫn tương tự để xử lý tín hiệu "gốc" (thay vì trên thẻ mở rộng với bộ xử lý DSP chuyên dụng, vốn phổ biến cho sản xuất âm thanh vào những năm 1990) - một số không tốn kém Modem bus PC quay số 56k chỉ là bộ chuyển đổi A / D và D / A, và dựa vào bộ xử lý chính để thực hiện các chức năng mã hóa và giải mã tín hiệu modem, do đó có nhu cầu sử dụng bộ xử lý hiệu quả hơn ngay tại đó. Các phương tiện sử dụng như chỉnh sửa / mã hóa / giải mã video cũng như ghi / sản xuất âm thanh được tăng tốc rất nhiều bởi các hướng dẫn loại DSP.


Không có gì mới dưới ánh mặt trời. <g>Quay trở lại những ngày đầu của C, các toán tử tăng và giảm được thiết kế để được dịch trực tiếp thành các hướng dẫn phần cứng duy nhất trên PDP.
Pete Becker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.