Szczerze mówiąc, granica między nimi prawie już minęła i istnieją procesory, które można zaklasyfikować jako oba (na przykład AD Blackfin).
Ogólnie rzecz biorąc:
Mikrokontrolery to całkowite procesory matematyczne z podsystemem przerwań. Niektóre mogą mieć sprzętowe jednostki zwielokrotniające, niektóre nie, itp. Chodzi o to, że są one zaprojektowane do prostej matematyki i głównie do sterowania innymi urządzeniami.
DSP to procesory zoptymalizowane do przetwarzania sygnałów strumieniowych. Często mają specjalne instrukcje, które przyspieszają typowe zadania, takie jak mnożenie w jednej instrukcji. Często mają też inne instrukcje wektorowe lub SIMD. Historycznie nie były to systemy oparte na przerwie i działały z niestandardowymi systemami pamięci zoptymalizowanymi pod kątem ich przeznaczenia, co utrudnia ich programowanie. Zwykle były zaprojektowane do pracy w jednej dużej pętli przetwarzającej strumień danych. Procesory DSP mogą być zaprojektowane jako procesory liczb całkowitych, stałoprzecinkowych lub zmiennoprzecinkowych.
Historycznie, jeśli chciałbyś przetwarzać strumienie audio, strumienie wideo, wykonywać szybką kontrolę silnika, wszystko, co wymagało przetwarzania strumienia danych z dużą prędkością, wyglądałoby na DSP.
Jeśli chcesz kontrolować niektóre przyciski, mierzyć temperaturę, uruchamiać znakowy wyświetlacz LCD, sterować innymi układami scalonymi, które przetwarzają rzeczy, możesz użyć mikrokontrolera.
Obecnie najczęściej znajdują się procesory mikrokontrolera ogólnego przeznaczenia z wbudowanymi instrukcjami podobnymi do DSP lub z koprocesorami chipowymi do obsługi przesyłania strumieniowego danych lub innych operacji DSP. Nie widzisz już, że czyste DSP są często używane, z wyjątkiem określonych branż.
Rynek procesorów jest znacznie szerszy i bardziej niewyraźny niż kiedyś. Na przykład prawie nie uważam, by kora ARM-A8 SoC była mikrokontrolerem, ale prawdopodobnie pasuje ona do standardowej definicji, szczególnie w pakiecie PoP.
EDYCJA: Pomyślałem, że dodam trochę, aby wyjaśnić, kiedy / gdzie korzystałem z DSP nawet w czasach procesorów aplikacji.
Niedawno zaprojektowany przeze mnie produkt przetwarzał dźwięk z X kanałami wejściowymi i X kanałami wyjściowymi na „strefę”. Przeznaczenie produktu oznaczało, że często siedział tam i robił swoje, przetwarzając kanały audio przez lata bez dotykania go. Przetwarzanie dźwięku składało się z różnych filtrów akustycznych i funkcji. System był również „podłączalny na gorąco” z możliwością dodania pewnej liczby niezależnych „stref” w jednym pudełku. Było to w sumie 3 projekty PCB (płyta główna, płyta montażowa i moduł wtykowy), a płyta montażowa obsługiwała 4 moduły wtykowe. Całkiem fajny projekt, ponieważ robiłem to solo, musiałem zaprojektować system, schemat, układ płytki drukowanej i oprogramowanie układowe.
Teraz mogłem zrobić wszystko z jednym nieporęcznym rdzeniem ARM, potrzebowałem tylko około 50MIPS pracy DSP na 24-bitowych stałych punktach na strefę. Ale ponieważ wiedziałem, że ten system będzie działał przez bardzo długi czas, i wiedziałem, że bardzo ważne jest, aby nigdy nie klikał, nie wyskakiwał ani nic takiego. Zdecydowałem się wdrożyć go z DSP o niskiej mocy na strefę i jednym mikrokontrolerem PIC, który pełnił rolę zarządzania systemem. W ten sposób nawet jeśli jedna z funkcji uC ulegnie awarii, być może atak DDOS na jego port Ethernet, DSP z przyjemnością po prostu dalej będzie się odtrącać i prawdopodobnie nikt nigdy się nie dowie.
Mikrokontroler odegrał więc rolę wyświetlania 2-liniowego wyświetlacza LCD, niektórych przycisków, monitorowania temperatury i sterowania wentylatorem (na każdej płycie znajdowały się również wzmacniacze audio o dość dużej mocy), a nawet obsługiwał stronę internetową w stylu AJAX przez sieć Ethernet. Zarządzał również procesorami DSP za pośrednictwem połączenia szeregowego.
Jest to więc sytuacja, w której nawet w czasach, w których mogłem użyć jednego rdzenia ARM do zrobienia wszystkiego, projekt podyktował dedykowany układ przetwarzania sygnałów.
Inne obszary, w których wpadłem na DSP:
* High End audio - bardzo wysokiej klasy odbiorniki i sprzęt do miksowania i przetwarzania koncertowego
* Przetwarzanie radaru - Użyłem do tego również rdzeni ARM w aplikacjach niskiej jakości.
* Przetwarzanie sonaru
* Wizja komputera w czasie rzeczywistym
W przeważającej części niskie i średnie końce przestrzeni audio / wideo / podobnej zostały przejęte przez procesory aplikacyjne, które łączą procesor ogólnego przeznaczenia z silnikami odciążającymi co-proc dla różnych aplikacji.
Wiele cyfrowych procesorów sygnałowych zawiera szereg funkcji nie spotykanych w „zwykłych” procesorach:
Należy zauważyć, że wiele procesorów DSP będzie miało osobne magistrale, aby umożliwić jednoczesne pobieranie obu argumentów operacji wielokrotnego gromadzenia; Nigdy nie widziałem takiego oprogramowania, które mogłoby to zrobić. Chociaż nie jestem świadomy żadnej funkcji, której układ musi „brakować”, aby być DSP, dodatkowa przestrzeń krzemowa wymagana do umożliwienia pobierania podwójnego argumentu to przestrzeń krzemowa, która nie jest wykorzystywana do innych bardziej ogólnie użytecznych celów.
źródło
Jedną rzeczą, o której inni nie wspominali, jest zachowanie przy przepełnieniu numerycznym. W normalnych procesorach zwykle zawija się od wartości maksymalnej do wartości minimalnej.
W przypadku użycia DSP często istnieje przynajmniej opcja użycia nasycenia . Oznacza to, że przy przepełnieniu wartość pozostaje na wartości maksymalnej, co powoduje mniejsze zniekształcenie i lepiej naśladuje zachowanie obwodów analogowych.
źródło
Największą różnicą między DSP a standardowym uControllerem jest funkcja wielokrotnego gromadzenia danych (MAC), której nie ma uC. Jest to cenne, jeśli chcesz wykonać prawdziwą matematykę cyfrowego przetwarzania sygnałów, taką jak FFT (jeden przykład). Wykonanie FFT w standardowym mikrokontrolerze zajmie dużo czasu w porównaniu do wykonania na MAC na DSP.
Przetwarzanie I2C i sygnałów szeregowych to nie to samo, co przetwarzanie przebiegów w DSP. Trwa zupełnie inny rodzaj przetwarzania, ponieważ sygnały szeregowe są po prostu bitowe.
Oto podobna dyskusja na forum DSP : DSP vs. Mikroprocesor
źródło
Tym, co wyróżniało DSP, była ich optymalizacja pod kątem operacji arytmetycznych, zwłaszcza mnożenia, choć w dzisiejszych czasach mikrokontrolery są wyposażone w instrukcje mnożenia i dzielenia. Przetwarzanie sygnału za pomocą układów DSP może nadal mieć przewagę, o ile niektóre z nich mają sprzętową obsługę matematyki w punktach stałych (np. Lib TI TMS320 „IQ”), podczas gdy mikroskopy częściej zawierają tylko liczby całkowite.
Osobiście, mając do czynienia z wyborem między tymi dwoma projektami, staram się kategoryzować, czy aplikacja wymagała powtarzalnych obliczeń z tylko logiką zmiany trybu okazjonalnego, czy też musi tylko wykonywać krótkie sekwencje obliczeń, gdy zajdzie taka potrzeba. Pierwszy to DSP, drugi to mikro.
I oczywiście są fajne rzeczy, takie jak OMAP, które mają oba. = P
źródło
Jeszcze inną możliwą cechą instrukcji MAC może być automatyczna inkrementacja rejestrów, które wskazują na wiele ścieżek. Zaprogramowałem DSP Zilog, który korzystał z (16-bitowego punktu stałego) rdzenia Clarkspur. Była to odmiana architektury Harvarda z trzema magistralami, umożliwiająca dostęp do trzech obszarów pamięci jednocześnie: Pamięć instrukcji, bank danych ram 1 i bank danych ram 2. Ze strumieniem danych w jednym banku ram i współczynnikami w drugim można było wykonaj filtr FIR z jedną instrukcją pojedynczego cyklu na operację przyrostu MAC / wskaźnika. W C pojedyncza instrukcja wygląda następująco:
Akumulator + = rambank1 [r1 ++] * rambank2 [r2 ++];
I oczywiście instrukcja ta jest powtarzana dla każdego współczynnika.
Również nie wspomniano wcześniej, DSP (przynajmniej te starsze, których używałem) są ogólnie architekturą RISC i są zaprojektowane z wieloma lub większością instrukcji wykonywanych w jednym cyklu (lub w tej samej liczbie cykli). Pozwala to na zaprogramowanie deterministycznej odpowiedzi na przerwanie (stała liczba zegara między aktywną linią przerwania a pierwszą instrukcją w wykonanym ISR), podczas gdy większość innych procesorów reaguje na przerwania w zmiennej liczbie cykli zegara, w zależności od tego, co w instrukcji wielocyklowej następuje przerwanie. Stały czas wykonania eliminuje jitter wielokrotności zegara w powtarzalnych wyjściach.
Porównując Microchip Pic i DSPic przez OP, zrozumiałem, kiedy wprowadzono DSPic, że był to głównie Pic z instrukcją MAC i kilkoma innymi dodatkowymi funkcjami, które z pewnością mogą przyspieszyć mikrokontroler wykonujący funkcje przetwarzania sygnału, ale (ze względu na brak innych omówionych funkcji) być może przesuwa terminologię, aby nazwać ją DSP. MSP430 jest również dostępny w wersjach ze sprzętowym MAC, ale nikt nie nazywa TEGO DSP.
Pamiętam, że 10-15 lat temu czytałem, że główne procesory Intel dodawały MAC i podobne instrukcje dotyczące „natywnego” przetwarzania sygnału (zamiast na kartach rozszerzeń z dedykowanymi procesorami DSP, które były popularne w produkcji audio w latach 90.) - niektóre niedrogie Modemy PC z modemem 56k były tylko konwerterami A / D i D / A i polegały na głównym procesorze, który wykonywał funkcje kodowania i dekodowania sygnału modemu, więc było zapotrzebowanie na bardziej wydajne wykorzystanie procesora. Zastosowania takie jak edycja / kodowanie / dekodowanie wideo, a także nagrywanie / produkcja audio są znacznie przyspieszone przez instrukcje typu DSP.
źródło
<g>
Już we wczesnych dniach C operatory inkrementacji i dekrementacji zostały zaprojektowane w taki sposób, aby mogły zostać bezpośrednio przetłumaczone na pojedyncze instrukcje sprzętowe na PDP.