Чим відрізняється DSP від ​​стандартного мікроконтролера?


84

Я розумію, що DSP оптимізований для цифрової обробки сигналів, але я не впевнений, як це впливає на завдання вибору ІМС. Майже все, що я роблю з мікроконтролером, включає обробку цифрових сигналів!

Наприклад, порівняємо популярний Microchip dsPIC30 або 33 DSP та інші їхні 16-бітні пропозиції, мікроконтролер PIC24 загального призначення. DsPIC і PIC можуть бути налаштовані на однакову пам’ять і швидкість, вони мають схожі периферійні набори, схожі можливості A / D, кількість контактів, поточний розіграш і т. Д. Єдина основна відмінність, що з’являється в переліку Digikey - це розташування генератор. Я не можу визначити різницю, дивлячись на ціни (або будь-яке інше поле для цього питання.)

Якщо я хочу працювати з декількома зовнішніми датчиками, використовуючи різні протоколи (I2C, SPI тощо), робити деякі перетворення A / D, зберігати деякі дані в деякому послідовному спалаху, реагувати на деякі кнопки та висувати дані символу РК-дисплей та над FT232 (досить загальна вбудована система), який чіп я повинен використовувати? Не здається, що DSP ні в якому разі не відставатиме від PIC, і він пропонує цей загадковий "DSP Engine". Мій код завжди займається математикою, і час від часу мені потрібна плаваюча точка або дробові числа, але я не знаю, чи отримаю користь від використання DSP.

Більш загальне порівняння між DSP-кодами іншого постачальника та мікроконтролерами було б однаково корисним; Я просто використовую їх як вихідну точку для обговорення.

Відповіді:


64

Якщо чесно, то лінія між цими двома майже відсутня в даний час, і є процесори, які можна класифікувати як обидва (наприклад, AD Blackfin).

Загалом:

Мікроконтролери - це цілі математичні процесори з підсистемою переривання. Деякі можуть мати апаратні пристрої множення, деякі - і т. Д. Точка полягає в тому, що вони розроблені для простої математики і в основному для управління іншими пристроями.

DSP - це процесори, оптимізовані для обробки потокового сигналу. Вони часто мають спеціальні інструкції, які прискорюють поширені завдання, такі як множення і накопичення в одній інструкції. Вони також часто мають інші векторні або SIMD інструкції. Історично вони не були системами на основі переривань, а працювали з нестандартними системами пам'яті, оптимізованими за своїм призначенням, що ускладнює їх програмування. Зазвичай вони були розроблені для роботи в одному великому циклі, який обробляє потік даних. DSP можуть бути розроблені як цілі, фіксовані точки або процесори з плаваючою точкою.

Історично, якби ви хотіли обробляти аудіопотоки, відеопотоки, робити швидкий контроль двигуна, все, що вимагало б обробляти потік даних з високою швидкістю, ви б звернулися до DSP.

Якщо ви хочете керувати деякими кнопками, вимірювати температуру, запускати символьний РК-дисплей, керувати іншими ІС, які обробляють речі, ви використовуєте мікроконтролер.

Сьогодні ви здебільшого знаходите процесори мікроконтролерів загального призначення з вбудованими інструкціями, схожими на DSP, або з чиповими спільними процесорами для роботи з потоковими даними або іншими операціями DSP. Ви не бачите чистих DSP, які використовуються набагато більше, за винятком конкретних галузей.

Ринок процесорів набагато ширший і розмитіший, ніж раніше. Наприклад, я навряд чи вважаю ARM cortex-A8 SoC мікроконтролером, але він, ймовірно, відповідає стандартному визначенню, особливо в пакеті PoP.

EDIT: Подумав, що я додам трохи, щоб пояснити, коли / де я використовував DSP навіть у дні процесорів програм.

Нещодавно розроблений мною продукт робив обробку аудіо за допомогою X-каналів входу та X-каналів виходу на "зону". Задумане використання продукту означало, що він часто може сидіти там, роблячи свою справу, обробляючи аудіоканали роками, не торкаючись ніхто. Обробка звуку складалася з різних акустичних фільтрів та функцій. Система також була "гарячою плагією" з можливістю додавати деяку кількість незалежних "зон" все в одне поле. Всього було 3 конструкції друкованих плат (материнська плата, задня планка та модуль для підключення), а планка підтримувала 4 модулі. Досить цікавий проект, коли я робив це соло, я повинен був зробити дизайн системи, схематичне розташування друкованої плати та прошивки.

Тепер я міг би зробити всю справу з одним об'ємним ядром ARM, мені було потрібно лише близько 50MIPS роботи DSP на 24-бітових номерах з фіксованою точкою на зону. Але тому, що я знав, що ця система буде функціонувати надзвичайно довго і знав, що це критично, що вона ніколи не клацає та не клацає чи щось подібне. Я вирішив реалізувати його з низькою потужністю DSP на зону та одним мікроконтролером PIC, який відігравав роль управління системою. Таким чином, навіть якщо одна з функцій UC вийшла з ладу, можливо, атака DDOS на його Ethernet-порту, DSP із задоволенням просто триматиметься, і, швидше за все, ніхто цього не дізнається.

Таким чином, мікроконтролер відігравав роль запуску 2-лінійного РК-дисплея, деяких кнопок, моніторингу температури та контролю вентиляторів (на кожній платі було також кілька досить потужних аудіопідсилювачів) і навіть обслуговував веб-сторінку в стилі AJAX через Ethernet. Він також управляв DSP через послідовне з'єднання.

Отже, це ситуація, коли навіть у ті часи, коли я міг би використовувати одне ядро ​​ARM, щоб зробити все, дизайн продиктував спеціальну ІС для обробки сигналів.

Інші області, де я зіткнувся з DSP:

* High End аудіо - дуже високі кінцеві приймачі та якість концертних механізмів для змішування та обробки

* Радіолокаційна обробка - я також використовував ARM ядра для цього в додатках низького рівня.

* Сонарна обробка

* Комп'ютерне бачення в режимі реального часу

Здебільшого низький та середній кінці аудіо / відео / подібного простору були перейняті процесорами додатків, які поєднують процесор загального призначення з двигунами для завантаження ко-pro для різних застосувань.


1
Можливо, ще одне доповнення. У додатку з приблизно 80 лініями вводу / виводу та 12 аналоговими входами ми зараз використовуємо один мікроконтролер із пов'язаною FPGA для обробки потоків вводу / виводу. Такі рішення стають все більш поширеними. Ми використовуємо цю систему: embeddedarm.com/products/board-detail.php?product=ts-7800, щоб зробити розробку швидкою за короткий час на ринок, і я повинен сказати, що вона працює дуже добре (звичайно, ціна на такий товар може не підходити для додатків із нижчою ціною продажу / очікуваною вартістю.) - Wouter Simons 33 сек. тому
Wouter Simons

Не всі мікроконтролери мають переривання. У критично важливих програмах вони ніколи не використовуються. Справа в суті: контролер Viper, який використовується в літаках винищувачів.
stevenvh

15

Багато процесорів цифрових сигналів містять різні функції, які не зустрічаються у «звичайних» процесорах:

  1. Можливість виконувати множення-накопичення з обома операндами, отриманими з оперативної пам'яті, зі швидкістю один цикл на пару операндів.
  2. Можливість виконувати певну форму 'модульної' або 'обгорткової' адресації, щоб дозволити багаторазово використовувати буфер без необхідності використання ручного коду для забезпечення загортання покажчиків. Наприклад, 3205x має регістр 'буферний початок' та 'буферний кінець'; якщо код намагається збільшити або зменшити реєстр покажчиків, який вказує на "запуск буфера", процесор завантажить покажчик "буферним кінцем". 3205x також має режим зворотного переносу, де додаткові адреси поширюють перенесення MSB на LSB, а не навпаки; це дозволяє модульно-N адресації, якщо N - потужність 2, хоча речі зберігаються в змішаній послідовності.
  3. Можливість вказати, що інструкція виконується 'n' разів без необхідності повторного вибору. Деякі процесори, такі як 8088, включають це в кілька інструкцій, але багато DSP дозволяють це робити в багатьох інструкціях.
  4. Можливість вказати, що блок коду виконується повторно, до 'n' разів, без необхідності розгалуження. Перед кожним вилученням коду лічильник програм перевіряється на регістр "циклу"; якщо він збігається, і циклічне ввімкнення, лічильник програм буде перезавантажений "циклом-запуском" (інакше він збільшиться). Якщо "кількість циклів" дорівнює нулю, циклічне відключення буде вимкнено; інакше 'кількість циклів' зменшиться.

Зауважте, що багато DSP матимуть окремі шини, що дозволять одночасно отримувати обидва операнди множини-накопичення; Я ніколи не бачив не-DSP, який міг би це зробити. Хоча я не знаю жодної функції, якій чіп повинен «бракувати», щоб бути DSP, додатковий простір кремнію, необхідний для отримання подвійного операнду, - це силіконовий простір, який не використовується для якихось інших більш загальних корисних цілей.


Я був знайомий із множенням-накопиченням, але модульна адресація та повторне виконання коду без завантаження - це функції, з якими я не був знайомий.
Кевін Вермер

1
У вас багато чудових відповідей, і класно, що ви працюєте і над старими, і над новими питаннями. Я б переглянув і підтвердив усі ваші відповіді, якби не алгоритми виявлення шахрайства та щоденна реплікація . Очікуйте кілька днів, хоча! Продовжуйте дивовижну роботу!
Кевін Вермер

@reemrevnivek: Радий, що ти вважаєш мої відповіді корисними. Як я зазначив, дизайн подвійного отримання множини-накопичення - це особливість, яку я не бачив у процесорах, що не належать до DSP. ARM добре справляється з операціями, що вимагають багаторазового накопичення та модульної адресації (використовуючи ефективну адресу, наприклад (R0 + (R1 >> 24)) для 256-байтної таблиці), але для типового ARM знадобиться чотири інструкції, що робити DSP робить за один цикл.
supercat

MAC - це три інструкції операнда a <- a + b * c, а не два.
Трисмегістос

@Trismegistos: Операція MAC, що повторюється, на N-елемент буде включати в себе 2N + 1 операнди. Немає необхідності виймати акумулятор перед кожним предметом і зберігати його. Хоча процесори з неповторним множенням додавання можуть мати три операнди, повторний MAC отримує лише два операнди за цикл.
supercat

13

Одне, що інші не згадували, - це поведінка щодо числового переповнення. У звичайних процесорах це зазвичай завершується від максимального до мінімального значення.

Для використання DSP часто принаймні є можливість використовувати насичення . Тобто, при переповненні значення залишається на максимальному значенні, що створює менше спотворень і краще імітує поведінку аналогових схем.


9

Найбільша різниця між DSP та звичайним uController - це функція множення накопичувача DSP (MAC), якої немає у UC. Це цінно, якщо ви хочете виконати справжню математичну обробку сигналів, наприклад FFT (один приклад). Виконання FFT у стандартному мікроконтролері займе багато часу порівняно з виконанням його на MAC DSP.

Обробка I2C та послідовних сигналів не є такою ж, як обробка форм хвиль у DSP. Зовсім інший вид обробки відбувається, оскільки серійні сигнали просто бітні.

Ось подібна дискусія на форумі DSP : DSP vs. Microprocessor


Я бачив накопичувач на блок-схемі DSP, але не знав, що це робиться. Добре знати! Я розумію, що I2C та serial - це не те саме, що обробляють сигнали сигналів при надсиланні даних ASCII, але деякі периферійні пристрої (акселерометри послідовного доступу, зовнішні A / D, GPS тощо) кодують форми сигналів у своїх потоках даних. Це повинно отримати в ДСП якось!
Кевін Вермер

3
більшість обробки сигналів математично складається з множення матриць та / або векторів разом. Процес виконання цього призводить до великої кількості відповідей = обчислення типу b + c d + e * f. На процесорі без MAC, який вимагає багато інструкцій, з MAC це може бути в багато разів швидше.
Марк

1
Цей коментар є рівним WRONG. Не всі, але багато MCU включають апаратні множники з функціями MAC. Це не має нічого спільного з відмінністю DSP від ​​MCU. Так, швидше за все, DSP мають MAC, ніж MCU, але існують набагато більші принципові відмінності, ніж ця невелика особливість.

2
Якщо повернути годинник назад на 15 років, ви майже не бачите MCU з цією функцією. Якщо ви виймете MAC або аналогічну функцію з DSP, чи можете ви чесно сказати, що у вас є DSP? Я, звичайно, не хотів би придбати його, якби його не було, або щось близьке теж. Існують відмінності в архітектурі, коли ти потрапляєш у Гарвард проти фон Неймана та доступ до пам’яті, але я давав просту відповідь, не вдаючись до довгого детального пояснення. Я думаю, що ти занадто суворий зі своїм коментарем, сказавши "Плоский НЕ ПРАВИЙ". Ви можете залишити відповідь, в якій обговорювати глибину, яку, на вашу думку, потрібно висвітлити.
Джей Аткінсон

@adrian: Ваш коментар не відповідає WRONG. Якщо MCU має функцію MAC, вона продаватиметься як DSP.
Йохан.А

5

DSP розрізняли їх оптимізацію для арифметичних операцій, особливо для множення, хоча в наші дні мікроконтролери не рідкість наділені інструкціями щодо множення та ділення. Все ще може бути обробка даних сигналів за допомогою мікросхем DSP, якщо деякі з них мають апаратну підтримку математики з фіксованою точкою (наприклад, LI TI TMS320 'IQ'), тоді як мікросхеми, швидше за все, включають цілі одиниці.

Особисто, стикаючись з вибором між двома для дизайну, я б спробував класифікувати, чи вимагає програма, що вимагає повторних обчислень з лише випадковою логікою зміни режиму, чи потрібно лише виконувати короткі послідовності обчислень у міру виникнення потреби. Першим був би DSP, другим мікро.

І тоді, звичайно, є такі веселі речі, як OMAP, які мають і те, і інше. = Р


1
Я думаю, що я розумію різницю в намірах (ваш другий абзац), але я просто не впевнений, чому б це зробити, коли мікросистеми не мають DSP-подібних математичних можливостей, а DSP мають мікроподібні периферійні набори. Як я вже говорив у своєму ОП, dsPIC33 та PIC24 можуть мати майже однаковий набір функцій та однакову ціну. Виправте мене, якщо я помиляюся, але, хоча DSP має повторювані засоби обробки, я не думаю, що PIC24 (або будь-який інший мікро, який я подивився) має якусь перевагу перед DSP у зміні режиму, як подвійний трубопровід або швидше ФЛЕШ.
Кевін Вермер

@reemrevnivek: так ви говорите, чому б не завжди просто вибрати DSP?
JustJeff

@JustJeff: Так, саме так я і говорю.
Кевін Вермер

1

Ще одна можлива особливість, яку може мати інструкція MAC - це автоматичне нарощування регістрів, які вказують на мультиплікації. Я запрограмував Dilog DSP, який використовував (16-бітове ядро ​​Clarkspur з фіксованою точкою). Це була зміна Гарвардської архітектури з трьома шинами, що дозволяло їй отримувати доступ до трьох областей пам’яті одночасно: пам’ять з інструкціями, банк даних ram 1 та банк даних ram 2. З потоком даних в одному банку операторів та коефіцієнтами в іншому можна було б зробіть фільтр FIR з однією інструкцією на один цикл на операцію з збільшення МАС / покажчика. В C одна інструкція виглядає так:

Акумулятор + = rambank1 [r1 ++] * rambank2 [r2 ++];

І звичайно ця інструкція повторюється для кожного коефіцієнта.

Також не зазначалося раніше, DSP (принаймні старіші, якими я користувався), як правило, є архітектурою RISC і розроблені з багатьма або більшістю інструкцій, що виконуються в одному циклі (або в однаковій кількості циклів). Це дає можливість програмувати детерміновану реакцію переривання (фіксований кількість годин між активної лінії переривання та першою інструкцією в ISR виконано), тоді як більшість інших процесорів реагують на перебої в змінній кількості тактових циклів, залежно від того, що точка в багатоцикловій інструкції відбувається переривання. Фіксований час виконання виключає багаторазове тремтіння часу у повторюваних виходах.

До порівняння ОП Microchip Pic і DSPic, я зрозумів, коли DSPic був представлений, що це в основному просто Pic з інструкцією MAC та кількома іншими додатковими функціями, що, безумовно, може пришвидшити мікроконтролер, виконуючи функції обробки сигналу, але (через відсутність будь-якої з інших обговорених особливостей), можливо, підштовхує термінологію називати її DSP. MSP430 також доступний у версіях з апаратним MAC, але ніхто не називає ТО DSP.

Я пригадую, що 10 - 15 років тому читав, що основні процесори від Intel додавали MAC та подібну інструкцію робити "нативну" обробку сигналів (замість карт розширення з виділеними процесорами DSP, які були звичайними для виробництва аудіо в 1990-х) - деякі недорогі Моделі шини комутаційного комп'ютера 56k були просто перетворювачами A / D і D / A, і вони покладалися на основний процесор, щоб виконувати функції кодування та декодування сигналу модему, тому там з'явився попит на більш ефективне використання процесора. Використання засобів масової інформації, таких як редагування відео / кодування / декодування, а також запис / виробництво аудіо значно скорочується інструкціями типу DSP.


Нічого нового під сонцем немає. <g>Ще в перші дні C оператори збільшення та скорочення були розроблені для того, щоб безпосередньо переводитись на єдині інструкції з обладнання на PDP.
Піт Бекер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.