czym tak naprawdę są: mikrokontroler (uC), system na chipie (SoC) i cyfrowy procesor sygnałowy (DSP)?

9

Rzeczywiste pytanie jest na końcu. Ale samo czytanie może nie pokazać, dlaczego jestem zdezorientowany. Napisałem ten post, zaczynając od niektórych definicji, założeń i spekulacji, a następnie zadając rzeczywiste pytanie.

Zawsze myślę, że znam różnicę, ale kiedy pojawia się pytanie: „jeśli postawię urządzenie nadawczo-odbiorcze z uC, czy to teraz SoC?” Idę wszystko zmieszane i nie wiem jak odpowiedzieć. Pamiętam, kiedy powiedziano mi, że uC jest zasadniczo SoC . Ale jaki mam dowód? Ale arduino nie jest na jednym chipie! W każdej chwili mogę wyjąć procesor Atmeg z „płyty”!

Kiedy sprawdzam online, otrzymuję wszelkiego rodzaju odpowiedzi, które potwierdzają lub zaprzeczają temu, co powiedziałem bezpośrednio lub pośrednio. Jest to dla mnie zawsze mylące i nie obwiniam nikogo innego niż osoby marketingowe, które używają tych terminów swobodnie i czasem zamiennie, oraz osoby, które podążają za nimi.

Postanowiłem więc poszukać podstawowego znaczenia tych trzech terminów: uC, SoC i DSP. Ponieważ na przykład, kiedy mylę się co do napięć w obwodach, zawsze wracam do podstaw fizyki, ziemia nie jest tak naprawdę zerowa, to tylko „odniesienie”, a napięcia nie są „absolutne”, są „krewnymi”. To zawsze wskazuje mi właściwy kierunek. Ale nie ma podstaw, do których można się odnieść, rozmawiając o Wielkiej Brytanii. „mikro” „kontroler” jest tak małym kontrolerem, że znajduje się w skali mikrometra. Ale nie mamy terminu nanokontroler, prawda? Ten sposób myślenia nie pomógłby.

Próbuję odpowiedzieć na następujące pytania:

  • uC to jednostka przetwarzająca z innymi urządzeniami peryferyjnymi i pamięcią do ogólnego użytku, prawda?
  • SoC to pełny „system” na „chipie”. Więc każdy system, który umieścisz na jednym układzie, jest SoC, prawda?
  • DSP jest jednostką przetwarzającą do określonego zastosowania, głównie operacji matematycznych, prawda?

    Teraz

  • Czy to oznacza, że ​​wszystko w UC musi znajdować się w jednym układzie? ponieważ jeśli tak, to uC jest w rzeczywistości SoC. Może mały, ale tak jest. Co z arduino. Prawdopodobnie uC „może” być SoC, jeśli jest na jednym układzie, ale nie musi (używam tutaj arduino jako przykładu).

  • Tak więc arduino to uC, jeśli wezmę wszystkie jego składniki i włożę je do innej płyty i na przykład dodam XBEE do miksu. To wciąż jest uC, prawda? Kiedy więc mówimy, że teraz jest SoC? Tylko kiedy te same rzeczy są umieszczane w jednym chipie, a nie gromadzone na planszy?

Do tej pory myślę, że powyższe pytania w jakiś sposób same sobie odpowiadają, ale chcę tylko potwierdzić, żebym mógł przejść dalej. Kiedy próbuję myśleć „zasadniczo”, układ scalony lub płytka „mogą” być takie same, to tylko przewody łączące różne elementy. i w tym momencie, co definiujesz komponent? Czy to pojedynczy tranzystor czy obwód podobny do ADC? Ale nie chcę tam iść.

Następne pytanie dotyczy tego, o czym tak naprawdę jest ten post:

  • Czy uC jest zasadniczo SoC? Szczególny przypadek SoC, którego jednym z wymagań jest to, że cały system jest przeznaczony do użytku ogólnego.
  • UC ma zastosowanie ogólne (według Internetu), a DSP służy głównie do matematycznego przetwarzania sygnałów zebranych z rzeczywistego świata. Ale DSP wciąż jest „procesorem”, a uC zawiera „procesor”. Czy mogę po prostu umieścić DSP z pęczkiem lub urządzeniami peryferyjnymi (powiedzmy, że ADC i DAC, ponieważ są one zwykle używane z nim) i nazwać ten mikser uC? czy jest to SoC (ponieważ teraz miks nie ma ogólnego zastosowania i dlatego nie możemy go nazwać uC, ale nadal jest SoC)
himura
źródło
To naprawdę nie ma znaczenia, jak to nazwiesz, „róża o jakimkolwiek innym imieniu pachniałaby tak słodko!” SoC to termin sprzedaży: „inni ludzie sprzedają ci części, ale my sprzedajemy ci cały system”. uC ogólnie przypomina pamięć uP + i często ADC. DSP jest zoptymalizowany pod kątem, czy można w to uwierzyć, DSP i niezmiennie ma multiplikator sprzętowy, ale często w dzisiejszych czasach pamięć programu, a czasem ADC / DAC, prawie SoC. Ale w dużej mierze większość z nich można opisać jako inne. Nie przejmuj się, na pewno nie uderzaj ludzi.
Neil_UK
2
Wiem, że powszechnie rozumiane jest używanie u i nie ma prawdziwego problemu z używaniem go, ale jeśli kiedykolwiek chcesz utworzyć µ, naciśnij AltGr + Mlub ⌘ + Mpowinieneś załatwić sprawę .
Magic Smoke
1
„mikro” to bagaż historyczny; Kontroler „mikro” pochodzi od komputera „mikro”, który odróżnia się od „mini” komputerów, które były wielkości lodówki, oraz „” komputerów, które zajmowały całe pokoje.
user253751

Odpowiedzi:

11

uC = samodzielny układ przetwarzający: procesor, pamięć RAM, ROM, niektóre urządzenia peryferyjne.

DSP = układ procesora (może być oddzielnym procesorem, obecnie głównie uC) zoptymalizowanym do przetwarzania sygnału. Często ma szybki MAC (multiply-akumulate), nasycającą matematykę i wiele interfejsów pamięci. Aby uzyskać jak najwięcej z tego, często trzeba być głęboko świadomym jego szczególnych cech, takich jak dostęp do pamięci w tym samym czasie. (Dlatego często używany z precyzyjnie dostrojonymi bibliotekami montażowymi dostarczonymi przez producenta). Często nie jest przeznaczony do użycia z dużymi pamięciami (16-bitowa szyna adresowa często wystarcza).

SOC = układ procesora (głównie procesor, być może z pamięcią RAM do buforowania), który zawiera urządzenia peryferyjne, które wcześniej znajdowały się poza głównym układem procesora. Z definicji jest to ruchomy cel: funkcje dzisiejszych wyspecjalizowanych SOC można znaleźć w jutrzejszych układach głównego nurtu. Obecne SOC są głównie przeznaczone do uruchamiania systemu operacyjnego na poziomie Linux i zawierają większość rzeczy, które byłyby potrzebne w takim systemie, z wyjątkiem pamięci RAM i ROM (chociaż niektóre ROM są często dołączane, często do odczytu zewnętrznego FLASH).

Przykłady urządzeń peryferyjnych, które są powszechne w dzisiejszych SOC (ale trafiają do UC!): Porty Ethernet, sieć przełączająca Ethernet, USB włącznie. host i OTG, silniki graficzne, dekodowanie MPEG, silnik kryptograficzny, interfejsy RAM i FLASH.

Arduino to produkt na poziomie płyty, więc z definicji nie jest to uC, DSP ani SOC, chociaż może go zawierać. Podstawowy Uno zawiera UC.

UC nie jest SOC (chociaż mogą występować przypadki linii granicznej): uC jest samodzielny i (na obecnym poziomie technologii) nie jest przeznaczony do uruchamiania systemów operacyjnych na poziomie Linux. SOC nie jest samodzielny (wymaga pamięci RAM i ROM).

Granice nie są w 100% ograniczone i z czasem się zmieniają. Interfejsy De CPU i pamięci większości obecnych procesorów z łatwością przewyższają wczoraj DSP, nawet na ich terenie. Ale dzisiejsze procesory DSP są szybsze i / lub tańsze lub mniej energochłonne niż procesory o bardziej ogólnym przeznaczeniu podczas przetwarzania sygnału. Jest to wyścig między producentami, aby stworzyć najbardziej atrakcyjny układ wykorzystujący najnowszą technologię i popyt. W tej chwili doprowadziło to do powyższych 3 słabych punktów (plus mikroprocesorów ogólnego zastosowania), ale z czasem ulegnie to zmianie (procesory DSP są mniej popularne niż 10 lat temu, IMO, ponieważ przepustowość poziomu audio można teraz łatwo osiągnąć dzięki procesor ogólnego zastosowania).

Szczególnym rodzajem chipów, który staje się coraz bardziej powszechny, jest uC (lub SOC) z pewnym interfejsem bezprzewodowym. Sprawdź ESP8266 i ESP32 dla przykładów WiFi oraz RN2483 dla LoraWan.

Wouter van Ooijen
źródło
2

UC i DSP mają dość prostą definicję.

UC to rdzeń przetwarzający, który ma wewnętrznie zintegrowaną pamięć (ulotną i nieulotną). W porównaniu do mikroprocesora, który na ogół będzie miał trochę pamięci ulotnej, ale nie będzie nieulotny.

DSP to strzelanie poza uC. DSP generalnie mają naprawdę dobre możliwości próbkowania analogowego niż typowy uC. DSP mają również lepsze możliwości matematyczne niż uC i są wyposażone w wiele bibliotek, takich jak FFT lub autokorelacja, aby wykorzystać te możliwości matematyczne.

SoC jest bardziej terminem marketingowym. SoC jest terminem, którego próbują użyć, gdy uC ma wystarczającą funkcjonalność, aby stworzyć rozwiązanie z jednym lub prawie jednym chipem. Termin SoC zwykle występuje, gdy uC ma zintegrowane przetwarzanie grafiki i sterowniki graficzne na pokładzie. Pomyśl o układach ARM w telefonach komórkowych. Zawierają grafikę.

vini_i
źródło
Czy mówisz, że DSP zawiera również na przykład ADC?
himura,
@himura uC ma ADC, ale DSP mają naprawdę dobre ADC. Na przykład Arduino jest w stanie osiągnąć częstotliwość próbkowania do około 10 kHz przy 10 bitach. DsPIC33, który jest DSP, może próbkować z częstotliwością próbkowania 1,1 MHz przy 10 bitach. To o dwa rzędy wielkości szybciej.
vini_i
Myślałem, że DSP to tylko jednostka przetwarzająca bez żadnych możliwości ADC. Ale teraz wydaje się bardziej kompletnym systemem. Dzięki
himura,
1
Myślę, że ta odpowiedź jest zła. Istnieje wiele układów DSP, które nie mają konwerterów. Główną różnicą między procesorem DSP a procesorem ogólnego przeznaczenia jest architektura pamięci. DSP mają wiele pamięci, do których można uzyskać dostęp równolegle. Zobacz en.wikipedia.org/wiki/Harvard_architecture
Hilmar
@Hilmar, czy możesz podać referencje DSP bez konwerterów? Podoba mi się ten punkt
himura,
0

To, co nazywamy SOC, ma na ogół znacznie mocniejszy rdzeń procesora niż uC. Zazwyczaj można tam znaleźć rdzeń ARM. Prawie wszystkie produkowane obecnie „duże” procesory ARM, takie jak seria Cortex A, są tak naprawdę SOC. Aby uruchomić duży system operacyjny, taki jak Linux, potrzebujesz dużo pamięci RAM, więc SOC mają zewnętrzny kontroler pamięci RAM obsługujący nowoczesne układy SDRAM. Niewielka ilość wbudowanej statycznej pamięci RAM używana tylko w fazie rozruchu do uruchamiania modułu ładującego i inicjowania urządzeń peryferyjnych oraz kontrolera SDRAM.

Komputery stacjonarne zazwyczaj są kompletnymi kompleksowymi rozwiązaniami z wbudowaną statyczną pamięcią RAM (niewielka ilość). Mała pamięć RAM i brak MMU uniemożliwiają używanie na nich dużych systemów operacyjnych. Obecnie większość komputerów PC ma rdzeń 8- lub 32-bitowy. 16-bitowe układy scalone używane tylko w starszych aplikacjach. Era 32-bitowego uSc rozpoczęła się od rdzeni serii ARM M. Rdzenie te zostały zaprojektowane specjalnie dla układów scalonych i mają bardzo niewiele wspólnego z dużymi ARM z wyjątkiem zestawu instrukcji (ARM M używa instrukcji THUMB, podzestawu zestawu instrukcji ARM).

Termin DSP dotyczy architektury rdzenia. DSP mają więcej niż jedną ALU i mają tak zwane zestawy instrukcji VLIW (bardzo długie słowo instrukcji). Instrukcja VLIW składa się z szeregu podinstrukcji (około 4) skierowanych do różnych podsystemów CPU. Na przykład taka długa instrukcja może zawierać instrukcję wstępnego pobierania danych z pamięci, instrukcję mnożenia do specjalistycznego ALU multiplikatora oraz instrukcję arytmetyczną do ALU ogólnego przeznaczenia.

Możesz używać DSP jako ogólnego przeznaczenia uC, ale głównym celem jest cyfrowe przetwarzanie danych (nie tylko sygnały, ale także wideo). Filtry cyfrowe, algorytmy kompresji / dekompresji mediów korzystają z architektury równoległej DSP.

Współczesne rdzenie procesorów mają zazwyczaj sortowane „rozszerzenia DSP” w postaci instrukcji wektorowych (tę samą operację arytmetyczną można wykonać na kilku, około 8 operantach). To coś innego niż instrukcje VLIW DSP.

e_asphyx
źródło
„Prawie wszystkie produkowane dziś procesory ARM to tak naprawdę SOC” naprawdę? czy bierzesz pod uwagę układy Cortex-M0, takie jak SOC LPC810?
Wouter van Ooijen
Wspominałem o serii Cortex M osobno, mówiąc o komputerach stacjonarnych. Cortex M to oczywiście uCs.
e_asphyx