В чем разница между DSP и стандартным микроконтроллером?

84

Я понимаю, что DSP оптимизирован для цифровой обработки сигналов, но я не уверен, как это влияет на задачу выбора IC. Почти все, что я делаю с микроконтроллером, связано с обработкой цифровых сигналов!

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

Если я хочу работать с парой внешних датчиков, используя различные протоколы (I2C, SPI и т. Д.), Сделайте некоторые аналого-цифровые преобразования, сохраните некоторые данные на некоторой последовательной флэш-памяти, отреагируйте на некоторые кнопки и отправьте данные персонажу LCD и поверх FT232 (довольно общая встроенная система), какой чип мне следует использовать? Похоже, что DSP не будет отставать от PIC в любом случае, и он предлагает этот таинственный "DSP Engine". Мой код всегда выполняет математические вычисления, и время от времени мне нужны числа с плавающей запятой или дробные числа, но я не знаю, выиграю ли я от использования DSP.

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

Кевин Вермеер
источник

Ответы:

64

Честно говоря, в настоящее время грань между ними почти исчезла, и есть процессоры, которые можно классифицировать как оба (например, AD Blackfin).

Вообще говоря:

Микроконтроллеры - это целочисленные математические процессоры с подсистемой прерываний. Некоторые могут иметь аппаратные единицы умножения, некоторые нет и т. Д. Дело в том, что они предназначены для простой математики и главным образом для управления другими устройствами.

DSP - это процессоры, оптимизированные для обработки потокового сигнала. У них часто есть специальные инструкции, которые ускоряют общие задачи, такие как многократное накопление в одной инструкции. У них также часто есть другие векторные или SIMD инструкции. Исторически они не были системами, основанными на прерываниях, и работали с нестандартными системами памяти, оптимизированными для своих целей, что усложняло их программирование. Обычно они предназначены для работы в одном большом цикле обработки потока данных. DSP могут быть спроектированы как целочисленные, с фиксированной или с плавающей запятой.

Исторически сложилось так, что если вы хотели обрабатывать аудиопотоки, видеопотоки, осуществлять быстрое управление двигателем, все, что требовало обработки потока данных на высокой скорости, вы бы смотрели на DSP.

Если вы хотите управлять некоторыми кнопками, измерять температуру, запускать символьный ЖК-дисплей, управлять другими микросхемами, которые обрабатывают вещи, вы бы использовали микроконтроллер.

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

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

РЕДАКТИРОВАТЬ: понял, я бы добавил немного, чтобы объяснить, когда и где я использовал DSP, даже во времена процессоров приложений.

Недавним продуктом, который я разработал, была обработка аудио с X каналами ввода и X каналами вывода на каждую зону. Предполагаемое использование продукта означало, что он часто сидел и делал свое дело, годами обрабатывая аудиоканалы, не касаясь его. Обработка звука состояла из различных акустических фильтров и функций. Система также была «горячей» с возможностью добавления некоторого количества независимых «зон» в одной коробке. Всего было 3 варианта печатных плат (материнская плата, объединительная плата и подключаемый модуль), и объединительная плата поддерживала 4 подключаемых модуля. Весьма увлекательный проект, так как я делал это в одиночку, мне пришлось заниматься проектированием системы, схемой, макетом печатной платы и прошивкой.

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

Таким образом, микроконтроллер играл роль двухстрочного ЖК-дисплея, некоторых кнопок, контроля температуры и управления вентилятором (на каждой плате также было несколько довольно мощных усилителей звука) и даже обслуживал веб-страницу в стиле AJAX через Ethernet. Он также управлял DSP через последовательное соединение.

Так что это ситуация, когда даже в те дни, когда я мог бы использовать одно ядро ​​ARM, чтобы делать все, дизайн диктовал выделенную ИС для обработки сигналов.

Другие области, где я столкнулся с DSP:

* High End audio - Высококачественные ресиверы и оборудование для микширования и обработки концертного качества

* Обработка радара - я также использовал для этого ARM-ядра в бюджетных приложениях.

* Обработка сонара

* Компьютерное зрение в реальном времени

По большей части нижние и средние концы аудио / видео / аналогичного пространства были заняты процессорами приложений, которые объединяют ЦП общего назначения с механизмами разгрузки co-proc для различных приложений.

отметка
источник
1
Возможно, еще одно дополнение. В приложении с примерно 80 линиями ввода / вывода и 12 аналоговыми входами мы теперь используем один микроконтроллер со связанной ПЛИС для обработки потоков ввода / вывода. Подобные решения становятся все более распространенными. Мы используем эту систему: embeddedarm.com/products/board-detail.php?product=ts-7800, чтобы ускорить разработку в течение короткого времени выхода на рынок, и я должен сказать, что она работает очень хорошо (конечно, цена такой продукт может не подходить для приложений с более низкой продажной ценой / ожидаемой стоимостью.) - Wouter Simons 33 секунды назад
Wouter Simons
Не все микроконтроллеры имеют прерывания. В критически важных приложениях они никогда не используются. Показательный пример: контроллер Viper, используемый в истребителях.
Стивенвх
15

Многие цифровые сигнальные процессоры включают множество функций, которых нет в «обычных» процессорах:

  1. Возможность выполнять многократное накопление, причем оба операнда выбираются из ОЗУ, со скоростью один цикл на пару операндов.
  2. Способность выполнять некоторую форму адресации «по модулю» или «обтекание», чтобы позволить многократному использованию буфера без необходимости использования ручного кода для обеспечения переноса указателей. Например, 3205x имеет регистр «начало буфера» и «конец буфера»; если код пытается увеличить или уменьшить регистр указателя, который указывает на «начало буфера», процессор загрузит указатель с «концом буфера». 3205x также имеет режим обратной передачи, где добавление адресов распространяется перенос MSB в LSB, а не наоборот; это учитывает адресацию по модулю N, если N - степень 2, хотя материал хранится в беспорядочной последовательности.
  3. Возможность указать, что инструкция будет выполнена n раз без необходимости повторного извлечения. Некоторые процессоры, такие как 8088, включают это для нескольких инструкций, но многие DSP допускают это для многих инструкций.
  4. Возможность указать, что блок кода будет выполняться многократно, до 'n' раз, без необходимости ветвления. Перед каждой выборкой кода счетчик программы сверяется с регистром 'loop-end'; если он совпадает и цикл включен, счетчик программы будет перезагружен с помощью 'loop-start' (в противном случае он будет увеличиваться). Если 'loop-count' равен нулю, зацикливание будет отключено; в противном случае «счетчик петель» будет уменьшен.

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

Supercat
источник
Я был знаком с многократным накоплением, но адресация по модулю и многократное выполнение кода без выборки были функциями, с которыми я не был знаком.
Кевин Вермеер
1
У вас много хороших ответов, и это здорово, что вы работаете над старыми и новыми вопросами. Я хотел бы просмотреть и подтвердить все ваши ответы, если бы не алгоритмы обнаружения мошенничества и ежедневные ограничения на количество повторений . Ожидайте несколько дней, хотя! Продолжайте в том же духе!
Кевин Вермеер
@reemrevnivek: Рад, что вы нашли мои ответы полезными. Как я уже отмечал, дизайн для многократного накопления с двойной выборкой - это функция, которую я не видел на процессорах без DSP. ARM хорошо справляется с операциями, требующими многократного накопления и адресации по модулю (используя эффективный адрес, например (R0 + (R1 >> 24)) для 256-байтовой таблицы), но типичный ARM потребует четыре инструкции, чтобы сделать то, что DSP делает за один цикл.
суперкат
MAC - это команда с тремя операндами a <- a + b * c, а не две.
Трисмегистос
@Trismegistos: повторная операция MAC N-элемента будет включать в себя 2N + 1 операндов. Нет необходимости извлекать аккумулятор перед каждым элементом и сохранять его после. В то время как процессоры с неповторяющимся умножением-сложением могут иметь три операнда, повторяющийся MAC будет извлекать только два операнда за такт.
суперкат
13

Одна вещь, которую другие не упомянули, это поведение при переполнении чисел. В обычных процессорах это обычно происходит от максимального значения до минимального значения.

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

starblue
источник
9

Самым большим отличием между DSP и стандартным uController является функция многократного накопления DSP (MAC), которой нет у uC. Это ценно, если вы хотите выполнять математическую обработку истинного цифрового сигнала, например, FFT (один из примеров). Выполнение FFT в стандартном микроконтроллере займет много времени по сравнению с выполнением его на MAC DSP.

Обработка сигналов I2C и последовательных сигналов отличается от обработки сигналов в DSP. Абсолютно другой тип обработки происходит, поскольку последовательные сигналы просто бьют битами.

Вот аналогичное обсуждение на форуме DSP : DSP против микропроцессора

Джей Аткинсон
источник
Я видел Аккумулятор на блок-схеме DSP, но не знал, что он сделал. Хорошо знать! Я понимаю, что I2C и последовательные сигналы не совпадают с обработкой сигналов при отправке данных ASCII, но некоторые периферийные устройства (акселерометры с последовательным доступом, внешние АЦП, GPS и т. Д.) Кодируют сигналы в своих потоках данных. в DSP как-то!
Кевин Вермеер
3
большая часть обработки сигналов математически состоит из умножающихся матриц и / или векторов вместе. Процесс выполнения этого приводит к большому количеству вычислений типа answer = a b + c d + e * f. На процессоре без MAC, который требует много инструкций, с MAC это может быть во много раз быстрее.
Марк
1
Этот комментарий совершенно НЕПРАВИЛЬНЫЙ. Не все, но многие MCU включают аппаратные умножители с функциями MAC. Это не имеет ничего общего с различием между DSP и MCU. Да, DSP чаще имеют MAC, чем MCU, но есть гораздо более фундаментальные различия, чем эта небольшая функция.
2
Если вы переведете время на 15 лет назад, вы почти не увидите MCU с этой функцией. Если вы возьмете MAC или эквивалентную функцию из DSP, можете ли вы честно сказать, что у вас есть DSP? Я, конечно, не хотел бы купить один, если бы не было или что-то близко это тоже. Существуют различия в архитектуре, когда вы получаете Гарвард против фон Неймана и доступ к памяти, но я давал простой ответ, не вдаваясь в подробные объяснения. Я думаю, что вы слишком суровы со своим комментарием, говоря «Вычеркните НЕПРАВИЛЬНО». Вы можете опубликовать ответ, обсуждая глубину, которую, по вашему мнению, необходимо охватить.
Джей Аткинсон
@adrian: Ваш комментарий совершенно НЕПРАВИЛЬНЫЙ. Если MCU имеет функцию MAC, он будет продаваться как DSP.
Йохан.
5

То, что раньше отличало ЦСП, было их оптимизацией для арифметических операций, особенно умножения, хотя в наши дни микроконтроллеры нередко наделены инструкциями умножения и деления. Может все же быть преимущество при обработке сигналов с помощью микросхем DSP, поскольку некоторые из них имеют аппаратную поддержку математики с фиксированной запятой (например, библиотека IQ 'TI TMS320s), тогда как микросхемы с большей вероятностью включают только целочисленные единицы.

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

И затем, конечно, есть забавные вещи, такие как OMAP, которые имеют оба. = Р

JustJeff
источник
1
Я думаю, что я понимаю разницу в намерениях (ваш второй абзац), но я просто не уверен, почему я сделал бы это, когда у микро не было DSP-подобной математической способности, а у DSP есть микро-подобные периферийные наборы. Как я уже говорил в своем OP, dsPIC33 и PIC24 могут иметь практически идентичный набор функций и одинаковую цену. Поправьте меня, если я ошибаюсь, но хотя DSP имеет повторяющиеся средства обработки, я не думаю, что PIC24 (или любой другой микро, на который я смотрел) имеет какое-либо преимущество перед DSP при смене режима, например, двойной конвейер или быстрее FLASH.
Кевин Вермеер
@reemrevnivek: так вы говорите, почему бы не всегда просто выбрать DSP?
JustJeff
@JustJeff: Да, именно это я и говорю.
Кевин Вермеер
1

Еще одной возможной особенностью, которую может иметь инструкция MAC, является автоматическое увеличение регистров, указывающих на мультипликаторы. Я запрограммировал Zilog DSP, который использовал (16-битное ядро ​​с фиксированной запятой) Clarkspur. Это была вариация Гарвардской архитектуры с тремя шинами, позволяющая одновременно обращаться к трем областям памяти: Память инструкций, банк данных 1 и 2 банка данных. С потоком данных в одном банке памяти и коэффициентами в другом можно было бы выполните FIR-фильтр с одной инструкцией за один цикл на каждую операцию увеличения MAC / указателя. В Си единственная инструкция выглядит так:

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

И, конечно, эта инструкция повторяется для каждого коэффициента.

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

Что касается сравнения OP Microchip Pic и DSPic, то, когда я представил DSPic, я понял, что это в основном просто Pic с инструкцией MAC и несколькими другими дополнительными функциями, которые, безусловно, могут ускорить микроконтроллер, выполняющий функции обработки сигналов, но (из-за отсутствия каких-либо других обсуждаемых функций) может потребоваться использование терминологии, чтобы назвать ее DSP. MSP430 также доступен в версиях с аппаратным MAC, но никто не называет это DSP.

Я вспоминаю 10–15 лет назад, читая, что основные процессоры от Intel добавляли MAC и аналогичные инструкции для «родной» обработки сигналов (вместо плат расширения с выделенными процессорами DSP, которые были обычны для производства звука в 1990-х годах) - некоторые недорогие Модемные шины 56K для ПК были просто аналого-цифровыми и цифро-аналоговыми преобразователями и полагались на основной процессор для выполнения функций кодирования и декодирования сигналов модема, поэтому существовала потребность в более эффективном использовании процессора. Использование мультимедиа, такое как редактирование / кодирование / декодирование видео, а также запись / производство аудио, значительно ускоряется инструкциями типа DSP.

user23081
источник
Нет ничего нового под солнцем. <g>Еще в первые годы существования C операторы увеличения и уменьшения были разработаны для прямой трансляции в отдельные аппаратные инструкции на PDP.
Пит Беккер