Честно говоря, в настоящее время грань между ними почти исчезла, и есть процессоры, которые можно классифицировать как оба (например, 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 для различных приложений.
Многие цифровые сигнальные процессоры включают множество функций, которых нет в «обычных» процессорах:
Обратите внимание, что многие DSP будут иметь отдельные шины для одновременного извлечения обоих операндов с кратным накоплением; Я никогда не видел не DSP, который мог бы сделать это. Хотя мне неизвестно о какой-либо функции, которой у чипа «не хватает», чтобы быть DSP, дополнительное кремниевое пространство, необходимое для обеспечения выборки с двумя операндами, - это кремниевое пространство, которое не используется для какой-либо другой более общей полезной цели.
источник
Одна вещь, которую другие не упомянули, это поведение при переполнении чисел. В обычных процессорах это обычно происходит от максимального значения до минимального значения.
Для использования DSP часто есть хотя бы вариант использования насыщенности вместо этого. Таким образом, при переполнении значение остается максимальным, что создает меньше искажений и лучше имитирует поведение аналоговых цепей.
источник
Самым большим отличием между DSP и стандартным uController является функция многократного накопления DSP (MAC), которой нет у uC. Это ценно, если вы хотите выполнять математическую обработку истинного цифрового сигнала, например, FFT (один из примеров). Выполнение FFT в стандартном микроконтроллере займет много времени по сравнению с выполнением его на MAC DSP.
Обработка сигналов I2C и последовательных сигналов отличается от обработки сигналов в DSP. Абсолютно другой тип обработки происходит, поскольку последовательные сигналы просто бьют битами.
Вот аналогичное обсуждение на форуме DSP : DSP против микропроцессора
источник
То, что раньше отличало ЦСП, было их оптимизацией для арифметических операций, особенно умножения, хотя в наши дни микроконтроллеры нередко наделены инструкциями умножения и деления. Может все же быть преимущество при обработке сигналов с помощью микросхем DSP, поскольку некоторые из них имеют аппаратную поддержку математики с фиксированной запятой (например, библиотека IQ 'TI TMS320s), тогда как микросхемы с большей вероятностью включают только целочисленные единицы.
Лично, когда я сталкивался с выбором между двумя для проекта, я бы попытался категоризировать, требует ли приложение для повторяющихся вычислений только с логикой случайного изменения режима, или нужно только выполнять короткие последовательности вычислений по мере необходимости. Первый будет DSP, второй микро.
И затем, конечно, есть забавные вещи, такие как OMAP, которые имеют оба. = Р
источник
Еще одной возможной особенностью, которую может иметь инструкция 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.
источник
<g>
Еще в первые годы существования C операторы увеличения и уменьшения были разработаны для прямой трансляции в отдельные аппаратные инструкции на PDP.