Apa perbedaan antara DSP dan mikrokontroler standar?


84

Saya mengerti bahwa DSP dioptimalkan untuk pemrosesan sinyal digital, tapi saya tidak yakin bagaimana itu berdampak pada tugas memilih IC. Hampir semua yang saya lakukan dengan mikrokontroler melibatkan pemrosesan sinyal digital!

Sebagai contoh, mari kita bandingkan Microchip dsPIC30 atau 33 DSP yang populer dan penawaran 16-bit lainnya, mikrokontroler tujuan umum PIC24. DsPIC dan PIC dapat dikonfigurasi untuk memiliki memori dan kecepatan yang sama, mereka memiliki perangkat periferal yang sama, kemampuan A / D yang sama, jumlah pin, penarikan arus, dll. Satu-satunya perbedaan utama yang muncul pada daftar Digikey adalah lokasi osilator. Saya tidak bisa membedakannya dengan melihat harga (atau bidang lainnya, dalam hal ini.)

Jika saya ingin bekerja dengan beberapa sensor eksternal menggunakan berbagai protokol (I2C, SPI, dll.), Lakukan beberapa konversi A / D, simpan beberapa data pada beberapa flash serial, tanggapi beberapa tombol, dan dorong data ke sebuah karakter LCD dan lebih dari FT232 (sistem tertanam yang cukup generik), chip mana yang harus saya gunakan? Tampaknya DSP tidak akan ketinggalan PIC, dan menawarkan "Mesin DSP" yang misterius ini. Kode saya selalu menghitung, dan sesekali saya membutuhkan angka mengambang atau pecahan, tetapi saya tidak tahu apakah saya akan mendapat manfaat dari menggunakan DSP.

Perbandingan yang lebih umum antara DSP dan mikrokontroler vendor lain akan sama bermanfaatnya; Saya hanya menggunakan ini sebagai titik awal untuk diskusi.

Jawaban:


64

Sejujurnya, garis antara keduanya hampir hilang saat ini dan ada prosesor yang dapat diklasifikasikan sebagai keduanya (AD Blackfin misalnya).

Secara umum:

Mikrokontroler adalah prosesor matematika integer dengan sub sistem interupsi. Beberapa mungkin memiliki unit perkalian perangkat keras, beberapa tidak, dll. Intinya adalah mereka dirancang untuk matematika sederhana, dan sebagian besar untuk mengontrol perangkat lain.

DSP adalah prosesor yang dioptimalkan untuk pemrosesan sinyal streaming. Mereka sering memiliki instruksi khusus yang mempercepat tugas-tugas umum seperti bertambah banyak dalam satu instruksi. Mereka juga sering memiliki instruksi vektor atau SIMD lainnya. Secara historis mereka tidak mengganggu sistem berbasis dan dioperasikan dengan sistem memori non-standar dioptimalkan untuk tujuan mereka membuat mereka lebih sulit untuk diprogram. Mereka biasanya dirancang untuk beroperasi dalam satu lingkaran besar yang memproses aliran data. DSP dapat dirancang sebagai integer, titik tetap atau prosesor titik mengambang.

Secara historis jika Anda ingin memproses stream audio, stream video, melakukan kontrol motorik cepat, apa pun yang diperlukan memproses aliran data dengan kecepatan tinggi Anda akan melihat ke DSP.

Jika Anda ingin mengontrol beberapa tombol, mengukur suhu, menjalankan LCD karakter, mengontrol IC lain yang memproses sesuatu, Anda akan menggunakan mikrokontroler.

Hari ini, Anda sebagian besar menemukan prosesor tipe mikrokontroler tujuan umum dengan instruksi yang dibangun seperti DSP atau dengan co-prosesor chip untuk menangani data streaming atau operasi DSP lainnya. Anda tidak melihat DSP murni banyak digunakan kecuali di industri tertentu.

Pasar prosesor jauh lebih luas dan lebih buram daripada biasanya. Sebagai contoh saya hampir tidak mempertimbangkan ARM cortex-A8 SoC mikro-controller tetapi mungkin cocok dengan definisi standar, terutama dalam paket PoP.

EDIT: Figured saya akan menambahkan sedikit untuk menjelaskan kapan / di mana saya telah menggunakan DSP bahkan pada hari-hari prosesor aplikasi.

Produk terbaru yang saya rancang sedang melakukan pemrosesan audio dengan saluran input X dan saluran output X per 'zona'. Penggunaan yang dimaksudkan untuk produk berarti bahwa sering kali duduk di sana melakukan hal tersebut, memproses saluran audio selama bertahun-tahun tanpa ada yang menyentuhnya. Pemrosesan audio terdiri dari berbagai filter dan fungsi akustik. Sistem ini juga "hot plugable" dengan kemampuan untuk menambahkan beberapa 'zona' independen semua dalam satu kotak. Itu total 3 desain PCB (mainboard, backplane dan plug in module) dan backplane didukung 4 plug in modules. Proyek yang cukup menyenangkan seperti yang saya lakukan solo, saya harus melakukan desain sistem, skema, tata letak PCB dan firmware.

Sekarang saya bisa melakukan semuanya dengan satu inti ARM besar, saya hanya membutuhkan sekitar 50MIPS kerja DSP pada 24bit angka titik tetap per zona. Tetapi karena saya tahu sistem ini akan beroperasi untuk waktu yang sangat lama dan tahu sangat penting bahwa itu tidak pernah klik atau pop atau semacamnya. Saya memilih untuk mengimplementasikannya dengan DSP daya rendah per zona dan mikrokontroler PIC tunggal yang memainkan peran manajemen sistem. Dengan cara ini bahkan jika salah satu fungsi UC jatuh, mungkin serangan DDOS pada port Ethernet-nya, DSP akan dengan senang hati terus menjauh dan kemungkinan tidak ada yang akan tahu.

Jadi mikrokontroler berperan menjalankan 2 karakter garis LCD, beberapa tombol, pemantauan suhu dan kontrol kipas (ada juga beberapa amplifier audio daya yang cukup tinggi di setiap papan) dan bahkan melayani halaman web gaya AJAX melalui ethernet. Itu juga mengelola DSP melalui koneksi serial.

Jadi itulah situasi di mana bahkan pada hari-hari di mana saya bisa menggunakan inti ARM tunggal untuk melakukan segalanya, desainnya menentukan IC pemrosesan sinyal khusus.

Area lain tempat saya mengalami DSP:

* Audio Kelas Atas - Receiver yang sangat kelas atas dan perlengkapan mixing dan pemrosesan kualitas konser

* Pemrosesan Radar - Saya juga menggunakan core ARM untuk ini di aplikasi low-end.

* Pemrosesan Sonar

* Visi komputer waktu nyata

Untuk sebagian besar, ujung rendah dan menengah dari ruang audio / video / serupa telah diambil alih oleh prosesor aplikasi yang menggabungkan CPU tujuan umum dengan mesin co-proc offload untuk berbagai aplikasi.


1
Tambahan lain mungkin. Dalam aplikasi dengan sekitar 80 jalur I / O dan 12 input analog, kami sekarang menggunakan mikrokontroler tunggal dengan FPGA yang terhubung untuk menangani aliran I / O. Solusi seperti ini menjadi lebih umum. Kami menggunakan sistem ini: embeddedarm.com/products/board-detail.php?product=ts-7800 untuk membuat pengembangan cepat untuk Time-to-Market singkat dan saya harus mengatakan itu bekerja dengan sangat baik (Tentu saja harga produk seperti itu mungkin tidak cocok untuk aplikasi dengan harga jual / nilai yang diharapkan lebih rendah.) - Wouter Simons 33 detik yang lalu
Wouter Simons

Tidak semua mikrokontroler mengalami gangguan. Dalam aplikasi mission-critical mereka tidak pernah digunakan. Contoh kasus: pengontrol Viper yang digunakan dalam pesawat tempur.
stevenvh

15

Banyak prosesor sinyal digital menyertakan beragam fungsi yang tidak ditemukan dalam prosesor 'biasa':

  1. Kemampuan untuk melakukan akumulasi multiply, dengan kedua operan diambil dari RAM, pada tingkat satu siklus per pasang operan.
  2. Kemampuan untuk melakukan beberapa bentuk pengalamatan 'modulo' atau 'pembungkus', sehingga memungkinkan penyangga untuk digunakan berulang kali tanpa harus menggunakan kode manual untuk memastikan pembungkus pointer. 3205x, misalnya, memiliki register 'buffer start' dan 'buffer end'; jika kode mencoba menambah atau mengurangi register pointer yang menunjuk ke 'buffer start', prosesor akan memuat pointer dengan 'buffer end'. 3205x juga memiliki mode reverse-carry, di mana penambahan alamat merambat membawa MSB ke LSB, bukan sebaliknya; ini memungkinkan pengalamatan modulo-N jika N berkekuatan 2, meskipun barang disimpan dalam urutan yang campur aduk.
  3. Kemampuan untuk menentukan bahwa suatu instruksi dieksekusi 'n' kali tanpa perlu diambil ulang. Beberapa prosesor seperti 8088 menyertakan ini untuk beberapa instruksi, tetapi banyak DSP mengizinkan ini pada banyak instruksi.
  4. Kemampuan untuk menentukan bahwa blok kode dieksekusi berulang kali, hingga 'n' kali, tanpa perlu melakukan percabangan. Sebelum setiap kode diambil, penghitung program diperiksa terhadap register 'loop-end'; jika cocok, dan perulangan diaktifkan, penghitung program akan dimuat ulang dengan 'loop-start' (jika tidak maka akan bertambah). Jika 'loop-count' adalah nol, perulangan akan dinonaktifkan; jika tidak 'loop-count' akan dikurangi.

Perhatikan bahwa banyak DSP akan memiliki bus terpisah untuk memungkinkan kedua operand dari akumulasi multiply diambil secara bersamaan; Saya belum pernah melihat non-DSP yang bisa melakukan itu. Sementara saya tidak mengetahui fitur apa pun yang chip harus 'kekurangan' untuk menjadi DSP, ruang silikon tambahan yang diperlukan untuk memungkinkan operasi dua kali pengambilan adalah ruang silikon yang tidak digunakan untuk tujuan lain yang lebih bermanfaat secara umum.


Saya sudah terbiasa dengan akumulasi multiply, tetapi pengalamatan modulo dan eksekusi kode bebas-ambil berulang adalah fitur yang tidak saya kenal.
Kevin Vermeer

1
Anda memiliki banyak jawaban bagus, dan itu keren karena Anda mengerjakan pertanyaan lama dan baru. Saya akan memeriksa dan memutakhirkan semua jawaban Anda jika bukan karena algoritme deteksi penipuan dan batas waktu harian . Berharap beberapa hari! Pertahankan kerja yang luar biasa!
Kevin Vermeer

@reemrevnivek: Senang Anda menemukan tanggapan saya bermanfaat. Seperti yang saya perhatikan, desain untuk double-fetch multiply-akumulasi adalah fitur yang belum saya lihat pada prosesor non-DSP. ARM melakukan pekerjaan yang baik dengan operasi yang membutuhkan pengalamatan multiplikasi dan modulo (menggunakan alamat efektif mis (R0 + (R1 >> 24)) untuk tabel 256-byte) tetapi ARM tipikal memerlukan empat instruksi untuk melakukan apa DSP bekerja dalam satu siklus.
supercat

MAC adalah tiga instruksi operan a <- a + b * c bukan dua.
Trismegistos

@ Trismegistos: Operasi MAC berulang-item N akan melibatkan total 2N + 1 operan. Tidak perlu mengambil akumulator sebelum setiap item dan menyimpannya sesudahnya. Sementara prosesor dengan penambahan multipel yang tidak berulang dapat memiliki tiga operan, MAC yang berulang hanya akan mengambil dua operan per siklus.
supercat

13

Satu hal yang tidak disebutkan adalah perilaku overflow numerik. Dalam prosesor normal ini biasanya membungkus sekitar dari nilai maksimal ke nilai minimal.

Untuk penggunaan DSP sering kali setidaknya ada opsi untuk menggunakan saturasi . Yaitu, pada overflow nilainya tetap pada nilai maksimal, yang menghasilkan lebih sedikit distorsi dan lebih baik meniru perilaku sirkuit analog.


9

Perbedaan terbesar antara DSP dan uController standar adalah fitur multiply akumulasi (MAC) yang tidak dimiliki UC. Ini berharga jika Anda ingin melakukan matematika pemrosesan sinyal digital sejati seperti FFT (satu contoh). Melakukan FFT dalam mikrokontroler standar akan memakan waktu lama dibandingkan dengan melakukannya pada MAC dari DSP.

Memproses sinyal I2C dan serial tidak sama dengan memproses bentuk gelombang dalam DSP. Pemrosesan yang benar-benar berbeda terjadi karena sinyal serial hanya sedikit.

Berikut diskusi serupa di forum DSP : DSP vs. Microprocessor


Saya melihat Accumulator pada diagram blok DSP, tetapi tidak tahu apa yang dilakukannya. Senang mendengarnya! Saya mengerti bahwa I2C dan serial tidak sama dengan memproses bentuk gelombang ketika Anda mengirim data ASCII, tetapi beberapa perangkat (akselerometer akses-serial, A / D eksternal, GPS, dll. Menyandikan bentuk gelombang di aliran data mereka. Ia harus mendapatkan entah bagaimana ke dalam DSP!
Kevin Vermeer

3
sebagian besar pemrosesan sinyal secara matematis terdiri dari mengalikan matriks dan / atau vektor secara bersamaan. Proses melakukan ini menghasilkan banyak jawaban = a b + c d + e * f perhitungan jenis. Pada cpu tanpa MAC yang membutuhkan banyak instruksi untuk dilakukan, dengan MAC itu bisa berkali-kali lebih cepat.
Tandai

1
Komentar ini datar SALAH. Tidak semua, tetapi banyak MCU menyertakan pengganda perangkat keras dengan fungsi MAC. Ini tidak ada hubungannya dengan perbedaan DSP vs MCU. Ya, DSP lebih cenderung memiliki MAC daripada MCU, tetapi ada perbedaan yang jauh lebih mendasar daripada fitur kecil ini.

2
Jika Anda memutar jam kembali 15 tahun, Anda hampir tidak melihat MCU dengan fitur ini. Jika Anda mengeluarkan MAC atau fitur yang setara dari DSP, dapatkah Anda dengan jujur ​​mengatakan bahwa Anda memiliki DSP? Saya pasti tidak ingin membeli satu jika tidak memilikinya atau sesuatu yang terlalu dekat dengannya. Ada perbedaan arsitektur ketika Anda masuk ke Harvard vs von Neuman dan akses memori, tapi saya memberikan jawaban sederhana tanpa masuk ke penjelasan panjang yang terperinci. Saya pikir Anda terlalu keras dengan komentar Anda dengan mengatakan "Flat out WRONG". Anda boleh mengirim jawaban yang membahas kedalaman yang menurut Anda perlu dicakup.
Jay Atkinson

@adrian: Komentar Anda SALAH. Jika MCU memiliki fungsi MAC, ia akan dipasarkan sebagai DSP.
Johan.A

5

Apa yang digunakan untuk membedakan DSP adalah pengoptimalannya untuk operasi aritmatika, terutama multiplikasi, meskipun saat ini tidak jarang bagi mikrokontroler untuk dianugerahi instruksi perkalian dan pembagian. Mungkin masih ada keunggulan untuk melakukan pemrosesan sinyal dengan chip DSP, sejauh beberapa dari mereka memiliki dukungan perangkat keras untuk matematika titik tetap (misalnya, lib TI 'TMS320s' IQ '), sedangkan micros lebih cenderung hanya mencakup unit integer.

Secara pribadi, ketika dihadapkan dengan memilih antara keduanya untuk desain, saya akan mencoba untuk mengkategorikan apakah aplikasi membutuhkan perhitungan berulang dengan hanya logika perubahan mode sesekali, atau hanya perlu melakukan urutan perhitungan singkat sesuai kebutuhan. Yang pertama adalah DSP, yang kedua adalah mikro.

Dan kemudian, tentu saja, ada hal-hal menyenangkan seperti OMAP yang memiliki keduanya. = P


1
Saya pikir saya mengerti perbedaan dalam maksud (paragraf kedua Anda), tapi saya tidak yakin mengapa saya akan melakukan itu ketika micros tidak memiliki kemampuan matematika seperti DSP dan DSP memiliki set periferal seperti mikro. Seperti yang saya katakan di OP saya, dsPIC33 dan PIC24 dapat memiliki set fitur yang hampir identik dan harga yang sama. Perbaiki saya jika saya salah, tetapi sementara DSP memiliki fasilitas pemrosesan berulang, saya tidak berpikir bahwa PIC24 (atau mikro lain yang pernah saya lihat) memiliki keunggulan dibandingkan DSP dalam perubahan mode, seperti dual pipa atau FLASH lebih cepat.
Kevin Vermeer

@reemrevnivek: jadi maksud Anda, mengapa tidak selalu memilih DSP saja?
JustJeff

@JustJeff: Ya, itulah yang saya katakan.
Kevin Vermeer

1

Namun fitur lain yang mungkin dimiliki oleh instruksi MAC adalah penambahan secara otomatis register yang mengarah ke multiplikasi. Saya memprogram Zilog DSP yang menggunakan inti Clarkspur (16-bit). Itu adalah variasi pada arsitektur Harvard dengan tiga bus, membiarkannya mengakses tiga area memori secara bersamaan: Memori instruksi, data ram bank 1, dan data ram bank 2. Dengan aliran data di satu bank ram dan koefisien di yang lain, satu bisa lakukan filter FIR dengan satu instruksi siklus tunggal per operasi penambahan MAC / pointer. Dalam C instruksi tunggal terlihat seperti:

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

Dan tentu saja instruksi ini diulang untuk setiap koefisien.

Juga tidak ditunjukkan sebelumnya, DSP (setidaknya yang lama saya gunakan) umumnya arsitektur RISC dan dirancang dengan banyak atau sebagian besar instruksi mengeksekusi dalam satu siklus (atau dalam jumlah siklus yang sama). Hal ini memungkinkan kemampuan untuk memprogram untuk respons interupsi deterministik (hitungan jam tetap antara jalur interupsi akan aktif dan instruksi pertama dalam ISR dieksekusi), sedangkan sebagian besar prosesor lain merespons interupsi dalam sejumlah variabel siklus clock, tergantung pada apa titik dalam instruksi multi-siklus interupsi terjadi. Waktu eksekusi yang diperbaiki menghilangkan jitter multi-jam-waktu dalam output berulang.

Untuk perbandingan OP tentang Microchip Pic dan DSPic, itu adalah pemahaman saya ketika DSPic diperkenalkan bahwa itu terutama hanya Pic dengan instruksi MAC dan beberapa fitur tambahan lainnya, yang tentunya dapat mempercepat mikrokontroler melakukan fungsi pemrosesan sinyal, tetapi (karena kurangnya fitur-fitur lain yang dibahas) mungkin mendorong terminologi untuk menyebutnya DSP. MSP430 juga tersedia dalam versi dengan MAC perangkat keras, tetapi tidak ada yang menyebut ITU sebuah DSP.

Saya ingat 10 sampai 15 tahun yang lalu membaca bahwa prosesor utama dari Intel menambahkan MAC dan instruksi serupa untuk melakukan pemrosesan sinyal "asli" (bukan pada kartu ekspansi dengan prosesor DSP khusus, yang umum untuk produksi audio pada 1990-an) - beberapa murah Modem bus dialup PC 56k hanyalah konverter A / D dan D / A, dan mengandalkan prosesor utama untuk melakukan fungsi pengkodean dan dekode sinyal modem, sehingga ada permintaan untuk penggunaan prosesor yang lebih efisien di sana. Penggunaan media seperti editing / encoding / decoding video serta rekaman / produksi audio sangat dipercepat oleh instruksi tipe DSP.


Tidak ada yang baru di bawah matahari. <g>Kembali pada hari-hari awal C, operator kenaikan dan penurunan dirancang untuk langsung diterjemahkan ke dalam instruksi perangkat keras tunggal pada PDP.
Pete Becker
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.